Handbuch:X86/Installation/Bootloader
Einen Bootloader auswählen
Nachdem der Linux Kernel konfiguriert ist, die System Tools installiert sind und die wichtigsten System Konfigurationsdateien angepasst sind, ist es nun an der Zeit, den letzten wichtigen Teil eines Linux-Systems zu installieren: den Bootloader.
Der Bootloader ist beim Booten dafür zuständig, den Linux Kernel zu starten. Ohne ihn würde das System nach dem Druck auf den Power-Knopf nicht wissen, wie es weiter vorgehen soll.
Wir zeigen für die x86 Architektur, wie man entweder GRUB oder LILO für BIOS basierte Systeme, oder GRUB oder efibootmgr für UEFI Systeme konfiguriert.
In diesem Abschnitt des Handbuchs wird unterschieden zwischen dem "Emerge" eines Bootloader-Pakets und dem "Installieren" des Bootloaders auf die System-Festplatte. Der Ausdruck "emerge" wird verwendet, wenn Portage aufgerufen wird, um eine Software auf dem System verfügbar zu machen. Der Ausdruck "installieren" wird verwendet, wenn der Bootloader Dateien in spezielle Bereiche der System-Festplatte kopiert oder dort Daten verändert, um den Bootloader so zu aktivieren, dass er beim nächsten Systemstart gestartet wird.
Standard: GRUB
Die Mehrzahl der Gentoo Linux Systeme verwendet heutzutage GRUB als Bootloader. GRUB (Paket sys-boot/grub) ist der direkte Nachfolger von GRUB Legacy. Ohne weitere Konfiguration unterstützt GRUB ältere BIOS ("pc") Systeme. Mit zusätzlicher Konfiguration unterstützt GRUB mehr als ein halbes Dutzend anderer Plattformen. Details finden Sie in dem Abschnitt Prerequisites section des GRUB Artikels im Gentoo Wiki.
Emerge
Wenn ein älteres BIOS System verwendet wird, das nur MBR Partitions-Tabellen unterstützt, sind keine Konfigurationsarbeiten erforderlich, um GRUB zu "emergen":
root #
emerge --ask --verbose sys-boot/grub
Für UEFI Systeme: die Ausführung des obigen Kommandos zeigt vor dem "emerge" die aktivierten GRUB_PLATFORMS Werte an. Wenn UEFI Systeme verwendet werden, müssen Anwender sicherstellen, dass GRUB_PLATFORMS="efi-64"
aktiviert ist (was standardmäßig der Fall sein sollte). Wenn es nicht der Fall ist, muss GRUB_PLATFORMS="efi-64"
zu der Datei /etc/portage/make.conf hinzugefügt werden, bevor das Emerge-Kommando für GRUB ausgeführt wird. Ansonsten wird GRUB EFI nicht unterstützen.
root #
echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
root #
emerge --ask sys-boot/grub
- Wenn GRUB installiert wurde ohne dass
GRUB_PLATFORMS="efi-64"
aktiviert war, kann die Zeile (wie oben gezeigt) zu make.conf hinzugefügt werden. Danach können die Abhängigkeiten für das world package set neu berechnet werden durch Aufruf von emerge mit den Optionen--update --newuse
:
root #
emerge --ask --update --newuse --verbose sys-boot/grub
Die GRUB Software wurde nun zu dem System hinzugefügt. Sie ist aber noch nicht installiert.
Installation
Als nächstes werden die erforderlichen GRUB Dateien in das /boot/grub/ Verzeichnis installiert. Hierfür kann das grub-install Kommando verwendet werden. Unter der Annahme, dass die erste Festplatte (diejenige von der das System bootet) /dev/sda ist, kann einer der folgenden Befehle verwenden werden:
- Wenn ein BIOS-System verwendet wird:
root #
grub-install /dev/sda
- Wenn ein UEFI-System verwendet wird:
- Wichtig
Stellen Sie sicher, dass die EFI System-Partition (ESP) eingehängt wurde, bevor Sie grub-install ausführen. Wenn die EFI System-Partition nicht eingehängt wurde, wird grub-install die Installation trotzdem durchführen. Die GRUB EFI-Datei (grubx64.efi) wird dann in das falsche Verzeichnis installiert. Dabei werden Sie nicht informiert oder gewarnt.
root #
grub-install --target=x86_64-efi --efi-directory=/boot
- Hinweis
Setzen Sie die--efi-directory
Option auf das Verzeichnis der EFI System-Partition (ESP). Dies ist erforderlich, wenn die /boot Partition nicht mit dem Dateisystem-Typ "FAT-Variante" formatiert wurde.
- Wichtig
Wenn grub-install einen Fehler wieCould not prepare Boot variable: Read-only file system
meldet, ist es möglicherweise erforderlich, einen Mount-Parameter des efivars-Dateisystems auf "read-write" zu ändern:root #
mount -o remount,rw,nosuid,nodev,noexec --types efivarfs efivarfs /sys/firmware/efi/efivars
- Einige Hersteller von Mainboards scheinen nur das Verzeichnis /efi/boot/ für die .EFI-Datei in der EFI System Partition (ESP) zu unterstützen. Der GRUB Installer unterstützt diese Arbeitsweise mit der Option
--removable
. Stellen Sie sicher, dass die ESP eingehängt wurde, bevor Sie die folgenden Kommandos ausführen. Vorausgesetzt, dass die ESP eingehängt ist unter /boot (wie früher vorgeschlagen), können Sie folgende Kommandos ausführen:
root #
grub-install --target=x86_64-efi --efi-directory=/boot --removable
- Dies erzeugt das von der UEFI Spezifikation definierte Standard-Verzeichnis und kopiert dann die grubx64.efi-Datei zu dem "Standard"-Ort der EFI-Datei, der in der gleichen Spezifikation definiert wurde.
Konfiguration
Im nächsten Schritt erzeugen wir auf Grundlage der Benutzereinstellungen, die in der Datei /etc/default/grub und den Skripten im Verzeichnis /etc/grub.d angegeben sind, die GRUB Konfiguration. In den meisten Fällen ist keine Konfiguration durch den Benutzer erforderlich, weil GRUB automatisch erkennen wird, welcher Kernel zu booten ist (den höchsten verfügbaren in /boot/) und was das Root Dateisystem ist. Mit Hilfe der GRUB_CMDLINE_LINUX Variable ist auch möglich, Kernel-Parameter in /etc/default/grub zu definieren.
Zum Generieren der endgültigen GRUB Konfiguration führen Sie den Befehl grub-mkconfig aus:
root #
grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ... Found linux image: /boot/vmlinuz-5.15.52-gentoo Found initrd image: /boot/initramfs-genkernel-x86-5.15.52-gentoo done
Die Ausgabe des Befehls muss erwähnen, dass mindestens ein Linux Image gefunden wurde, da dieses zum Booten des Systems erforderlich sind. Wenn ein initramfs verwendet wird, oder der Kernel mit Hilfe von genkernel erzeugt wurde, sollte das korrekte initrd Image ebenfalls erkannt werden. Falls dies nicht der Fall ist, überprüfen Sie das Verzeichnis /boot/ mit dem Befehl ls auf dessen Inhalt. Wenn die Dateien in der Tat fehlen sollten, gehen Sie zurück zur Kernel-Konfiguration und der dortigen Installationsanleitung.
Die os-prober Utility kann in Verbindung mit GRUB verwendet werden, um andere Betriebssysteme auf angeschlossenen Festplatten zu erkennen. Windows 7, 8.1, 10 und andere Linux Distributionen werden erkannt. Diejenigen, die ein Dual-Boot System wünschen, sollten das sys-boot/os-prober Paket "emergen" und dann das grub-mkconfig Kommando erneut ausführen (wie oben beschrieben). Falls Erkennungsprobleme auftreten, lesen Sie bitte den GRUB Artikel vollständig, bevor Sie die Gentoo Community um Hilfe bitten.
Alternative 1: LILO
Emerge
LILO, der LInuxLOader, ist das erprobte und wahre Arbeitstier unter den Linux Bootloadern. Allerdings fehlen ihm gegenüber GRUB einige Funktionen. LILO wird auch heute noch verwendet, weil GRUB auf einigen Systemen nicht funktioniert, aber LILO schon. Natürlich wird er ebenfalls verwendet, weil ihn einige Leute kennen und bei LILO bleiben wollen. So oder so, Gentoo unterstützt beide Bootloader.
Das "Emergen" von LILO ist ein Kinderspiel.
root #
emerge --ask sys-boot/lilo
Konfiguration
Um LILO zu konfigurieren, erstellen Sie zunächst die Datei /etc/lilo.conf:
root #
nano -w /etc/lilo.conf
In der Konfigurationstatei werden Abschnitte verwendet, um die bootfähigen Kernel zu referenzieren. Stellen Sie sicher, dass die Kernel-Dateien (mit Kernelversion) und die initramfs Dateien bekannt sind, da auf sie in dieser Konfigurationsdatei Bezug genommen werden muss.
Wenn als Root-Dateisystem JFS verwendet wird, fügen Sie bitte eine
append="ro"
Zeile nach jedem Booteintrag hinzu, weil JFS sein Log erst auslesen muss, bevor es ein Einhängen im Lese- und Schreibmodus erlaubt./etc/lilo.conf
LILO Beispiel-Konfiguration'"`UNIQ--pre-00000002-QINU`"'
Wenn Sie ein anderes Partitionierungs-Schema und/oder Kernel-Abbild verwenden, passen Sie die Datei bitte entsprechend an.
Wenn ein initramfs notwendig ist, dann ändern Sie die Konfiguration, indem sie auf die initramfs Datei verweisen und dieser mitteilen, an welcher Stelle sich das echte Root-Device befindet:
/etc/lilo.conf
Boot-Eintrag mit initramfs Informationen'"`UNIQ--pre-00000005-QINU`"'
Wenn zusätzliche Optionen an den Kernel übergeben werden müssen, verwenden Sie die append
Anweisung. Um beispielsweise die video
Anweisung zur Aktivierung des Framebuffers hinzuzufügen:
/etc/lilo.conf
Boot-Optionen mit Video-Parametern'"`UNIQ--pre-00000008-QINU`"'
Benutzer, die genkernel verwenden, sollten wissen, dass ihr Kernel die gleichen Bootoptionen verwendet, wie die Installations-CD. Wenn Sie beispielsweise SCSI Support benötigen, fügen sie doscsi
als Kernel-Option hinzu.
Speichern Sie nun die Datei und beenden Sie den Editor.
Installation
Zum Abschluss führen Sie bitte das Programm /sbin/lilo aus, damit LILO die Einstellungen aus /etc/lilo.conf auf das System anwenden kann (das heißt: sich selbst auf die Festplatte installieren kann). Beachten Sie, dass /sbin/lilo jedes Mal erneut ausgeführt werden muss, wenn ein Kernel installiert, oder eine Veränderung an lilo.conf vorgenommen wurde.
root #
/sbin/lilo
Alternative 2: efibootmgr
Auf UEFI basierten Systemen kann die UEFI Firmware auf dem System selbst (mit anderen Worten: der primäre Bootloader) dazu gebracht werden, dass sie selbst nach UEFI Boot-Einträgen sucht. Solche Systeme benötigen keine (sekundären) Bootloader wie GRUB, um das System zu booten. Auf solchen Systemen werden Bootloader wie GRUB genutzt, weil sie erweiterte Funktionalität bieten. efibootmgr ist für diejenigen gedacht, die ihr System auf direktem (und evtl. rigidem) Weg booten wollen. GRUB ist einfacher für die Mehrzahl der Anwender, weil es beim Booten von UEFI Systemen mehr Flexibilität bietet.
Vergessen Sie nicht, dass die sys-boot/efibootmgr Anwendung kein Bootloader ist, sondern ein Werkzeug, um mit der UEFI-Firmware zu interagieren und deren Einstellungen zu aktualisieren. Auf diese Weise kann ein Kernel, der früher installiert wurde, mit zusätzlichen Optionen gebootet werden (falls nötig). Des Weiteren lassen sich dadurch mehrere Booteinträge realisieren. Diese Interaktion erfolgt durch EFI Variablen (daher die Notwendigkeit für die Kernel-Unterstützung für EFI Variablen).
Bitte lesen Sie den EFI stub kernel Artikel, bevor Sie fortfahren. Im Linux Kernel müssen bestimmte Optionen aktiviert sein, damit er direkt von der UEFI Firmware gebootet werden kann. Es kann notwendig sein, den Kernel erneut zu kompilieren. Es könnte auch hilfreich sein, den efibootmgr Artikel zu lesen.
Zur Wiederholung: efibootmgr ist keine Voraussetzung, um ein UEFI System zu booten. Der Linux-Kernel selbst kann direkt gebootet werden. Zusätzliche Kernel Bootparameter können in den Linux-Kernel einkompiliert werden (es gibt eine Kernel-Konfigurations-Option namens CONFIG_CMDLINE, mit der Benutzer Bootparameter spezifizieren können). Sogar ein initramfs kann in den Kernels einkompiliert werden.
Diejenigen, die diesen Weg gehen wollen, müssen zuerst die Software installieren:
root #
emerge --ask sys-boot/efibootmgr
Erzeugen Sie das Verzeichnis /boot/efi/boot/ und kopieren Sie den Kernel dorthin. Ändern Sie dabei seinen Namen nach bootx64.efi.
root #
mkdir -p /boot/efi/boot
root #
cp /boot/vmlinuz-* /boot/efi/boot/bootx64.efi
Als Nächstes sagen Sie der UEFI Firmware, dass ein Booteintrag mit dem Namen "Gentoo" zu erstellen ist, der den frisch kompilierten EFI stub Kernel bootet:
root #
efibootmgr --create --disk /dev/sda --part 2 --label "Gentoo" --loader "\efi\boot\bootx64.efi"
Falls ein Ausgangsdateisystem im Arbeitsspeicher (Initial RAM Filesystem = initramfs) verwendet wird, fügen Sie die passenden Bootoptionen hinzu:
root #
efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l "\efi\boot\bootx64.efi" initrd='\initramfs-genkernel-x86-5.15.52-gentoo'
Die Verwendung von \ als Verzeichnistrenner ist in UEFI Definitionen Pflicht.
Nach diesen Änderungen wird bei einem Neustart das Systems ein Booteintrag mit der Bezeichnung "Gentoo" verfügbar sein.
Alternative 3: Syslinux
Syslinux ist eine weitere Bootloader-Alternative für die x86 Architektur. Syslinux unterstützt MBR und - seit Version 6.0.0 - auch EFI. Weiterhin werden PXE (netboot) und weitere, weniger bekannte Optionen unterstützt. Obwohl Syslinux bei vielen Anwendern beliebt ist, wird es nicht in diesem Handbuch beschrieben. Es gibt jedoch einen Syslinux Artikel im Gentoo Wiki, in dem die Installation beschrieben wird.
Neustart des Systems
Verlassen Sie die chroot-Umgebung und hängen Sie alle gemounteten Partitionen aus. Geben Sie dann den magischen Befehl ein, der den alles entscheidenden Test einleitet - reboot.
root #
exit
cdimage ~#
cd
cdimage ~#
umount -l /mnt/gentoo/dev{/shm,/pts,}
cdimage ~#
umount -R /mnt/gentoo
cdimage ~#
reboot
Vergessen Sie nicht, das Installations-Medium zu entfernen. Andernfalls könnte erneut das Installations-Medium anstelle des neuen Gentoo Systems gebootet werden.
Nach dem Neustart in die neu installierte Gentoo Umgebung können Sie Ihre Installation mit dem Kapitel Abschluss der Gentoo Installation fertigstellen.