claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 01/2004   »   Ausgabe bestellen

Boot-Vorgang unter der Lupe

Hochfahren

von Andrea Müller


Sie rattern beim Systemstart über den Monitor, aber was bedeuten all die kryptischen Meldungen? Wir erklären, was beim Booten von Linux passiert.

Viel bekommt man nicht mit, wenn Linux hochfährt. Zu schnell huschen die Meldungen über den Bildschirm, SuSE verdeckt sie mit einem blauen Fortschrittsbalken, und auch wer sie mit [F2] einblendet, wird nicht unbedingt schlau draus: Grund genug, den Boot-Vorgang von Linux einmal in Zeitlupe zu verfolgen. Das ist nicht schwer: Linux zeichnet in Log-Dateien auf, was geschieht (siehe Tipp). Gesteuert wird der Vorgang von einem Stapel Textskripte, die Sie in jedem Editor anschauen können.

Allein auf weiter Flur

Nachdem der Boot-Manager Grub den Linux-Kernel geladen hat, geht es los: Die ersten fünf bis zehn Sekunden gehören allein dem Kernel. Er überprüft die Hardware und initialisiert die wichtigsten Treiber. Um zu sehen, welche Hardware der Kernel erkannt hat, geben Sie in einer KDE-Konsole dmesg | less ein. Dort blättern Sie mit [Bild auf] und [Bild ab] durch die Kernel-Meldungen. In den kryptischen Zeilen entdecken Sie oft Altbekanntes, wie etwa das Modell der eingebauten Festplatte oder den CPU-Typ. Ein Beispiel:

Detected 350.803 MHz processor.
CPU: Intel Pentium II (Deschutes) stepping 02
hda: WDC WD800JB-00CRA1, ATA DISK drive

Als CPU hat der Kernel korrekt einen Pentium II mit 350 MHz erkannt, und auch die Festplatte (hda) unseres Testrechners ist für Linux keine Unbekannte.

Im nächsten Schritt lädt der Kernel die initrd, die "initial ramdisk". Das ist eine Art temporäre Festplatte im Arbeitsspeicher mit Treibern und Programmen. Damit der Kernel unter SuSE Linux die mit im ReiserFS-Dateisystem formatierte Systempartition mounten kann, stecken beispielsweise in der initrd der ReiserFS-Treiber und das zum Laden nötige Programm insmod.

Die Mutter aller Prozesse: init

Jetzt kann's losgehen: Hardware gefunden, Systempartition gemountet -- Zeit fürs erste Programm. Der erste Prozess heißt /sbin/init. Wenn Sie den Befehl pstree in der Shell eingeben, sehen Sie, weshalb man init auch Mutterprozess nennt (Abbildung 1): Alle laufenden Anwendungen haben ihren Ursprung in diesem Programm.

Abb. 1: init ist der Elternprozess aller laufenden Programme.

Was init machen soll, erfährt es aus der Datei /etc/inittab. Als erstes ruft es ein Skript zur Systeminitialisierung auf, das einige grundlegende Aufgaben erledigt: /etc/rc.d/rc.sysinit unter Red Hat Linux und /etc/init.d/boot unter SuSE Linux. Das alles können Sie am Bildschirm mitverfolgen:

Setting clock (localtime) Mit Sep 17 19:39:30 CEST 2003: succeeded
Setting default font (latarcyrheb-sun16): succeeded
Setting hostname chariot.localdomain: succeeded
Activating swap partitions: succeeded

Jeder ausgeführte Befehl produziert eine Zeile auf dem Bildschirm. Das succeeded (Red Hat) oder done (SuSE) am Zeilenende meldet, dass die Aktion ohne Fehler abgelaufen ist. In unserem Beispiel wird zuerst die Uhrzeit aus dem BIOS des Rechners ausgelesen und als Systemzeit gesetzt. Danach lädt init die standardmäßig verwendete Schriftart für den Textmodus und setzt den Rechnernamen (chariot.localdomain). Schließlich wird noch die Swap-Partition aktiviert, damit Sie nicht in Bedrängnis kommen, wenn Ihr Arbeitsspeicher knapp wird. Eventuell begegnet Ihnen auch einmal die Meldung:

Checking filesystem ...

gefolgt von einem Fortschrittsbalken. Das ist kein Grund zur Besorgnis: Ab und zu überprüft Linux mit dem Programm fsck die Dateisysteme auf Fehler. Das findet entweder nach einer festgelegten Zeitspanne oder nach einer bestimmten Anzahl von Neustarts statt.

Dienstbare Geister

Wie es danach weitergeht, bestimmt wieder die inittab. Die Zahl in der mit id beginnenden Zeile in /etc/inittab definiert den Standard-Runlevel. So nennt man unter Linux die verschiedenen Betriebszustände des Systems. Tabelle 1 bietet eine Übersicht, wofür die einzelnen Runlevel stehen. Normalerweise landen Sie nach dem Start direkt auf der grafischen Oberfläche, d. h. in Runlevel 5.

