Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Einleitung
2 Die Installation
3 Erste Schritte
4 Linux als Workstation für Einsteiger
5 Der Kernel
6 Die Grundlagen aus Anwendersicht
7 Die Shell
8 Reguläre Ausdrücke
9 Konsolentools
10 Die Editoren
11 Shellskriptprogrammierung mit der bash
12 Die C-Shell
13 Benutzerverwaltung
14 Grundlegende Verwaltungsaufgaben
15 Netzwerkgrundlagen
16 Anwendersoftware für das Netzwerk
17 Netzwerkdienste
18 Mailserver unter Linux
19 LAMP
20 DNS-Server
21 Secure Shell
22 Die grafische Oberfläche
23 Window-Manager und Desktops
24 X11-Programme
25 Multimedia und Spiele
26 Prozesse und IPC
27 Bootstrap und Shutdown
28 Dateisysteme
29 Virtualisierung und Emulatoren
30 Softwareentwicklung
31 Crashkurs in C und Perl
32 Einführung in die Sicherheit
33 Netzwerksicherheit überwachen
A Lösungen zu den einzelnen Aufgaben
B Kommandoreferenz
C X11-InputDevices
D MBR
E Die Buch-DVDs
F Glossar
G Literatur
Stichwort

Download:
- ZIP, ca. 15,7 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Linux von Johannes Plötner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
geb., mit 2 DVDs
1302 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1704-0
Pfeil 6 Die Grundlagen aus Anwendersicht
  Pfeil 6.1 Die Unix-Philosophie
    Pfeil 6.1.1 Kleine, spezialisierte Programme
    Pfeil 6.1.2 Wenn du nichts zu sagen hast: Halt die Klappe
    Pfeil 6.1.3 Die Shell
    Pfeil 6.1.4 Die Administration
    Pfeil 6.1.5 Netzwerktransparenz
  Pfeil 6.2 Der erste Kontakt mit dem System
    Pfeil 6.2.1 Booten
    Pfeil 6.2.2 Das Login
    Pfeil 6.2.3 Das Arbeiten am System
    Pfeil 6.2.4 Das Herunterfahren
    Pfeil 6.2.5 Wie Laufwerke bezeichnet werden
  Pfeil 6.3 Bewegen in der Shell
    Pfeil 6.3.1 Der Prompt
    Pfeil 6.3.2 Absolute und relative Pfade
    Pfeil 6.3.3 pwd
    Pfeil 6.3.4 cd
  Pfeil 6.4 Arbeiten mit Dateien
    Pfeil 6.4.1 ls
    Pfeil 6.4.2 more und less
    Pfeil 6.4.3 Und Dateitypen?
  Pfeil 6.5 Der Systemstatus
    Pfeil 6.5.1 uname
    Pfeil 6.5.2 uptime
    Pfeil 6.5.3 date
  Pfeil 6.6 Hilfe
    Pfeil 6.6.1 Die Manpages
    Pfeil 6.6.2 GNU info
    Pfeil 6.6.3 Die Programmdokumentation
  Pfeil 6.7 Zusammenfassung
  Pfeil 6.8 Aufgaben


Galileo Computing - Zum Seitenanfang

6.2 Der erste Kontakt mit dem System  Zur nächsten ÜberschriftZur vorigen Überschrift

In diesem Abschnitt beschäftigen wir uns mit dem ersten Kontakt mit einem Linux-System. Der »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.


Galileo Computing - Zum Seitenanfang

6.2.1 Booten  Zur nächsten ÜberschriftZur vorigen Überschrift

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. Das ist zum Beispiel bei einer Festplatte immer der erste Sektor (= 512 Bytes) der Festplatte. Dieser Master Boot Record enthält dabei folgende Informationen:

  • Bootloader
    Der Bootloader besteht aus Code zum Laden eines Betriebssystems oder aus weiteren Bootloader-Codes. Damit von diesem 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 am Ende des Bootsektors bei Byte 446.

