Product SiteDocumentation Site

8.8. Den Boot-Loader konfigurieren

Er funktioniert wahrscheinlich schon, aber trotzdem ist es immer empfehlenswert zu wissen, wie der Boot-Loader konfiguriert und installiert wird für den Fall, dass er aus dem Master Boot Record verschwindet. Dies kann nach der Installierung eines anderen Betriebssystems, wie zum Beispiel Windows, passieren. Die folgenden Informationen können auch dabei helfen, die Konfiguration des Boot-Loaders, falls nötig, zu verändern.

8.8.1. Die Festplatten kennzeichnen

Die Konfiguration des Boot-Loaders muss die verschiedenen Festplatten und ihre Partitionen kennzeichnen. Linux verwendet hierzu ein besondere im Verzeichnis /dev/ gespeichertes "Block"-Gerätedatei. Früher war /dev/hda die Masterplatte am ersten IDE-Controller und /dev/hdb ihr erster Slave, während /dev/hdc und /dev/hdd die Master- und Slaveplatten am zweiten IDE-Controller waren und so weiter für die übrigen. /dev/sda entsprach dem ersten SCSI-Laufwerk, /dev/sdb dem zweiten und so weiter. Seit Squeeze wurde dieses Namensschema im Kernel vereinheitlicht und alle Fetsplatten (IDE/PATA, SATA, SCSI, USB, IEEE 1394) werden seitdem als /dev/sd* dargestellt.
Jede Partition wird durch ihre Nummer auf der Platte, auf der sie liegt, dargestellt: so ist zum Beispiel /dev/sda1 die erste Partition auf der ersten Platte, und /dev/sdb3 ist die dritte Partition auf der zweiten Platte.
Die PC-Architektur (oder „i386“) ist auf vier „primäre“ Partitionen je Platte begrenzt. Um über diese Begrenzung hinauszugehen, muss eine von ihnen als „erweiterte“ Partition erstellt werden, die dann weitere „sekundäre“ Partitionen enthalten kann. Diese sekundären Partitionen müssen von 5 aufwärts nummeriert werden. So könnte die erste sekundäre Partition /dev/sda5 sein, gefolgt von /dev/sda6 usw.
Es ist nicht immer leicht sich zu merken, welche Platte mit welchem SATA-Controller verbunden ist, oder welche in der SCSI-Kette an dritter Position steht, vor allem, da sich die Benennung von im laufenden Betrieb austauschbaren Festplatten (zu denen unter anderem die meisten SATA-Platten und externen Platten gehören) von einem Hochfahren zum nächsten ändern kann. Zum Glück erstellt udev zusätzlich zu /dev/sd* symbolische Verknüpfungen mit festen Namen, die man dann verwenden kann, wenn man eine Festplatte unmissverständlich kennzeichnen möchte. Diese symbolischen Verknüpfungen sind in der Datei /dev/disk/by-id gespeichert. Auf einem Rechner mit zwei physischen Platten könnte man zum Beispiel folgendes finden:
mirexpress:/dev/disk/by-id# ls -l
total 0
lrwxrwxrwx 1 root root  9 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part2 -> ../../sda2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697 -> ../../sdb
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part2 -> ../../sdb2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part2 -> ../../sda2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697 -> ../../sdb
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part2 -> ../../sdb2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0 -> ../../sdc
lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part2 -> ../../sdc2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 wwn-0x5000c50015c4842f -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 wwn-0x5000c50015c4842f-part1 -> ../../sda1
[...]
mirexpress:/dev/disk/by-id# 
Beachten Sie, dass einige Platten mehrmals aufgeführt sind (da sie gleichzeitig als ATA-Platten und SCSI-Platten auftreten), aber die relevante Information besteht in erster Linie in den Modell- und Seriennummern der Platten, aufgrund derer man die Peripheriedatei finden kann.
Die in den folgenden Abschnitten als Beispiele benutzten Konfigurationsdateien basieren auf der gleichen Umgebung: eine einzelne SATA-Platte, auf der die erste Partition eine alte Windows-Installation, die zweite ein Debian GNU/Linux enthält.

8.8.2. LILO konfigurieren

