Bootvorgang
Als Bootvorgang (auch: Booten, Bootprozess, Hochfahren, Rechnerstart, Starten; engl. to boot, to bootstrap) wird das Laden des Betriebssystems bezeichnet, wie es beispielsweise nach dem Einschalten eines Rechners erforderlich ist.
Linux
Der Bootvorgang eines Linux-Rechners läuft folgendermassen ab:
- Das BIOS
- weckt alle Hardwarekomponenten
- führt einige grundlegende Tests durch, in der Gesamtheit auch als Power on Self Test / POST bekannt.
- verschafft sich einen Überblick über die angeschlossene Hardware
- zeigt gemäss den BIOS-Einstellungen entweder ein Einschaltbild (etwa das Herstellerlogo) oder Textinformationen, die mit der Taste "Pause" angehalten werden können. Üblicherweise werden an dieser Stelle alle erkannten Laufwerke (Festplatten, DVD, USB) aufgelistet.
- sucht gemäss den BIOS-Einstellungen nach einem startfähigen Medium.
- lädt den Bootloader
- Der Bootloader startet den Linux-Kernel
- Der Linux-Kernel initialisiert die zu diesem Zeitpunkt wesentliche Hardware. Wesentlich für die Zeitspanne dieses Vorgangs sind die einkompilierten Gerätetreiber und Subsysteme.
- Der Linux-Kernel stösst den ersten Prozess im Userland namens "Init" an
- Der Init-Prozess startet über ein komplexes System von Skripten weitere Prozesse, um abhängig vom eingestellten Runlevel einen bestimmten Zustand herzustellen.
Durch bestimmte Parameter erfährt der Linux-Kernel, auf welcher Partition das Root-Dateisystem liegt und mit welcher grafischen Auflösung er booten soll. Ausserdem können Modulparameter angegeben werden - Informationen, die dem Linux-Kernel sagen, mit welchen Optionen er einen Gerätetreiber für bestimmte Hardware laden soll. Alle Startparameter, die der Linux-Kernel nicht kennt, ignoriert er und gibt sie an den ersten gestarteten Prozess (init) weiter. Ist der Parameter in den Startskripten des Systems definiert, reagiert "init" entsprechend darauf.
Fie meisten Linux-Distributionen verwenden für den Bootvorgang das SysV-Init-System. Zwar nutzen Ubuntu und Fedora inzwischen Upstart, nutzen es aber nicht nativ, um Prozesse zu parallelisieren. Init-NG und Apples Launchpad wären Alternativen. Wem das nicht reicht, nutzt einfach Suspend oder Hibernate.
Mit dmesg können die Bootmeldungen nachträglich angesehen werden, sobald das Betriebssystem erfolgreich gebootet wurde.
Bootchart klinkt sich als Init-Prozess ein und misst die Zeit jedes Prozesses.
FAQ
Bootvorgang beschleunigen
Einige Methoden zur Beschleunigung des Bootvorgangs wurden 2008 von Phil Endecott im Artikel "Booting Debian in 14 seconds" beschrieben:
- Diagnose des Ist-Zustands mit Hilfe von Bootchart und Bootgraph. Bei Endecott vergingen von GRUB bis zur Anzeige des XDM-Anmeldefensters 33 Sekunden.
- Erste einfache Massnahmen sind: Verringerung des GRUB-Timeouts auf ein Minimum, Entfernung ungenutzter Dienste, Booten mit höchster CPU-Frequenz (bei regelbaren Prozessoren)
- Kernel-Tuning: Endecott setzt einen Linux-Kernel ohne Initrd oder Initramfs sowie mit einkompilierten Gerätereibern ein, sodass das zeitaufwändige Laden von Kernelmodulen wegfällt.
- Auch das Coldplugging (das Erstellen der Gerätedateien durch Udev) frisst normalerweise Zeit. Endecott stellt ein Skript zur Verfügung, das die einmal von Udev erstellten Einträge im Verzeichnis "/dev" speichert und in Zukunft automatisch ohne Udev-Detektionsvorgang erzeugt.
- Zu den weiteren Verfahren gehört Disk-Readahead, was allerdings nur geringe Zeitersparnis bringt. Auch beim Stellen der Systemuhr mit hwclock (was Debian zweimal tut) lässt sich ein wenig Zeit gewinnen. X wird früher, die Netzwerkgeräte dagegen werden später gestartet, als Debian es in der Standardeinstellung tut.
- Endecotts gesamte Zeitersparnis betrug 19 Sekunden, womit sein Debian also in 14 Sekunden bootete.
SUSE Linux ab Diskette booten
# umount /dev/fd0 # dd if=/media/cdrom/boot/bootdsk1 of=/dev/fd0 # dd if=/media/cdrom/boot/bootdsk2 of=/dev/fd0 # dd if=/media/cdrom/boot/bootdsk3 of=/dev/fd0
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | Bootenwbm | Enzyklopädischer Artikel |