Eine kleine Einführung in Linux

Das Betriebssystem Linux ist das empfohlene Betriebssystem dieser Vorlesung, weil es einerseits kostenlos verfügbar (siehe Unterpunkt "Installation von Linux") ist und zahlreiche kostenlose Programme für praktisch jede wissenschaftliche (und nicht-wissenschaftliche) Anwendung existieren (z.B. Office, Editoren, Compiler, Plotprogramme, ...). Linux ist an mathematischen und physikalischen Fachbereichen von Universitäten weit verbreitet und wird an vielen Großrechnern, Computerclustern und Supercomputern im Bereich der Forschung eingesetzt. Ich empfehle allen Studierenden dieser Vorlesung, sich zumindest als Zweitsystem Linux zu installieren und die Programmierung auf einem Linux System auszuführen. Falls man sich dennoch gegen eine Installation entscheidet, so kann man die C++ und Python Programme des Kurses auch auf einem anderen Betriebssystem, z.B. Windows oder macOS bearbeiten, kompilieren und ausführen. Eine weitere Möglichkeit, das Linux Betriebssystem zu nutzen, ohne es zu installieren, besteht in einer Secure Shell Verbindung (SSH Verbindung mittels eines kryptografischen Netzwerkprotokolls), welches im Unterpunkt "Login auf die Rechner des Instituts für Theoretische Physik (ITP) der Goethe-Universität" beschrieben wird.

Linux ist ein freies, Unix-ähnliches Mehrbenutzer-Betriebssystem, welches auf dem Linux-Kernel basiert. Die historische Entwicklung des Betriebssystems begann im Jahre 1991, als Herr Linus Torvalds einen Terminal-Emulator entwickelte, welcher dann ab 1992 unter der freien Lizenz GPL verbreitet wurde. Linux, lässt sich als alleiniges Betriebssystem betreiben, aber kann auch innerhalb eines Multi-Boot-Systems einsetzt werden. Es existieren mehrere unterschiedliche moderne Linux-Distribution (z.B. OpenSUSE, Debian, MX Linux, Ubuntu oder Kubuntu), die den Nutzer mithilfe von grafischen Benutzeroberflächen durch die Installation leiten und eine Vielzahl von kostenlosen Programmen bereitstellen. Trotz des Sicherheitsvorsprungs gegenüber dem am weitesten verbreiteten Betriebssystem Windows wird Linux auf Desktoprechnern immer noch nur zögerlich eingesetzt. Dagegen konnte sich Linux auf dem Internet-Servermarkt relativ schnell etablieren und der Marktanteil in diesem Bereich stieg stetig. So wurden z.B. im Jahr 2017 mindestens 34 % aller Websites mittels eines Linux-Servers verfügbar gemacht (tatsächlicher Marktanteil wohl etwa 60 %).

Im Folgenden werden wir die unterschiedlichen Varianten einer Installation von Linux kurz erläutern. Danach beschreiben wir den SSH-Login auf die Rechner des ITP und stellen einige wichtige Linux-Shell-Befehle vor.

Installation von Linux