LILO (LInux LOader) ist der älteste Boot-Loader - solide aber derb. Er schreibt die physische Adresse des zu ladenden Kernels in den MBR, weshalb im Anschluss an jede Aktualisierung von LILO (oder seiner Konfigurationsdatei) der Befehl lilo ausgeführt werden muss. Wenn man dies vergisst, ist das System nicht mehr in der Lage hochzufahren, falls der alte Kernel entfernt oder ersetzt worden ist, da sich der neue auf der Platte nicht an derselben Stelle befindet.
LILOs Konfigurationsdatei ist /etc/lilo.conf; eine einfache Datei für eine Standardkonfiguration ist in unten stehendem Beispiel wiedergegeben.

Beispiel 8.3. LILO-Konfigurationsdatei

# The disk on which LILO should be installed.
# By indicating the disk and not a partition.
# you order LILO to be installed on the MBR.
boot=/dev/sda
# the partition that contains Debian
root=/dev/sda2
# the item to be loaded by default
default=Linux

# the most recent kernel image
image=/vmlinuz
  label=Linux
  initrd=/initrd.img
  read-only

# Old kernel (if the newly installed kernel doesn't boot)
image=/vmlinuz.old
  label=LinuxOLD
  initrd=/initrd.img.old
  read-only
  optional

# only for Linux/Windows dual boot
other=/dev/sda1
  label=Windows

8.8.3. Konfigurierung von GRUB 2

GRUB (GRand Unified Bootloader) ist neueren Datums. Man muss ihn nicht nach jeder Kernelaktualisierung aufrufen; GRUB kann die Dateisysteme lesen und die Position des Kernels auf der Platte selbst finden. Um ihn in den MBR der ersten Platte zu installieren, geben Sie einfach grub-install /dev/sda ein.
Die Konfiguration von GRUB 2 ist in /boot/grub/grub.cfg gespeichert, aber diese Datei wird (in Debian) aus anderen erzeugt. Achten Sie daher darauf, sie nicht von Hand zu verändern, da derartige lokale Veränderungen bei der nächsten Ausführung von update-grub verloren gehen (was nach einer Aktualisierung verschiedener Pakete geschehen kann). Die häufigsten Veränderungen der Datei /boot/grub/grub.cfg (um zum Beispiel Befehlszeilen-Parameter zum Kernel hinzuzufügen oder die Anzeigedauer des Menüs zu ändern) werden durch die Variablen in der Datei /etc/default/grub vorgenommen. Um Einträge zum Menü hinzuzufügen, können Sie entweder eine Datei namens /boot/grub/custom.cfg erstellen oder die Datei /etc/grub.d/50_custom ändern. Für komplexere Konfigurationen können Sie andere Dateien im Verzeichnis /etc/grub.d ändern oder dort hinzufügen; diese Skripten sollten Konfigurationsausschnitte wiedergeben, möglicherweise unter Verwendung externer Programme. Die folgenden Skripten aktualisieren die Liste der zu ladenden Kernel: 10_linux berücksichtigt die installierten Linux-Kernel; 20_linux_xen beachtet virtuelle Systeme unter Xen, und 30_os-prober führt andere Betriebssysteme (Windows, Mac OSX, Hurd) auf.

8.8.4. Für Macintosh-Computer (PowerPC): Yaboot konfigurieren

Yaboot ist der von alten Macintosh-Rechnern mit PowerPC-Prozessoren verwendete Boot-Loader. Sie fahren nicht wie PCs hoch, sondern stützen sich auf eine “Bootstrap“-Partition, von der aus das BIOS (oder OpenFirmware) den Loader ausführt, und auf dem das Programm ybin yaboot und seine Konfigurationsdatei installiert. Man muss diesen Befehl nur ein weiteres Mal ausführen, wenn /etc/yaboot.conf verändert wurde (sie liegt in Kopie auf der Bootstrap-Partition, und yaboot kann die Position des Kernels auf den Platten finden).
Bevor ybin ausgeführt wird, muss man zunächst eine gültige Version der Datei /etc/yaboot.conf haben. Das Folgende ist ein Beispiel einer minimalen Konfiguration.

Beispiel 8.4. Konfigurationsdatei für Yaboot

# bootstrap partition
boot=/dev/sda2
# the disk
device=hd:
# the Linux partition
partition=3
root=/dev/sda3
# boot after 3 seconds of inactivity
# (timeout is in tenths of seconds)
timeout=30

install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot
enablecdboot

# last kernel installed
image=/vmlinux
        label=linux
        initrd=/initrd.img
        read-only

# old kernel
image=/vmlinux.old
        label=old
        initrd=/initrd.img.old
        read-only

# only for Linux/Mac OSX dual-boot
macosx=/dev/sda5

# bsd=/dev/sdaX and macos=/dev/sdaX
# are also possible