Tabelle 1: Die Runlevel
RunlevelSystemstatus
0System wird angehalten (halt)
1Wartungsmodus (Single User), nur der Administrator kann arbeiten
2Mehrbenutzerbetrieb ohne Netzwerk
3Mehrbenutzerbetrieb mit Netzwerk
4unbenutzt
5Mehrbenutzerbetrieb mit Netzwerk und grafischer Oberfläche
6Neustart (reboot)

Zu jedem Runlevel existiert ein Verzeichnis rcx.d. Das x ist eine Zahl von 0 bis 6, die für den Runlevel steht. Was beispielsweise beim Booten in Runlevel 5 mit grafischer Oberfläche geschieht, hängt von den Dateien im Verzeichnis rc5.d ab (siehe Abbildung 2).

Unter SuSE Linux werfen Sie mit

ls -l /etc/init.d/rc5.d

selbst einen Blick hinein, Red-Hat-Nutzer verwenden

ls -l /etc/rc5.d/

Abb. 2: Die Links (Verknüpfungen) in "rc5.d" sorgen für den automatischen Start der Systemdienste beim Hochfahren.

Diese Verzeichnisse sind vergleichbar mit dem Autostart-Ordner unter Windows. Hier liegen Links, d. h. Verknüpfungen, zu den Startskripten der Systemdienste.

Ein Dienst unterscheidet sich von normalen Programmen dadurch, dass er im Hintergrund läuft und darauf wartet, dass eine andere Anwendung ihn kontaktiert. Ein Beispiel dafür ist der Druckerdienst Cups. Haben Sie einen Drucker konfiguriert und geben in einer Anwendung wie Gimp den Befehl, eine Datei auszudrucken, leitet diese den Auftrag an Cups weiter. Er bringt dann die Grafik sicher zu Papier und kümmert sich bei mehreren Druckaufträgen darum, dass die Warteschlange in der richtigen Reihenfolge gedruckt wird.

Da der Aufruf eines Dienstes ganz schön kompliziert sein kann, bringen die Distributionen Start- oder besser Steuerungsskripte für jeden Dienst mit, die die Sache vereinfachen. Damit können Sie jeden Dienst auf die gleiche Weise starten, stoppen oder neu starten, ohne sich unzählige Spezialkommandos merken zu müssen (siehe Kasten "Systemdienste manuell starten").

Um einen Dienst automatisch beim Hochfahren (oder beim Wechsel in einen anderen Runlevel) zu starten oder zu stoppen, muss im passenden rc-Verzeichnis ein Link auf sein Startskript existieren, der mit S (für starten) oder K (für kill=töten), einer Zahl und dem Namen des Dienstes benannt ist. Anhand des S oder K weiß das Startskript, ob es den Dienst starten oder stoppen soll, die Zahlen sorgen dafür, dass alles in der richtigen Reihenfolge abläuft.

Beim Booten arbeitet Linux nun die Links in den rcx.d-Verzeichnissen ab. Auch hier erscheint für jede Aktion eine Bildschirmmeldung, zum Beispiel:

Starten von syslog     succeeded
Starting keytable      succeeded
Netzwerkparameter einstellen: succeeded
Loopback Interface hochfahren: succeeded
Interface eth0 hochfahren: succeeded
Starten von crond succeeded
Starting cupsd succeeded

syslogd ist der Protokolldienst, der alle wichtigen Systemmeldungen in die Datei /var/log/messages schreibt. keytable sorgt dafür, dass die deutsche Tastaturtabelle geladen wird und Sie das z und das y, die auf einer amerikanischen Tastatur vertauscht sind, an der richtigen Stelle finden. Die nächsten drei Einträge kümmern sich um das Netzwerk. Das so genannte Loopback Interface (127.0.0.1) ist immer vorhanden, auch wenn Sie gar keine Netzwerkkarte haben. Mit eth0 wird schließlich noch die Netzwerkkarte unseres Testrechners konfiguriert. Linux lädt den passenden Treiber und weist ihr eine IP-Adresse zu. Die nächste Boot-Meldung teilt mit, dass der cron-Dienst gestartet wurde, der immer wiederkehrende Aufgaben, wie das Aufräumen im temporären Verzeichnis oder das Komprimieren der Log-Dateien erledigt. Die letzte Zeile protokolliert den Start des Druckerdienstes cupsd.

Überblick mit dem Runlevel-Editor