Man kann mittlerweile Linux relativ einfach auf seinem eigenen Computer installieren (siehe Übungsaufgabe 1.1). Man geht hierbei gewöhnlich in den folgenden Schritten vor:

    Bitte lesen Sie, bevor Sie die Installation von Linux auf Ihrem Rechner beginnen, auch noch weitere Internetquellen, die die Installation beschreiben (z.B. Link 1, Link 2, Link 3, Link 4 (für Windows 11)).
  1. Datensicherung
    Wenn sich auf dem Computer schon ein Betriebssystem (wie beispielsweise Windows, Mac OS X oder ein anderes Linux-System) oder wichtige Daten befinden, sollte vor einer Installation unbedingt eine System- bzw. eine Datensicherung erstellt werden. Wie bei jeder Veränderung am Computer kann immer auch etwas schiefgehen.
  2. Herunterladen der Installationsdateien (ISO-Image) einer Linux-Distribution aus dem Internet
    Zunächst müssen Sie sich für eine Linux-Distribution entscheiden und das ISO-Image dieser aus dem Internet herunterladen. Falls Sie hier keine Vorlieben haben, empfehle ich z.B. die Downloadseiten Ubuntu 20.04.4 LTS und Kubuntu 20.04.4 LTS, vielleicht auch MX Linux
  3. Bootfähigen USB-Stick erstellen
    Das heruntergeladene ISO-Image der Linux-Distribution muss nun auf einen bootfähigen USB-Stick übertragen werden (ein einfaches Kopieren auf den USB-Stick funktioniert leider nicht). Damit eine Linux Distribution von einem USB-Stick startet, muss zum einen der Computer von USB-Sticks booten können und zum anderen muss der USB-Stick bootbar sein. Letzteres erledigt z.B. der LinuxLive USB Creator (für Windows 11 bitte Rufus verwenden). Die Software überträgt das Image der Linux-Distribution so auf den USB-Stick, dass er bootfähig ist und der Computer das Linux-System startet, das sich so portable auch an anderen Computern nutzen lässt.
  4. Einstecken des USB-Sticks in den Laptop/Desktop und vom USB-Stick Booten
    Fahren Sie dann Ihren Computer herunter, stecken sie danach den USB-Stick in Ihren Laptop/Desktop und starten den Computer erneut. Zuvor müssen Sie unter Umständen noch im Setup Ihres Computers die Boot-Reihenfolge ändern, sodass Sie vom USB-Sticks booten können. Dann müssen Sie kurz nach dem Start ihres Computers eine Funktionstaste drückten, wonach der Computer eine Liste mit Laufwerken anzeigt, von denen das des USB-Sticks für den Bootvorgang auszuwählen ist. Welche Funktionstaste zu drücken ist, hängt vom Computerhersteller ob; oft ist es die F12- oder Esc-Taste.
  5. Die Linux-Installation startet
    Die grafischen Benutzeroberflächen der Linux-Distribution leitet Sie nun durch die Installation. Jetzt müssen Sie entscheiden, ob Sie ihre gesamte Festplatte für Linux nutzen möchten (in diesem Fall gehen alle Daten die sich auf Ihrem Laptop/Desktop befinden unwiderruflich verloren und werden gelöscht), oder ob Sie Linux neben Ihrem sonstigen Betriebssystem laufen lassen möchten. Falls Sie noch unsicher sind und das Risiko eines Verlustes ihrer Daten nicht in Kauf nehmen wollen, können Sie auch Linux erst einmal ausprobieren und den Linux Live USB Modus starten. In diesem Fall wird Ihr Computer nicht verändert und Linux befindet sich nur auf dem USB-Stick.

Falls Sie an einer Stelle während der Installation Probleme haben und z.B. nicht wissen, ob Sie die vorgeschlagenen Veränderung an Ihrem Computersystem durchführen wollen, dann brechen Sie lieber die Installation ab und fragen einen Ihrer Kommilitonen nach Rat. Sollten Sie beim Installieren oder bei der Nutzung auf Probleme stoß en, können Sie sich auch jederzeit an den Tutor Ihrer übungsgruppe wenden bzw. zu den wöchentlichen offenen Fragestunden kommen.

Login auf die Rechner des Instituts für Theoretische Physik (ITP) der Goethe-Universität

Auch wenn Sie den vorigen Unterpunkt noch nicht erledigt haben, bzw. Linux nicht auf Ihrem eigenen Rechner installieren möchten, können Sie dennoch dieses Teilkapitel durchgehen. Vorausgesetzt ist hierbei jedoch, dass Sie einen Login-Account für die Rechner des Instituts für Theoretische Physik (ITP) der Goethe-Universität haben. Die Login-Accounts werden in den ersten beiden Vorlesungen an die Studierenden verteilt. Bitte lesen Sie die Allgemeine Nutzungsordnung für die Informationsverarbeitungs- und Kommunikations-Infrastruktur der Johann Wolfgang Goethe-Universität, bevor Sie den Login-Account das erste Mal verwenden. Der einfachste Weg einen Login auf die Rechner des ITP aufzubauen ist eine SSH-Verbindung herzustellen. Secure Shell oder SSH bezeichnet ein kryptographisches Netzwerkprotokoll welches eine sichere, authentifizierte und verschlüsselte Verbindung zwischen zwei Rechnern über ein unsicheres Netzwerk aufbaut. Um eine solche Verbindung herzustellen, müssen Sie zunächst eine Shell (Terminal, Konsole) öffnen, die eine text- bzw. kommandobasierte Benutzung Ihres Computersystems ermöglicht. Ein solches Terminal kann man unter allen gängigen Betriebssystemen öffnen und die nachfolgenden Abbildungen zeigen eine solche Shell im Betriebssystem Linux (linke Abbildung) und Windows (rechte Abbildung).

Unter Linux findet man die Linux-Shell, indem man in der Programmsuche "Terminal" bzw. "Konsole" eingibt. Unter Windows findet man die Windows-Shell, indem man in der Programmsuche "cmd" bzw. "Eingabeaufforderung" eingibt und unter Mac klickt man im Dock auf das Symbol des Launchpad, gibt dann "Terminal" in das Suchfeld ein und klickt auf "Terminal"; bzw. man öffnet den Ordner "/Programme/Dienstprogramme" im Finder und doppelklickt auf "Terminal".