Bootfähige Medien erkennen

  • Magic Number
    Die fehlenden 2 Byte [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 55AAHex, so kann der Code am Anfang des MBR geladen werden. Ändert man diesen Wert, wird das Medium nicht als bootfähig erkannt.

Unter Linux können Sie sich den MBR mit folgenden Befehlen ansehen, wobei das Gerät /dev/sda [Entsprechend /dev/hda bei älteren Distributionen, die noch nicht die libata verwenden.] die erste Festplatte im System bezeichnet, [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:


# dd if=/dev/sda of=mbr.img count=1 bs=512
# od -x mbr.img

Listing 6.1  Extrahieren und Betrachten des MBR

Sehen wir uns den Bootvorgang weiter an: Hat man nun Linux auf seinem System installiert, so wird mit ziemlicher Sicherheit ein Bootloader wie GRUB geladen. In einem solchen Bootmanager 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 langsam initialisiert und mit init auch den ersten Prozess des Userlandes explizit startet. Dieser Prozess übernimmt dann 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.


Galileo Computing - Zum Seitenanfang

6.2.2 Das Login  Zur nächsten ÜberschriftZur vorigen Überschrift

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.

Netzwerk- transparenz

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.


Galileo Computing - Zum Seitenanfang

6.2.3 Das Arbeiten am System  Zur nächsten ÜberschriftZur vorigen Überschrift

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 innerhalb des /home-Verzeichnisses, wohingegen dieses Verzeichnis unter anderen Unix-Systemen zum Beispiel auch unterhalb des /usr-Verzeichnis liegen kann. Im Normalfall hat der Benutzer nur in seinem eigenen Verzeichnis das Recht, Dateien anzulegen, zu ändern und zu löschen. [Ja, von Spezialfällen wie dem Verzeichnis für temporäre Dateien /tmp einmal abgesehen.] Dafür besitzt er dann aber dort auch Narren- und Gestaltungsfreiheit. Wie er dort die Daten organisiert, steht jedem Benutzer absolut frei.

Dateien verstecken

Auch alle Programme können Dateien im jeweiligen Verzeichnis des Benutzers ablegen. Im Regelfall sind diese Dateien und Verzeichnisse jedoch »versteckt«, werden also bei einem normalen Betrachten des Verzeichnisses nicht angezeigt. Solche versteckten Dateien beginnen alle mit einem Punkt und können natürlich unter Angabe spezieller Optionen angezeigt werden. In diesem Sinne sind die Dateien 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 physikalischen 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 der Zugriff auf Systemressourcen 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. [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. [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 [Siehe auch das Kapitel 30, »Softwareentwicklung«.]
  • /usr/lib/
    Bibliotheken für Benutzerprogramme
  • /usr/local/
    Extra-Hierarchie für selbstkompilierte Software
  • /usr/sbin/
    nicht-essenzielle Systemprogramme
  • /usr/share/
    architekturunabhängige Daten [Diese Daten müssen wie alle Daten in /usr read-only, also statisch, sein.]
  • /usr/src/
    Verzeichnis für Sourcecode (optional)

Aus den Charakteristika dieser Daten ergibt sich die Möglichkeit, das Verzeichnis /usr auf eine eigene Partition zu legen, es read-only zu mounten [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.

  • /var
    Das /var-Verzeichnis besitzt ä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 [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 [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
    • 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 frei zu halten 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. Das Rechte-Flag wird dabei 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.
    • Auf Verzeichnissen besitzt dieses Flag eine etwas andere Semantik: Dort wird nämlich durch das x-Flag der Zugriff auf ein Verzeichnis gesteuert. Wem dieses Flag nicht gewährt wird, dem bleibt das Wechseln in den entsprechenden Ordner verwehrt.

Werden diese Rechte nun 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 jeweils 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 dann eventuell die Rechtemaske der Gruppe heranzuziehen. Ist auch das nicht der Fall, werden automatisch die Rechte für den Rest der Welt aktiv.

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 nur mit einem Bildschirm und nur einer Grafikkarte [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.


Galileo Computing - Zum Seitenanfang

6.2.4 Das Herunterfahren  Zur nächsten ÜberschriftZur vorigen Überschrift

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 dessen Stromquelle trennen. Damit man das System 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 werden.

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 (engl. halt) man das System an. 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.
    • Die Prozesse werden gesondert beendet, damit alle offenen Dateien noch geschlossen werden können. Würde man diese im Prozesskontrollblock vermerkten Daten ignorieren, würden eventuell bisher nur gepufferte Schreibzugriffe nicht ausgeführt und somit verloren gehen.
  • 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.

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 auch 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.


Galileo Computing - Zum Seitenanfang

6.2.5 Wie Laufwerke bezeichnet werden  topZur vorigen Überschrift

Abbildung Tux

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/hda als /dev/hda1 ansprechbar, die zweite Partition als /dev/hda2 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 Festplatte im Dateisystem eingehängt werden soll. Es kann allerdings sein, das einmal eine Festplatte umkonfiguriert wird und dadurch ihr Bezeichner verändert wird, was wiederum die Systemkonfiguration empfindlich treffen kann. Aus diesem Grund sind bereits 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 dabei eine eindeutige und zudem recht lange Hex-Zahl. Über das Programm blkid können Sie sich die UUIDs Ihrer Partitionen anzeigen lassen.

$ 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"

Listing 6.2  Das Programm blkid zeigt die UUIDs des Systems an.

Die erste Spalte enthält dabei die Partitionsbezeichnung. Darauf folgt die eigentliche UUID und zwei Dateisystemtyp-Angaben. Die Angabe TYPE steht dafür für den eigentlichen Dateisystemtyp (hier also »ext3«). Kann ein Dateisystem auch als ein anderes Dateisystem gemounted werden (das Dateisystem ext3 kann auch als ext2-Dateisystem eingehängt werden, ist also rückwärtskompatibel), so gibt SEC_TYPE (secondary filesystem type) dieses an.

Möchten Sie nur die UUID einer bestimmten Partition angezeigt bekommen, können Sie deren Dateinamen auch an blkid übergeben:

$ blkid /dev/sdb3
/dev/sdb3: UUID="018ad305-97b0-40a6-b8c0-54734cf6e6b3"
SEC_TYPE="ext2" TYPE="ext3"

Listing 6.3  Die UUID von /dev/sdb3 anzeigen

Die UUIDs sind als Links im Dateisystem präsent, können also auch durch das ls-Programm angezeigt werden.

$ 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

Listing 6.4  UUIDs mit ls anzeigen

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 28.

Abbildung Blowfish

Unter OpenBSD und unter NetBSD werden Serial ATA- und IDE-Laufwerke mit wdN, also wd0, wd1 und so fort bezeichnet. Beachten Sie hier, dass die erste Nummer 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, und nicht deren Partition. Details zu beiden Treibern erhalten Sie unter beiden Derivaten in den Manpages sd und wd.

Abbildung Teufelchen

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 Begriff 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.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  Zum Katalog
Zum Katalog: Linux, Ausgabe 2011






Linux, Ausgabe 2011
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Linux-Server






 Linux-Server


Zum Katalog: Linux Hochverfügbarkeit






 Linux Hoch-
 verfügbarkeit


Zum Katalog: LPIC-1






 LPIC-1


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: openSUSE 11.2






 openSUSE 11.2


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2011
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de