Welche Aufgabe ein bestimmter Dienst erledigt, erfahren Sie im Runlevel-Editor und in Tabelle 2. Bei Red Hat Linux starten Sie ihn über Servereinstellungen / Dienste (Systemeinstellungen / Servereinstellungen / Dienste bei Red Hat 9.0) des K-Menüs, SuSE-Linux-Anwender sind in YaST bei System / Runlevel-Editor an der richtigen Stelle. Die angekreuzten Dienste starten bei jedem Boot-Vorgang. Markieren Sie einen Eintrag, blenden die Programme eine kurze (leider englische) Erklärung dieses Dienstes ein (Abbildung 3 und 4).

Abb. 3: Der Runlevel-Editor (hier Red Hat Linux) zeigt kurze Beschreibungen der Systemdienste an.

Abb. 4: Über den Runlevel-Editor (YaST) starten und stoppen Sie Systemdienste.

In den meisten Fällen sind die Voreinstellungen, welche Dienste laufen, vernünftig gewählt. Auch dass auf Ihrem System ein Mailserver läuft (postfix bei SuSE, sendmail bei Red Hat Linux) hat einen guten Grund: Oftmals schickt das System Mails an den Administrator, wenn etwas nicht richtig funktioniert. Gedanken um die Sicherheit müssen Sie sich nicht machen. Die Mailserver kümmern sich nur um den lokalen Postversand und sind vom Internet aus nicht erreichbar. Kein Fremder kann Ihren Mailserver nutzen, um über ihn unerwünschte Werbung für Haar- oder sonstige Wuchsmittel zu verschicken.

Läuft beim Systemstart etwas schief, erscheint statt succeeded oder done ein failed (gescheitert) hinter der Meldung. Oft ist die Ursache trivialer Natur: Erhält Ihre Netzwerkkarte beispielsweise eine IP-Adresse über DHCP und läuft der Rechner mit dem DHCP-Server oder der Hardware-Router nicht, während Sie den PC einschalten, kann Linux die Netzwerkkarte nicht initialisieren. Zur Fehlersuche oder um einen Dienst nachträglich zu starten, können Sie das zugehörige Skript von der Kommandozeile aus aufrufen (siehe Kasten "Systemdienste manuell starten").

Als letzten Schritt beim Booten startet Linux die grafische Anmeldemaske und übergibt Ihnen die Kontrolle über das System -- so lange, bis Sie als root in der Shell den Befehl shutdown -h now (sofort herunterfahren) oder reboot (neustart) eingeben oder sich über die grafische Oberfläche abmelden. Dann übernimmt wieder init das Kommando und sorgt dafür, dass alles sauber beendet wird. (eba)

Systemdienste manuell starten

Bei der Fehlersuche ist der nachträgliche Start eines Dienstes eine große Hilfe. Sie erhalten meistens eine ausführliche Fehlermeldung, mit der Sie sich an einen Support-Mitarbeiter oder eine Suchmaschine wenden können.

Zum nachträglichen Aufruf eines Startskripts loggen Sie sich im Terminal mit su und Ihrem root-Passwort als Administrator ein. Um nun beispielsweise das Netzwerk neu zu starten, geben Sie /etc/init.d/network restart ein. Der erste Teil des Befehls ruft das Skript network aus dem Verzeichnis /etc/init.d auf. Das restart ist die Aktion, die es ausführen soll. Jedes Skript kennt die Parameter start, stop und restart. Manche lassen sich auch mit einem angehängten status aufrufen. Damit beeinflussen Sie den Dienst nicht: Die Ausgabe informiert Sie nur, ob der Dienst gerade läuft oder nicht.

Tipp

Wollen Sie die Boot-Meldungen in Ruhe durchforsten, lesen Sie sie ganz bequem im Text-Editor oder der Dateivorschau im Konqueror. Unter Red Hat Linux landen alle Bildschirmmeldungen in der Datei /var/log/boot.log, in die Sie allerdings nur als Administrator hineinschauen dürfen. SuSE Linux speichert die Ausgaben -- leider in einer reichlich kryptischen Syntax -- in /var/log/boot.msg.