Die jeweiligen Terminals zeigen, wo man sich gerade in der Verzeichnisstruktur des Computers befindet und man kann mittels Linux- bzw. Windowsbefehlen navigieren. Die Verbindung zu den Rechnern des ITP baut man nun mit dem folgenden Befehl auf: ssh pp-ss22-...@itp.uni-frankfurt.de, wobei "pp-ss22-..." Ihr persönlicher Login-Account ist. Die unteren Abbildungen zeigen den Aufbau einer solchen SSH-Verbindung im Betriebssystem Linux (linke Abbildung) und Windows (rechte Abbildung), wobei hier der Login-Account "pp-ss22-01" verwendet wurde.

Nachdem man den Befehl in die Konsole eingegeben und auf "Return" gedrückt hat, muss man sein Passwort eintippen und wieder "Return" drücken. Hat das alles funktioniert, dann ist man mittels des Terminals auf den Rechnern des ITP und kann dort das Betriebssystem Linux ausprobieren. Durch die Bezeichnung pp-ss22-01@cheetah:~$ erkennt man, dass man als Benutzer pp-ss22-01 auf dem ITP-Rechner cheetah in seinem Heimverzeichnis :~$ ist. Die folgenden Punkte unterscheiden sich nicht mehr zwischen den Betriebssystemen und wir betrachten deshalb nur die Linux-Shell Variante weiter. In der rechten Abbildung der Windows-Shell loggen wir uns deshalb auch gleich wieder aus, indem wir den Linux-Befehl "exit" in die Konsole eingeben. Im Folgenden werden wir einige wichtige Linux Shell-Befehle vorstellen.

Linux Shell-Befehle

Wir wollen nun das Betriebssystem Linux besser kennenlernen und stellen deshalb einige wichtige Linux Shell-Befehle vor. Eine umfangreiche Befehlsübersicht finden Sie unter Linux-Shell-Befehle.

Als Erstes ist es dringend empfohlen, das Passwort des eigenen ITP-Accounts zu ändern. Dies wird mittels des Linux-Benutzerverwaltungsbefehls passwd gemacht (siehe linke Abbildung). Nachdem man zunächst das alte und danach zweimal das neue Passwort eingegeben hat, ist das Passwort unwiderruflich abgeändert. Man kann dies überprüfen, indem man sich gleich danach mit "exit" ausloggt und dann wieder eine neue SSH-Verbindung aufbaut.
Ein wichtiges Grundkommando ist der Linux-Befehl ls, der die im aktuellen Verzeichnis befindlichen Datei und Ordnerstruktur auflistet (siehe rechte obere Abbildung). Man kann den Befehl ls auch mit unterschiedlichen Optionen versehen, die, gefolgt von einem Leerzeichen und einem Minus spezifiziert werden können. So zeigt der Befehl ls -l z.B. eine ausführliche Auflistung des aktuellen Verzeichnisses an (Dateityp, Zugriffsrechte, Anzahl Hardlinks, Eigentümer, Gruppe, Dateigröß e, Zeitpunkt der letzten Veränderung) und der Befehl ls -a zeigt das aktuelle Verzeichnis vollständig an (auch versteckte Dateien, die mit "." beginnen). In der rechten oberen Abbildung ist der zusammengesetzte Befehl ls -la benutzt worden und diese Verzeichnisstruktur sollte auch unter Ihrem persöhnlichen Account erscheinen. Hat man ein Verzeichnis mit sehr vielen Dateien, dann ist die Verwendung von "Wildcards" ein wichtiges Hilfsmittel, um nur eine eingeschränkte Untermenge der Dateien aufzulisten. Es wird dabei nur ein Teil des Datei- oder Verzeichnisnamens eindeutig angegeben und den Rest durch "*" (bzw. bei nur einem fehlenden Zeichen durch "?") ersetzt. Möchte man z.B. nur alle PDF-Dateien (Dateien mit der Endung .pdf) auflisten lassen, so gibt man den Befehl ls *.pdf ein.
Mittels des Linux-Befehls man kann man sich die Benutzung eines Befehls und die verschiedenen Optionsmöglichkeiten auflisten lassen. Möchte man z.B. näheres zum Befehl "ls" erfahren, gibt man man ls in das Terminal ein. Es erscheint dann das folgende Bild im Terminal:

Man kann diese Beschreibung des Befehls "ls" wieder verlassen, indem man "q" im Terminal eingibt.

