linux:bootmanager-und-bootprozess

Bootmanager und Bootprozess

Was passiert eigentlich beim Start von Linux? Und was sind Bootmanager? Darum soll er hier gehen. Siehe auch: Bootmanager absichern.

Wenn man den Grub-Bootmanager verwendet, kann man diese auch im Bootmenu eingeben:

  1. beim Start ESC drücken
  2. gewünschten Eintrag (beginnend mit „Kernel“) mit den Pfeiltasten auswählen
  3. „e“ und „Enter“ drücken und den Eintrag entsprechend abändern
  4. anschließend „Enter“ und „b“ um diesen Eintrag zu starten

Gültige Optionen findet man in den Quellen der Kernel unter Documentation/kernel-parameters.txt (z. B. VESA only: xforcevesa; Failsafe-boot: acpi=off noapic nolapic edd=on nodmraid nomodeset).

Permanente Änderungen sollten dann in der Konfigurationsdatei dauerhaft abgelegt werden.

Die „initrd“ ist eine Art Dateisystem das Treiber und Einstellungen für den Start enthält. Tatsächlich ist es ein cpio-Archiv das mit gzip gepackt wurde.

Eine manuelle Bearbeitung würde in etwa so aussehen:

cat initrd.gz | gzip -d | cpio -i
rm initrd.gz
# make changes
find | cpio -H newc -o | gzip > ../initrd-neu

Der Bootvorgang läuft in der folgenden Reihenfolge ab:

  1. Der Bootmanager (heute meist Grub) lädt und startet den Kernel.
  2. Der Kernel startet das Programm /sbin/init
  3. init wertet die Dabei /etc/inittab aus
  4. init führt ein Script zur Systeminitialisierung aus (Debian,Ubuntu: /etc/init.d/rcS ; Fedora, Red Hat: /etc/rc.d/rc.sysinit ; (Open)Suse: /etc/init.d/boot)
  5. /etc/init.d/rc oder /etc/rc.d/rc wird ausgeführt, das sich um den Start der Skripte in Verzeichnis des jeweiligen Runlevels (z.B. bei Runlevel 2 in /etc/rc2.d) kümmert. Diese wert von der kleinsten zur höchsten Nummer ausgeführt.

:!: Ubuntu benutzt ab Version 6.10 statt init die Alternative upstart, daher ist auch /etc/inittab nicht vorhanden.

Man braucht die Bootmanager um verschiedene Kernel oder andere Betriebssystem zu booten, diese kann man beim Start des Rechners auswählen.

Die Bootmanager installieren sich meist in den MBR (Master Boot Record) der Festplatte bzw. in den Bootsektor z.B. einer Diskette.

:!: Windows überschreibt beim Installieren generell erstmal den MBR, deshalb sollte man bei einer Neuinstallation (wenn andere Betriebssysteme parallel durch einen anderen Bootmanager wie Grub gestartet werden) vorher den MBR sichern: unter Linux mit

dd if=/dev/hda of=/tmp/mbr.save bs=512 count=1

Quelle: Ubuntuusers-Wiki.

Für Startskripte beim Bootvorgang siehe Runlevels.

Siehe eigene Seite zu Grub.

Ein alter, mittlerweise kaum noch verwendeter, Bootmanager. Lilo ist nämlich nicht in der Lage aus einem Dateisystem zu lesen, stattdesen wird eine Liste von Datenblöcken gespeichert, die alle relevanten Dateien (Kernel, initrd) enthalten. Daher muss bei jedem Kernelupdate (oder bei Veränderungen an initrd-Dateien) lilo neu in den Bootsektor installiert werden, sonst started das System nicht mehr. In der Konfigurationsdatei /etc/lilo.conf steht das Installationsziel. Deinstallieren kann sich lilo anhand der gespeicherten Sicherheitskopie /boot/boot.0300 und dem Befehl lilo -u.

Unter Debian kann das Script liloconfig zur Konfiguration benutzt werden.

ISOLINUX ist ein Bootmanager der hauptsächlich für das booten von Wechselmedien (CDs) benutzt wird.

Mit dem Plop Boot Manager kann man alten Rechnern (durch eine boot-CD) beibringen von einem USB-Datenträger zu starten:

Unter Windows:

plpcfgbt stm=hidden cnt=on cntval=1 dbt=usb plpbt.bin
create-iso.bat  

FIXME