Tabelle 2: Dienste und Ihre Aufgaben
BeschreibungAutomatischer Start unter SuSE LinuxName unter SuSE LinuxAutomatischer Start unter Red Hat LinuxName unter Red Hat Linux
FirewallxSuSEFirewall2_init/SuSEFirewall_setup (1)/SuSEFirewall2_finalxiptables
Energieverwaltung für Rechner mit ACPI-Bios: Lädt Module zur Batteriekontrolle und kann auf Ereignisse reagieren, wie z.B. das Schließen des Deckels bei einem Notebook.x (2)acpid-/
Alsa-Soundsystem: Lädt das Soundkarten-Modul und stellt gespeicherte Einstellungen wieder her.xalsasound-/ (3)
Kümmert sich darum, das regelmäßige Aufgaben (cron-jobs) auch dann abgearbeitet werden, wenn der Computer zur festgelegten Zeit nicht läuft-/xanacron
Energieverwaltung für Rechner mit APM-BIOS-/x (2)apmd
Dienst, der zeitgesteuerte Aufgaben einmalig abarbeitetx (4)atdxatd
Automounter - automatisches Mounten von Dateisystemen-autofsxautofs
Dienst für zeitgesteuerte, in bestimmten Abständen (stündlich, täglich, wöchentlich, monatlich) wiederkehrende Aufgaben, z. B. das Komprimieren der Log-Dateienxcronxcrond
Druckerdienstxcupsxlpd (5)
Grafikausgabe für den Textmodusxfbset-/
Mausunterstützung für den Textmodus- (6)gpmxgpm
Automatisches Einbinden und Konfigurieren von Hotplug-Geräten, z. B. USB-Kameras oder Speichermodulexhotplug-/
Hardware-Erkennungxhwscanxkudzu
ISDN-Konfiguration, z. B. Laden der passenden Karten-Treiberx (2)isdnxisdn
Tastatur-Einstellungen, Laden des deutschen Tastaturlayoutsxkbdxkeytable
Netzwerk startenxnetworkxnetwork
NFS-Client zum Mounten von per NFS freigegebenen Verzeichnissen über das Netzwerk-nfsxnetfs (7)
NFS-Server, gibt Verzeichnisse für andere Rechner im Netzwerk frei-nfsserver-nfs
Nameserver-Cache für die Zwischenspeicherung von Host-Namen und DNS-Einträgenxnscd-nscd
PCMCIA-Karten konfigurieren- (2)/ (8)xpcmcia
Portmapper, notwendig für NFS (Network File System). Unter Red Hat benötigt fam den portmapperxportmapxportmap
Mailserverxpostfixxsendmail
Zufallszahlengeneratorxrandomxrandom
Zuordnung von Raw Devices (Roh-Geräten) zu blockorientierten Geräten, etwa Festplattenpartitionen. Einige Anwendungen, wie z. B. die Oracle-Datenbank benötigen Raw Devices.xrawxrawdevices
Dienst, der den Zugriff normaler Benutzer auf Kameras, Brenner usw. ermöglichtxresmgr-/
Stellt regelmäßig eine Verbindung zum Red Hat Network her und sucht dort nach verfügbaren Updates.-/xrhnsd
Der Authentifizierungsdienst für den lokalen Mailserver-saslauthd-saslauthd
Windows-Freigaben mounten-smbfs (9)xnetfs (7)
SuSE Meta PPP Dienst für die Internet-Einwahlxsmpppd-/
Grafikmodus auf Textkonsole 1 [Strg-Alt-F1]xsplash-/
SSH-Server, der ein Einloggen auf dem System über das Netzwerk erlaubtxsshdxsshd
Protokolldienst, schreibt in die Log-Dateien unterhalb von /var/logxsyslogxsyslog
Grafischer Anmeldemanagerxxdm- (10)/
Fontserver, ein Dienst, der die installierten Schriftarten verwaltet und sie grafischen Anwendungen zur Verfügung stellt-xfsxxfs
Ein oft als Internet-Super-Server bezeichneter Dienst, der andere Dienste, wie z. B. time, finger oder news bei einem Zugriff auf den entsprechenden Port startet.-xinetdx (11)xinetd
Dienst zur Zeitsynchronisierung über das Netzwerk-xntpd-ntpd
Dienst für die Benutzeranmeldung über NIS (Network Information System, auch als "gelbe Seiten" -- yellow pages bekannt). Die Anmeldeinformationen liegen nicht auf dem lokalen System, sondern auf einem zentralen NIS-Server.-ypbind-ypbind

(1) sobald Sie die Firewall mit YaST konfigurieren

(2) abhängig von der gefundenen Hardware

(3) Red Hat Linux verwendet das Alsa-Sound-System nicht, wenn ein Kernel-Modul die eingebaute Soundkarte unterstützt

(4) nur bei SuSE Linux 8.2

(5) ab Red Hat 9.0 ebenfalls cups

(6) bei SuSE Linux 9.0 per Default aktiviert

(7) bindet über NFS, Samba und Netware freigegebene Ordner ein

(8) SuSE installiert das Paket nur, wenn PCMCIA-Hardware gefunden wird

(9) nur bei SuSE Linux 9.0

(10) Red Hat Linux startet die grafische Anmeldemaske über die Datei /etc/inittab

(11) Startet den Datei-Überwachungsmonitor fam. Nautilus benötigt ihn, um Änderungen in Verzeichnissen sofort zu aktualisieren (gelöschte oder verschobene Dateien sofort ausblenden)

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2019 COMPUTEC MEDIA GmbH | Last modified: 2007-01-25 16:52

Nutzungsbasierte Onlinewerbung

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]