In Ihrem Heimverzeichnis befindet sich ein Ordner mit dem Namen "public_html". Um in diesen Ordner hineinzugehen, benutzt man den Befehl cd (siehe linke obere Abbildung). Mit ls -la kann man sich dann die befindlichen Datein und Ordnerstruktur in diesem Verzeichnis auflistet lassen. Möchte man wieder aus dem Verzeichnis heraus und in das übergeordnete Verzeichnis gelangen, schreibt man cd .. Um von irgendeinem anderen Verzeichnis in das eigene Heimverzeichnis zu wechseln, schreibt man cd ~. Möchte man ein neues Verzeichnis erstellen, benutzt man den Befehl mkdir (siehe rechte obere Abbildung). Wir wollen z.B. nun einen neuen Ordner erzeugen, in welchem Sie ihre Vorlesungsmaterialien speichern können. Mit dem Befehl mkdir VPROG erstellt man ein neues Verzeichnis mit dem Namen VPROG. Mit cd kann man dann in das neue Verzeichnis gehen und dann mit ls überprüfen, ob es wirklich noch leer ist. Ein Verzeichnis löschen, kann man mit dem Befehl rmdir. Möchte man z.B. das gerade erstellte neue Verzeichnis "VPROG" wieder löschen, schreibt man rmdir VPROG.

Weitere wichtige Befehle sind:
cp: Kopieren von Dateien oder Verzeichnissen. cp a.txt ./VPROG/ kopiert z.B. die Datei "a.txt" in das Verzeichnis "VPROG" (mehrere Dateien können mit cp -r kopiert werden).
mv: Verschieben von Dateien oder Verzeichnissen. mv a.txt ./VPROG/ verschiebt z.B. die Datei "a.txt" in das Verzeichnis "VPROG". Der Unterschied zum Befehl "cp" ist, dass die ursprüngliche Datei an ihrem Ort gelöscht wird.
rm: Löschen von Dateien oder Verzeichnissen. rm a.txt löscht z.B. die Datei "a.txt". Der Unterschied zum Befehl "cp" ist, dass die ursprüngliche Datei an ihrem Ort gelöscht wird. Die Datei landet hierbei nicht im "Papierkorb", sondern wird unwiderruflich gelöscht.
chmod: Zugriffsrechte von Dateien oder Verzeichnissen ändern. Wir hatten bei dem Listbefehl "ls -la" die Zugriffsrechte schon erwähnt, jedoch ihren Inhalt noch nicht besprochen. Jede Datei und jedes Verzeichnis verfügt über ihre eigenen Zugriffsrechte (erste 10 Zeichen beim "ls -la"-Befehl). Das erste Zeichen gibt an, ob es sich um eine reguläre Datei ("-"), ein Verzeichnis ("d") oder einen Link ("l") handelt. Die Zeichen 2 bis 4 spezifizieren die eigenen Zugriffsrechte (user) und es kann hierbei ein "r" für lesbar (read), ein "w" für überschreibbar (write) oder ein "x" für ausführbar (execute) stehen. Sind Zugriffsrechte nicht gesetzt, erscheint ein Minus "-". Die Zeichen 5 bis 7 spezifizieren in gleicher Weise die Zugriffsrechte der Mitglieder der eigenen Gruppe (group) und die Zeichen 8 bis 10 die Zugriffsrechte aller anderen Benutzer, die Zugang zum Dateisystem haben (others). Nehmen wir z.B. eine Datei, z.B. "a.txt", welche die folgenden Zugriffsrechte besitzt "-rw-rw-r--": Dies bedeutet, dass es sich um eine reguläre Datei handelt (erstes Minus), dass der eigene User sie lesen und überschreiben kann, sie jedoch nicht ausführen kann (es sich somit um kein ausführbares Programm handelt). Die gleichen Zugriffsrechte besitzen auch die Mitglieder der Gruppe, aber alle anderen Benutzer dürfen die Datei nur lesen. Mit dem Linux-Befehl chmod kann man nun diese Zugriffsrechte ändern. Möchte man z.B. die Datei "a.txt" auch für alle anderen Benutzer überschreibbar machen, schreibt man chmod o+w a.txt oder möchte man die Schreibrechte für Gruppenmitglieder nicht zulassen, gibt man chmod u-w a.txt ein.
ps: Zeigt die laufenden Prozesse an. ps -ux zeigt z.B. die Liste der laufenden Prozesse und viele Eigenschaften dieser an.
kill: Beendet laufende Prozesse. kill 3633 beendet z.B. den Prozess mit der Prozess-ID 3633 beenden (hilfreich z.B., wenn ein Programm "abstürzt" ist und das zugeordnete Fenster nicht mehr reagiert).

Eine detailliertere, umfangreiche Befehlsübersicht finden Sie z.B. unter Linux-Shell-Befehle.