6.2 Der erste Kontakt mit dem System
In diesem Abschnitt beschäftigen wir uns mit dem ersten Kontakt mit einem Linux-System. Dieser »erste Kontakt« kann natürlich nicht jeden Aspekt der Kontaktaufnahme mit dem System umfassend behandeln, daher werden wir später noch ausführlich auf einzelne Punkte eingehen. Der folgende kurze Einstieg schafft jedoch eine gute Basis für spätere Kapitel.
6.2.1 Booten
Beginnen wir mit dem Start des Systems. Egal, ob bei einer Installation auf Festplatte oder beim Laden einer Live-Distribution wie Knoppix – das Geschehen ist eigentlich immer gleich. Im BIOS wird festgelegt, auf welchen Medien in welcher Reihenfolge nach einem zu bootenden Betriebssystem gesucht werden soll. Dabei kann mittlerweile sogar von exotischen Geräten wie USB-Sticks gestartet werden, wobei die meisten Anwender doch lieber bei CD/DVD-Laufwerken und Festplatten bleiben.
Die ersten 512 Byte
Wird nun auf einem der im BIOS angegebenen Bootlaufwerke ein zu startendes Betriebssystem gefunden, wird dieses auch geladen. Auf allen bootfähigen Medien wird nämlich nach einem gültigen MBR (Master Boot Record) gesucht. Dies ist zum Beispiel bei einer Festplatte immer der erste Sektor (= 512 Bytes) der Festplatte. Er enthält dabei folgende Informationen:
- Bootloader
Der Bootloader besteht aus Code zum Laden eines Betriebssystems oder aus weiteren Bootloader-Codes. Damit von einem Medium gebootet werden kann, muss dieser Code gültig sein und ein Betriebssystem laden können. - Partitionstabelle
Die Partitionstabelle gibt an, welche Partitionen wo auf dem Medium vorhanden sind. Die Partitionstabelle besteht aus vier Einträgen zu je 16 Byte und ist damit insgesamt 64 Byte groß. Sie liegt relativ nah am Ende des Bootsektors bei Byte 446.
Bootfähige Medien erkennen
- Magic Number
Die fehlenden 2 Byte [Fn. Die Partitionstabelle beginnt bei Byte 446 und ist 64 Byte lang – das ergibt 510 von 512 im MBR zur Verfügung stehenden Bytes.] bis zum Ende des Sektors werden nun mit einem Wert gefällt, anhand dessen das BIOS entscheiden kann, ob es sich um ein bootbares Medium handelt oder nicht: Ist der Wert 0x55aa, so kann der Code am Anfang des MBR geladen werden. Ändert man diesen Wert, wird das Medium nicht als bootfähig erkannt.
[zB]Unter Linux können Sie sich den MBR mit folgenden Befehlen ansehen, wobei das Gerät /dev/sda [Fn. Entsprechend /dev/hda bei älteren Distributionen, die noch nicht die libata verwenden.] die erste Festplatte im System bezeichnet, [Fn. Die Gerätenamen sind einer der zahlreichen kleinen Unterschiede zwischen den einzelnen Unix-Derivaten wie Linux und BSD.] von dem in unserem Beispiel der MBR gezogen werden soll:
Listing 6.1 Extrahieren und Betrachten des MBR
# dd if=/dev/sda of=mbr.img count=1 bs=512
# od -x mbr.img
Sehen wir uns den Bootvorgang weiter an: Hat man Linux auf seinem System installiert, so wird mit ziemlicher Sicherheit ein Bootloader wie GRUB geladen. Mit diesem kann man zwischen allen auf diesem Medium installierten Betriebssystemen das zu startende auswählen.
Der erste Prozess: init
Als Nächstes wird der Kernel geladen, der das System schließlich allmählich initialisiert und mit init auch den ersten Prozess des Userlands explizit startet. Dieser Prozess übernimmt das eigentliche Starten des Systems, indem dafür vorgesehene Konfigurationsdateien ausgelesen und entsprechende Dienste im Hintergrund gestartet werden.
Dabei werden von init verschiedene Systemkonfigurationen, sogenannte Runlevel, unterschieden. Je nach Runlevel werden unterschiedliche Dienste gestartet. So gibt es zum Beispiel bei den meisten Systemen einen Runlevel mit grafischer Oberfläche und einen ohne. Auch gibt es bestimmte Runlevel zum Herunterfahren (Level 0) und Neustarten (Level 6) des Systems.
6.2.2 Login
Auch die Login-Dienste der Textoberfläche – realisiert durch das Programm (m)getty – werden von init gestartet. Je nach Runlevel kann aber auch ein grafischer Login-Dienst wie GDM oder KDM gestartet sein. In jedem Fall wird der Nutzer aufgefordert, sich mit einem Usernamen und einem Passwort einzuloggen, damit er am System arbeiten kann.
Netzwerktransparenz
Das Login ist dabei wieder ein typisches Beispiel für die Netzwerktransparenz: Normalerweise wird bei der Anmeldung eines Benutzers überprüft, ob sein Benutzername in der Datei /etc/passwd verzeichnet ist und mit seinem Passwort in der Datei /etc/shadow unter Linux beziehungsweise der Datei /etc/master.passwd unter BSD übereinstimmt. Setzt man im Netzwerk jedoch Dienste wie NIS/NIS+ oder LDAP ein, kann man ein Unix-System überreden, die Benutzerinformationen von einem solchen zentralen Server zu laden – der Anwender selbst merkt davon nichts. Verbindet man dieses Feature noch geschickt mit dem Einsatz von NFS, kann einem Anwender so auf jedem System der Firma die gleiche Arbeitsumgebung zur Verfügung gestellt werden.
6.2.3 Arbeiten am System
Das Home- Verzeichnis
Nach dem Einloggen kann man am System arbeiten. Je nach Aufgabenspektrum oder Präferenz kann dies in verschiedenen Umgebungen erfolgen. Auch die verwendeten Programme werden stark variieren. Eines ist jedoch für alle Benutzer gleich: Der Ort ihrer Arbeit und der Platz zum Speichern wichtiger Daten ist jeweils das Heimatverzeichnis (engl. home directory, im Deutschen oft auch Home-Ver- zeichnis genannt).
Unter Linux und BSD besitzt jeder Benutzer sein eigenes Verzeichnis in /home, wohingegen dieses Verzeichnis unter anderen Unix-Systemen zum Beispiel auch unterhalb von /usr liegen kann. Im Normalfall hat der Benutzer nur in seinem eigenen Verzeichnis das Recht, Dateien anzulegen, zu ändern und zu löschen. [Fn. Ja, von Spezialfällen wie dem Verzeichnis für temporäre Dateien /tmp einmal abgesehen.] Dafür besitzt er dort dann auch Narren- und Gestaltungsfreiheit. Wie er die Daten organisiert, steht jedem Benutzer absolut frei.
Dateien verstecken
Alle Programme können Dateien im jeweiligen Verzeichnis des Benutzers ablegen. Im Regelfall sind diese jedoch »versteckt«, werden also bei einem normalen Betrachten des Verzeichnisses nicht angezeigt. Die Namen versteckter Dateien beginnen alle mit einem Punkt; solche Dateien können natürlich unter Angabe spezieller Optionen dennoch angezeigt werden. In diesem Sinne sind sie also nicht versteckt, sondern werden im Normalfall schlicht ausgeblendet, um dem Benutzer einen besseren Überblick über die von ihm selbst angelegten und bearbeiteten Dateien zu geben.
Die Verzeichnisstruktur
Wie Sie bereits wissen, besitzt Linux ein virtuelles Dateisystem, das von physischen Speichermedien auf eine Verzeichnisstruktur abstrahiert. Doch auch diese Verzeichnisstruktur selbst ist interessant, da sich das zugrunde liegende Konzept von anderen nicht Unix-artigen Betriebssystemen unterscheidet.
Klassifikation
Im Folgenden wollen wir die wichtigsten Verzeichnisse und ihre Bedeutung kurz erläutern. Dazu müssen vorher noch einige Begriffe geklärt werden, mit denen die Daten später klassifiziert werden:
Dateien sind shareable, wenn sie auf einem Rechner im Netzwerk gespeichert sind und auch auf anderen Rechnern genutzt werden können. Ein gutes Beispiel dafür sind die Dateien in den Home-Verzeichnissen der User, wohingegen den Zugriff auf Systemressourcen auf dem lokalen Rechner kontrollierende Lockfiles eben nicht shareable – also unshareable – ist.
Wie man sieht, spielt die Netzwerktransparenz also auch beim Dateisystem eine Rolle. Doch auch die Frage, wann und wie Daten verändert werden, ist für das Dateisystemlayout wichtig:
Dateien sind statisch (engl. static), wenn sie nicht ohne die Intervention des Administrators geändert werden können. Im Gegensatz dazu stehen variable, also veränderbare Daten.
Typische Beispiele für statische, also im Normalfall nicht schreibbare Daten, sind Programm-Binaries, Dokumentationen oder Systembibliotheken. Veränderbare Dateien sind zum Beispiel Logfiles, temporäre Dateien oder Datenbanken. Doch beginnen wir mit den wichtigsten Verzeichnissen und ihrer Bedeutung:
- /bin
Dieses Verzeichnis beinhaltet essenzielle (Shell-)Programme. Diese sind statisch und durchaus shareable.
Der Kernel
- /boot
Das /boot-Verzeichnis beinhaltet alle wichtigen Dateien zum Hochfahren des Systems, wozu vor allem der Kernel gehört. Diese Dateien sind im Allgemeinen statisch und nicht shareable, da sie durch verschiedene Treiber und die Konfiguration sehr systemspezifisch sind. - /dev
In diesem Verzeichnis finden sich die Gerätedateien. Je nach Kernel-Version und eingesetzter Technik kann dieses Verzeichnis auch nur virtuell sein. [Fn. Zum Beispiel beim mittlerweile obsoleten devfs.] - /etc
Jegliche Konfigurationsdateien eines Systems sollten in dessen /etc-Verzeichnis abgelegt sein. Da sich eine Konfiguration selten selbst ändert, sind auch diese Daten statisch und aufgrund des personalisierenden Charakters einer Konfiguration eher als unshareable einzustufen. [Fn. Natürlich hindert Sie niemand daran, das /etc-Verzeichnis im Netzwerk freizugeben. Inwieweit das sinnvoll ist, ist allerdings eine andere Frage – und nur darauf bezieht sich die unshareable-Aussage.] - /home
Das Home-Verzeichnis eines Users unter /home/username haben wir Ihnen bereits vorgestellt. Hier werden die eingeloggten Benutzer in der Regel arbeiten. - /lib
In diesem Verzeichnis finden sich alle essenziellen Bibliotheken. In dem Verzeichnis /lib/modules/<kernelversion> finden sich somit auch die Module, die zur Laufzeit dynamisch in den Kernel geladen werden können. - /mnt
In /mnt sollten Wechseldatenträger wie CD-ROMs, DVDs oder USB-Sticks gemountet werden. Früher wurden dafür oft direkt Verzeichnisse unter / genutzt, was jedoch dem Konsens über die Verzeichnisstruktur widerspricht. - /opt
Damit Softwarepakete auch von Drittanbietern ins System integriert werden können, gibt es das /opt-Verzeichnis. Dort sollten entsprechend dem Firmen- oder Softwarenamen Unterverzeichnisse angelegt werden, in denen dann die jeweilige Software installiert werden kann. - /proc (nur Linux)
Im /proc-Verzeichnis findet sich ein gemountetes virtuelles Dateisystem, in dem sich Informationen über alle Prozesse und über das System abrufen lassen. Dieses Verzeichnis finden Sie allerdings nicht auf jedem System. - /root
Dies ist das Home-Verzeichnis von root. Da man als root nicht direkt am System arbeiten sollte, wird dieses Verzeichnis recht selten genutzt werden. - /sbin
In diesem Verzeichnis finden sich essenzielle System-Binaries. - /tmp
Dies ist das Verzeichnis für temporäre Daten. Im Regelfall werden während des Bootens alte, von der letzten Sitzung zurückgebliebene Dateien gelöscht. - /usr
Die /usr-Hierarchie ist die größte und wichtigste Ansammlung statischer, sharebarer Daten. Die wichtigsten Unterverzeichnisse finden Sie hier: - /usr/X11R6/
Verzeichnis für die grafische Oberfläche X11 - /usr/bin/
Benutzerprogramme (Binaries) - /usr/include/
Standardverzeichnis für Include-Dateien [Fn. Siehe auch das Kapitel 30, »Softwareentwicklung«.] - /usr/lib/
Bibliotheken für Benutzerprogramme - /usr/local/
Extra-Hierarchie für selbstkompilierte Software, in sich wieder genauso gegliedert wie /usr - /usr/sbin/
nicht-essenzielle Systemprogramme - /usr/share/
architekturunabhängige Daten [Fn. Diese Daten müssen wie alle Daten in /usr read-only, also statisch, sein.] - /usr/src/
Verzeichnis für Quellcode (optional) - /var
Das /var-Verzeichnis umfasst ähnlich wie /usr eine ganze Hierarchie von Unterverzeichnissen mit speziellen Aufgaben. Im Gegensatz zu diesem sind die Daten in /var jedoch variabel und im Allgemeinen nicht shareable. - /var/cache/
anwendungsspezifische Cache-Daten - /var/lib/
variable Statusinformationen - /var/local/
variable Daten für /usr/local - /var/lock/
Lockdateien [Fn. Diese Dateien stellen den exklusiven Zugriff auf bestimmte Ressourcen sicher: Ist eine bestimmte Datei vorhanden, so ist die zugehörige Ressource belegt. Erst nach dem Löschen der Datei kann wieder versucht werden, die Ressource anzufordern.] - /var/log/
Logdateien - /var/opt/
variable Daten für /opt - /var/run/
für laufende Prozesse relevante Daten [Fn. Soll zum Beispiel ein Programm wie ein bestimmter Serverdienst nur einmal gestartet werden können, kann in /var/run eine Datei mit der Prozess-ID abgelegt werden. Bei einem versuchten zweiten Start des Programms kann dieses anhand der Datei nun feststellen, dass es schon läuft, und daher den Start verweigern.] - /var/spool/
Spooling-Daten wie beispielsweise zu druckende Dateien oder noch nicht abgeholte Mails - /var/tmp/
temporäre Dateien, die nicht bei einem Reboot gelöscht werden sollten
Aus den Charakteristika dieser Daten ergibt sich die Möglichkeit, das Verzeichnis /usr auf eine eigene Partition zu legen, es read-only zu mounten [Fn. Beim Aktualisieren des Systems muss dann natürlich ein Remount mit möglichem Schreibzugriff erfolgen, da sonst zum Beispiel keine Binaries ersetzt werden können.] und es schließlich im Netzwerk freizugeben und auf anderen Systemen zu mounten.
Auch bei /var kann sich die Speicherung der Daten auf einer eigenen Partition oder Platte anbieten, um bei knapper werdendem Plattenplatz immer noch etwas Platz auf der Root-Partition freihalten und damit ein funktionierendes System gewährleisten zu können.
Mit Ausnahme des Home-Verzeichnisses wird man mit diesen Verzeichnissen in aller Regel jedoch nur als Administrator zu tun haben. Das liegt vor allem am Rechtesystem: Bis auf die temporären Verzeichnisse darf ein normaler Benutzer nur in sein Homeverzeichnis schreiben.
Das Rechtesystem
Diese Regelung ist sinnvoll, da so kein normaler Benutzer das System manipulieren oder umkonfigurieren kann. Wir wollen im Zusammenhang mit dem Rechtesystem als Erstes natürlich die Rechte etwas näher betrachten, die einem Benutzer gewährt oder nicht gewährt werden können:
- Write (w)
Das Schreibrecht: Hat ein Benutzer dieses Recht (man spricht auch von einem Rechte-Flag oder Rechte-Bit) auf eine Datei, so kann er sie zum Schreiben öffnen oder sie auch löschen. Diese Berechtigung wird sinnvollerweise fast nur für eigene Dateien im Heimatverzeichnis des Benutzers benötigt und ist daher auch nur dort gesetzt. Auf Verzeichnissen bewirkt dieses Recht, dass ein Benutzer dort Dateien anlegen und löschen kann. - Read (r)
Das Leserecht: Dieses Recht erlaubt es einem Benutzer, lesend auf entsprechende Dateien zuzugreifen. Die Benutzer haben dieses Recht für die meisten Systemdateien wie Programme oder Dokumentationen. Nur in Ausnahmefällen wie bei wichtigen Passwortdateien bekommen normale Benutzer dieses Recht nicht zugesprochen. - Execute (x)
Dateien mit diesem Rechte-Flag können ausgeführt werden. Entweder handelt es sich bei diesen Dateien um binäre Formate wie ELF oder um Skriptdateien bestimmter Sprachen wie Bash oder Perl. Bei letzteren muss jedoch in der ersten Zeile des Skripts der Interpreter genannt werden, mit dem die Datei ausgeführt werden kann. Dieses Rechte-Flag wird in erster Linie verwendet, um zwischen Programmen und Daten zu differenzieren, und seltener, um festzulegen, wer ein bestimmtes Programm ausführen darf und wer nicht.
Bei Verzeichnissen hat dieses Flag eine etwas andere Semantik: Dort wird nämlich durch das x-Flag der Zugriff auf ein Verzeichnis gesteuert. Wem dieses Recht nicht gewährt wird, dem bleibt das Wechseln in den entsprechenden Ordner verwehrt.
Werden Rechte auf Dateien beziehungsweise Verzeichnisse vergeben, so müssen sich von einer bestimmten Rechtemaske auf einer Datei die Berechtigungen für jeden möglichen Benutzer ableiten lassen. Jedem Benutzer ist im System daher eine Benutzer-ID (UID, User ID) und mindestens eine Gruppen-ID (GID, Group ID) zugeordnet. Eine Datei wird nun auch einem Benutzer – nämlich dem Eigentümer beziehungsweise dem Ersteller der Datei – sowie einer Gruppe zugeordnet.
Für den Rechtekontext bedeutet dies, dass man eine Rechtemaske setzen kann, die aus je einem Bit für Read, Write und Execute für den Eigentümer, die Gruppe und schließlich noch für den Rest der Welt besteht. Möchte ein Benutzer nun auf eine Datei zugreifen, so wird zuerst geprüft, ob er der Eigentümer dieser Datei ist. Ist dies der Fall, so wird die entsprechende Rechtemaske zur Prüfung der Gültigkeit des geforderten Zugriffs herangezogen. Ist der Benutzer nicht der Eigentümer, so wird geprüft, ob er in der Gruppe der Datei ist, um eventuell die Rechtemaske dieser Gruppe heranzuziehen. Ist auch dies nicht der Fall, werden automatisch die Rechte für den Rest der Welt gültig.
root
Der Superuser
Eine Ausnahme in diesem Rechtekontext bildet der Benutzer root (UID 0), der immer auf alle Dateien Zugriff hat. Er ist, vom Eigentümer einer Datei abgesehen, auch der Einzige, der die Rechte auf eine Datei ändern kann. Dieser Superuser ist in der Regel der Administrator des Systems und verfügt sozusagen über absolute Macht durch den unbeschränkten Zugriff auf alle Dateien. Und wie man spätestens seit Spider-Man weiß: Mit großer Macht kommt große Verantwortung.
Rechte und Hardware
Rechte werden nur auf Dateien oder Verzeichnisse vergeben. Da jedoch zum Beispiel Geräte und bestimmte Ressourcen als Dateien im System repräsentiert sind und Unix an sich generell sehr dateiorientiert ist, ergibt sich so wieder ein konsistentes Gesamtbild.
Auch sollte erwähnt werden, dass es problemlos möglich ist, mit mehreren Benutzern zur selben Zeit an einem System zu arbeiten. Natürlich ist ein PC in der Regel mit nur einem Bildschirm und nur einer Grafikkarte [Fn. Auch wenn man Linux durchaus so konfigurieren kann, dass zwei Grafikkarten und zwei Tastaturen für insgesamt zwei Benutzer zur Verfügung stehen.] ausgestattet, jedoch kann zum Beispiel über den SSH-Dienst das Remote-Arbeiten, also ausgehend von anderen Rechnern im Netzwerk, ermöglicht werden.
6.2.4 Herunterfahren
Ein weiterer wichtiger Schritt im ersten Kontakt mit dem System ist das Herunterfahren. Wie heutzutage bei fast allen komplexeren Systemen üblich, kann man ein System nicht einfach beliebig von seiner Stromquelle trennen. Damit man es in einem konsistenten Zustand halten kann, müssen alle Programme
- ihre temporären Daten speichern,
- alle verwendeten Ressourcen freigegeben und
- das Dateisystem in einem konsistenten Zustand hinterlassen.
Puffer und Caches leeren
Vor allem die Problematik des Dateisystems ist offensichtlich, wenn man sich an das letzte Kapitel und die Tatsache erinnert, dass viele Daten zwischengespeichert und gepuffert werden, um die Performance des Systems zu erhöhen. Werden diese gepufferten Daten nicht zurückgeschrieben oder wird die Festplatte vielleicht sogar inmitten eines Schreibvorgangs unterbrochen, tritt ein Datenverlust auf oder es kommt zu inkonsistenten (Meta-)Daten auf der Festplatte.
Ein System herunterfahren und solche Probleme vermeiden können Sie mit dem Befehl shutdown:
- shutdown -h now
Mit diesem Befehl hält man das System an (engl. halt). Dazu wird das System in den Runlevel 0 überführt, wobei alle gestarteten Dienste beendet werden. Schließlich werden alle verbleibenden Prozesse über ein SIGTERM aufgefordert, sich zu beenden, um sie dann nach kurzer Zeit mit einem SIGKILL auf die »harte Tour« durch den Kernel zu beenden. - shutdown -r now
Mit diesem Befehl wird das System neu gestartet (engl. reboot) und dazu in den Runlevel 6 überführt. Alle übrigen Aktionen, vom Herunterfahren der beim Systemstart von init aktivierten Dienste bis zum Senden der Signale an alle Prozesse, entsprechen dem Vorgehen beim Systemhalt.
Die Prozesse werden gesondert beendet, damit alle offenen Dateien noch geschlossen werden können. Ignorierte man diese im Prozesskontrollblock vermerkten Daten, würden eventuell bisher nur gepufferte Schreibzugriffe nicht ausgeführt und gingen somit verloren.
Natürlich muss man diese Befehle nicht auf der Shell eingeben, sondern kann auch von einer grafischen Oberfläche wie KDE aus ein System herunterfahren. Allerdings hat man auf der Shell die Möglichkeit, anstelle von now einen genauen Zeitpunkt anzugeben, zu dem das System heruntergefahren oder neu gestartet wird. Auch kann man hier eine Nachricht eingeben, die vor der shutdown-Aktion an alle eingeloggten Nutzer gesendet wird.
6.2.5 Wie Laufwerke bezeichnet werden
Wenn Sie ein Windows-Anwender sind, dann kennen Sie Laufwerksbezeichnungen als Buchstaben (etwa C: oder D:). Unter Linux ist das Prinzip ähnlich, Laufwerke werden hier allerdings als Gerätedateien repräsentiert und heißen daher anders. Wie für Gerätedateien üblich, sind Dateien, die Laufwerksgeräte repräsentieren, im Verzeichnis /dev zu finden.
sdX
Laufwerke werden (im Falle von CD-, DVD-, ATA- und SCSI-Laufwerken) mit sdX bezeichnet, wobei anstelle des X ein Kleinbuchstabe eingesetzt wird. /dev/sda ist etwa eine typische Festplattenbezeichnung, genauso wie /dev/sdb. Es kann sich bei den jeweiligen Geräten aber auch um CD-Laufwerke und Ähnliches handeln.
hdX
Sollten Sie noch über IDE-Festplatten verfügen, so werden diese unter Linux mit /dev/hda, /dev/hdb usw. bezeichnet.
Partitionen
Auch einzelne Partitionen sind unter Linux als Dateien vorhanden. So ist die erste Partition der Festplatte /dev/sda als /dev/sda1 ansprechbar, die zweite Partition als /dev/sda2 und so fort.
UUIDs
Die genannten Bezeichner für Festplatten sind für die Systemkonfiguration von großer Bedeutung. Sie werden etwa verwendet, um anzugeben, wo eine Platte im Dateisystem eingehängt werden soll. Es kann allerdings sein, dass eine Festplatte umkonfiguriert und dadurch ihr Bezeichner verändert wird, was wiederum die Systemkonfiguration empfindlich treffen kann. Aus diesem Grund sind viele Distributionen dazu übergegangen, sogenannte UUIDs (Universally Unique Identifier) zu verwenden. Dabei handelt es sich um eindeutige Bezeichner für Laufwerke, die auch nach einer Umkonfiguration erhalten bleiben können. Sollten Sie also einmal eine Festplatte umstecken, so müssen Sie die Systemkonfiguration nicht ändern. Eine UUID ist eine eindeutige und zudem recht lange Hex-Zahl. Über das Programm blkid können Sie sich die UUIDs Ihrer Partitionen anzeigen lassen.
Listing 6.2 Das Programm blkid zeigt die UUIDs des Systems an.
$ blkid
/dev/sda1: UUID="7b898fa6-391e-4b81-888c-48ef10d7a95f"
SEC_TYPE="ext2" TYPE="ext3"
/dev/sdb1: UUID="7b76eae9-1d58-43b2-856e-f4c6b7a914f9"
SEC_TYPE="ext2" TYPE="ext3"
/dev/sdb2: UUID="c646f84c-2c4c-446b-ac09-9d398099867e"
TYPE="swap"
/dev/sdb3: UUID="018ad305-97b0-40a6-b8c0-54734cf6e6b3"
SEC_TYPE="ext2" TYPE="ext3"
Die erste Spalte enthält die Partitionsbezeichnung. Darauf folgt die eigentliche UUID und zwei Dateisystemtyp-Angaben. Die Angabe TYPE steht für den eigentlichen Dateisystemtyp (hier also »ext3«). Kann ein Dateisystem auch als ein anderes Dateisystem gemountet werden (das Dateisystem ext3 kann auch als ext2-Dateisystem eingehängt werden, ist also rückwärtskompatibel), so gibt SEC_TYPE (secondary filesystem type) diesen alternativen Typen an.
Möchten Sie nur die UUID einer bestimmten Partition angezeigt bekommen, können Sie deren Dateinamen auch an blkid übergeben:
Listing 6.3 Die UUID von /dev/sdb3 anzeigen
$ blkid /dev/sdb3
/dev/sdb3: UUID="018ad305-97b0-40a6-b8c0-54734cf6e6b3"
SEC_TYPE="ext2" TYPE="ext3"
Die UUIDs sind als Links im Dateisystem präsent, können also auch durch das ls-Programm angezeigt werden.
Listing 6.4 UUIDs mit ls anzeigen
$ ls -l /dev/disk/by-uuid
insgesamt 0
lrwxrwxrwx 1 root root 10 2010-09-12 10:12
018ad305-97b0-40a6-b8c0-54734cf6e6b3 -> ../../sdb3
lrwxrwxrwx 1 root root 10 2010-09-12 10:12
7b76eae9-1d58-43b2-856e-f4c6b7a914f9 -> ../../sdb1
lrwxrwxrwx 1 root root 10 2010-09-12 10:12
7b898fa6-391e-4b81-888c-48ef10d7a95f -> ../../sda1
lrwxrwxrwx 1 root root 10 2010-09-12 10:12
c646f84c-2c4c-446b-ac09-9d398099867e -> ../../sdb2
Laufwerke unter BSD
Unter BSD werden Laufwerke anders bezeichnet als unter Linux. Auch sind die Standarddateisysteme andere als unter Linux, doch dazu mehr in Kapitel .
Unter OpenBSD und NetBSD werden Serial-ATA- und IDE-Laufwerke mit wdN, also wd0, wd1 und so fort bezeichnet. Beachten Sie hier, dass die erste Stelle hier bei 0 beginnt, und nicht – wie bei Linux – bei a (also etwa sda). Dasselbe gilt für SCSI-Festplatten, deren Bezeichnung mit sd0 beginnt, gefolgt von sd1.
Partitionen tragen hingegen Zahlenbezeichner, womit sich Partitionsbezeichner wie wd0a oder wd0c ergeben. Auch hier ist zu beachten, dass die Ziffern bei Linux das Laufwerk an sich angeben, nicht die Partition. Details zu beiden Treibern erhalten Sie unter beiden Derivaten in den Manpages sd und wd.
Auch unter FreeBSD sind die Bezeichner für Laufwerke unterschiedlich. IDE-Festplatten werden mit adN, also ad0, ad1 (und so fort) bezeichnet. SCSI- und USB- Platten werden hingegen mit daN, IDE-CD/DVD-Laufwerke mit acdN und SCSI- CD/DVD-Laufwerke mit cdN bezeichnet. Für die alten (maximal vier) verschiedenen DOS-Partitionen verwendet FreeBSD den Ausdruck Slice, so bezeichnet ad0s1 etwa die erste Slice einer IDE-Festplatte und ad0s1a die erste Partition im ersten Slice der ersten IDE-Festplatte. da1s3a bezeichnet hingegen die erste Partition der dritten Slice der zweiten Platte.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.