Nächste: , Vorige: , Nach oben: Systemkonfiguration   [Inhalt][Index]


12.14 Bootloader-Konfiguration

Das Betriebssystem unterstützt mehrere Bootloader. Der gewünschte Bootloader wird mit der bootloader-configuration-Deklaration konfiguriert. Alle Felder dieser Struktur sind für alle Bootloader gleich außer dem einen Feld bootloader, das angibt, welcher Bootloader konfiguriert und installiert werden soll.

Manche der Bootloader setzen nicht alle Felder einer bootloader-configuration um. Zum Beispiel ignoriert der extlinux-Bootloader das theme-Feld, weil er keine eigenen Themen unterstützt.

Datentyp: bootloader-configuration

Der Typ der Deklaration einer Bootloader-Konfiguration.

bootloader

The bootloader to use, as a bootloader object. For now grub-bootloader, grub-efi-bootloader, grub-efi-netboot-bootloader, grub-efi-removable-bootloader, extlinux-bootloader and u-boot-bootloader are supported.

Verfügbare Bootloader werden in den Modulen (gnu bootloader …) beschrieben. Insbesondere enthält (gnu bootloader u-boot) Definitionen für eine Vielzahl von ARM- und AArch64-Systemen, die den U-Boot-Bootloader benutzen.

grub-efi-bootloader macht es möglich, auf modernen Systemen mit Unified Extensible Firmware Interface (UEFI) zu booten. Sie sollten das hier benutzen, wenn im Installationsabbild ein Verzeichnis /sys/firmware/efi vorhanden ist, wenn Sie davon auf Ihrem System booten.

Mit grub-bootloader können Sie vor allem auf Intel-basierten Maschinen im alten „Legacy“-BIOS-Modus booten.

Mit grub-efi-netboot-bootloader können Sie Ihr System via TFTP über das Netzwerk booten. Zusammen mit einem über NFS eingebundenen Wurzeldateisystem können Sie damit ein Guix-System ohne Plattenlaufwerk einrichten.

The installation of the grub-efi-netboot-bootloader generates the content of the TFTP root directory at targets (siehe targets), to be served by a TFTP server. You may want to mount your TFTP server directories onto the targets to move the required files to the TFTP server automatically.

Wenn Sie außerdem vorhaben, ein NFS-Wurzeldateisystem zu benutzen (eigentlich auch, wenn Sie bloß den Store von einer NFS-Freigabe laden möchten), dann muss der TFTP-Server auch die Datei /boot/grub/grub.cfg und die anderen Dateien vom Store zur Verfügung stellen, etwa GRUBs Hintergrundbild, den Kernel (siehe kernel) und auch die initrd (siehe initrd). Auf all diese Store-Dateien greift GRUB via TFTP über ihren normalen Store-Pfad zu, z.B. über tftp://tftp-server/gnu/store/…-initrd/initrd.cpio.gz.

Um das möglich zu machen, erzeugt Guix zwei symbolische Verknüpfungen. Für jedes Ziel im Feld targets ist die erste Verknüpfung ‘Ziel/efi/Guix/boot/grub/grub.cfg, die auf ../../../boot/grub/grub.cfg zeigt, wobei das ‘Ziel’ dem Pfad /boot entsprechen kann. In diesem Fall verlässt die Verknüpfung das zugänglich gemachte TFTP-Wurzelverzeichnis nicht, in den anderen Fällen schon. Die zweite Verknüpfung ist ‘Ziel/gnu/store und zeigt auf ../gnu/store. Diese Verknüpfung verlässt das zugänglich gemachte TFTP-Wurzelverzeichnis.

Die Annahme hinter all dem ist, dass Sie einen NFS-Server haben, der das Wurzelverzeichnis für Ihr Guix-System exportiert, und außerdem einen TFTP-Server haben, der die als targets angegebenen Verzeichnisse liefert – normalerweise ist das ein einzelnes Verzeichnis /boot –, was in demselben Wurzelverzeichnis Ihres Guix-Systems gespeichert vorliegt. In dieser Konstellation werden die symbolischen Verknüpfungen funktionieren.

For other constellations you will have to program your own bootloader installer, which then takes care to make necessary files from the store accessible through TFTP, for example by copying them into the TFTP root directory to your targets.

It is important to note that symlinks pointing outside the TFTP root directory may need to be allowed in the configuration of your TFTP server. Further the store link exposes the whole store through TFTP. Both points need to be considered carefully for security aspects.

Abgesehen vom grub-efi-netboot-bootloader und den bereits erwähnten TFTP- und NFS-Servern brauchen Sie auch einen passend eingerichteten DHCP-Server, der das Booten über das Netzwerk möglich macht. Derzeit können wir Ihnen bei all dem nur empfehlen, Anleitungen über die PXE (Preboot eXecution Environment) ausfindig zu machen.

Mit grub-efi-removable-bootloader lässt sich Ihr System von Wechseldatenträgern aus starten. Er platziert die GRUB-Datei an dem Standardort, der in der UEFI-Spezifikation für solche Fälle vorgesehen ist, nämlich in /EFI/BOOT/BOOTX64.efi innerhalb des Boot-Verzeichnisses, was meistens /boot/efi ist. grub-efi-removable-bootloader ist außerdem geeignet, wenn Sie eine „vergessliche“ UEFI-Firmware haben, die es nicht schafft, ihre Konfiguration im dafür gedachten nicht flüchtigen Speicher zu erhalten. Genau wie bei grub-efi-bootloader können Sie grub-efi-removable-bootloader nur benutzen, wenn das Verzeichnis /sys/firmware/efi verfügbar ist.

Anmerkung: Für jedes andere Betriebssystem, das seine GRUB-Datei auch an diesem Standardort aus der UEFI-Spezifikation hat, wird diese hierbei überschrieben und das alte System kann nicht mehr gebootet werden.

targets

Eine Liste von Zeichenketten, die angibt, auf welche Ziele der Bootloader installiert werden soll.

Was targets bedeutet, hängt vom jeweiligen Bootloader ab. Für grub-bootloader sollten hier zum Beispiel Gerätenamen angegeben werden, die vom installer-Befehl des Bootloaders verstanden werden, etwa /dev/sda oder (hd0) (siehe Invoking grub-install in GNU GRUB Manual). Für grub-efi-bootloader und grub-efi-removable-bootloader sollten die Einhängepunkte des EFI-Dateisystems angegeben werden, in der Regel /boot/efi. Für grub-efi-netboot-bootloader sollten targets der oder die Einhängepunkte sein, unter denen das TFTP-Wurzelverzeichnis Ihres TFTP-Servers erreichbar ist.

menu-entries (Vorgabe: ())

Eine möglicherweise leere Liste von menu-entry-Objekten (siehe unten), die für Menüeinträge stehen, die im Bootloader-Menü auftauchen sollen, zusätzlich zum aktuellen Systemeintrag und dem auf vorherige Systemgenerationen verweisenden Eintrag.

default-entry (Vorgabe: 0)

Die Position des standardmäßig ausgewählten Bootmenü-Eintrags. An Position 0 steht der Eintrag der aktuellen Systemgeneration.

timeout (Vorgabe: 5)

Wie viele Sekunden lang im Menü auf eine Tastatureingabe gewartet wird, bevor gebootet wird. 0 steht für sofortiges Booten, für -1 wird ohne Zeitbeschränkung gewartet.

keyboard-layout (Vorgabe: #f)

Wenn dies auf #f gesetzt ist, verwendet das Menü des Bootloaders (falls vorhanden) die Vorgabe-Tastaturbelegung, normalerweise US English („qwerty“).

Andernfalls muss es ein keyboard-layout-Objekt sein (siehe Tastaturbelegung).

Anmerkung: Dieses Feld wird derzeit von Bootloadern außer grub und grub-efi ignoriert.

theme (Vorgabe: #f)

Ein Objekt für das im Bootloader anzuzeigende Thema. Wird kein Thema angegeben, benutzen manche Bootloader vielleicht ein voreingestelltes Thema; GRUB zumindest macht es so.

terminal-outputs (Vorgabe: '(gfxterm))

Die Ausgabeterminals, die für das Boot-Menü des Bootloaders benutzt werden, als eine Liste von Symbolen. GRUB akzeptiert hier diese Werte: console, serial, serial_{0–3}, gfxterm, vga_text, mda_text, morse und pkmodem. Dieses Feld entspricht der GRUB-Variablen GRUB_TERMINAL_OUTPUT (siehe Simple configuration in Handbuch von GNU GRUB).

terminal-inputs (Vorgabe: '())

Die Eingabeterminals, die für das Boot-Menü des Bootloaders benutzt werden, als eine Liste von Symbolen. GRUB verwendet hier das zur Laufzeit bestimmte Standardterminal. GRUB akzeptiert sonst diese Werte: console, serial, serial_{0-3}, at_keyboard und usb_keyboard. Dieses Feld entspricht der GRUB-Variablen GRUB_TERMINAL_INPUT (siehe Simple configuration in Handbuch von GNU GRUB).

serial-unit (Vorgabe: #f)

Die serielle Einheit, die der Bootloader benutzt, als eine ganze Zahl zwischen 0 und 3, einschließlich. Für GRUB wird sie automatisch zur Laufzeit ausgewählt; derzeit wählt GRUB die 0 aus, die COM1 entspricht (siehe Serial terminal in Handbuch von GNU GRUB).

serial-speed (Vorgabe: #f)

Die Geschwindigkeit der seriellen Schnittstelle als eine ganze Zahl. GRUB bestimmt den Wert standardmäßig zur Laufzeit; derzeit wählt GRUB 9600 bps (siehe Serial terminal in Handbuch von GNU GRUB).

device-tree-support? (Vorgabe: #t)

Ob das Laden von Device-Tree-Dateien durch Linux stattfinden soll.

Diese Option ist standardmäßig aktiviert. In manchen Fällen, z.B. wenn durch den u-boot-Bootloader schon der Device Tree in den Arbeitsspeicher geladen wird, kann es gewünscht sein, diese Option hier abzuschalten, indem Sie sie auf #f setzen.

Sollten Sie zusätzliche Bootmenü-Einträge über das oben beschriebene menu-entries-Feld hinzufügen möchten, müssen Sie diese mit der menu-entry-Form erzeugen. Stellen Sie sich zum Beispiel vor, Sie wollten noch eine andere Distribution booten können (schwer vorstellbar!), dann könnten Sie einen Menüeintrag wie den Folgenden definieren:

(menu-entry
  (label "Die _andere_ Distribution")
  (linux "/boot/old/vmlinux-2.6.32")
  (linux-arguments '("root=/dev/sda2"))
  (initrd "/boot/old/initrd"))

Details finden Sie unten.

Datentyp: menu-entry

Der Typ eines Eintrags im Bootloadermenü.

label

Die Beschriftung, die im Menü gezeigt werden soll – z.B. "GNU".

linux (Vorgabe: #f)

Das Linux-Kernel-Abbild, was gebootet werden soll, zum Beispiel:

(file-append linux-libre "/bzImage")

Für GRUB kann hier auch ein Gerät ausdrücklich zum Dateipfad angegeben werden, unter Verwendung von GRUBs Konventionen zur Gerätebenennung (siehe Naming convention in Handbuch von GNU GRUB), zum Beispiel:

"(hd0,msdos1)/boot/vmlinuz"

Wenn das Gerät auf diese Weise ausdrücklich angegeben wird, wird das device-Feld gänzlich ignoriert.

linux-arguments (Vorgabe: ())

Die Liste zusätzlicher Linux-Kernel-Befehlszeilenargumente – z.B. ("console=ttyS0").

initrd (Vorgabe: #f)

Ein G-Ausdruck oder eine Zeichenkette, die den Dateinamen der initialen RAM-Disk angibt, die benutzt werden soll (siehe G-Ausdrücke).

device (Vorgabe: #f)

Das Gerät, auf dem Kernel und initrd zu finden sind – d.h. bei GRUB die Wurzel (root) dieses Menüeintrags (siehe root in Handbuch von GNU GRUB).

Dies kann eine Dateisystembezeichnung (als Zeichenkette), eine Dateisystem-UUID (als Bytevektor, siehe Dateisysteme) oder #f sein, im letzten Fall wird der Bootloader auf dem Gerät suchen, das die vom linux-Feld benannte Datei enthält (siehe search in Handbuch von GNU GRUB). Ein vom Betriebssystem vergebener Gerätename wie /dev/sda1 ist aber nicht erlaubt.

multiboot-kernel (Vorgabe: #f)

Der Kernel, der im Multiboot-Modus gebootet werden soll (siehe multiboot in GNU GRUB manual). Wenn dieses Feld gesetzt ist, wird ein Multiboot-Menüeintrag erzeugt. Zum Beispiel:

(file-append mach "/boot/gnumach")
multiboot-arguments (Vorgabe: ())

Liste zusätzlicher Befehlszeilenoptionen für den Multiboot-Kernel.

multiboot-modules (Vorgabe: ())

Die Liste der Befehle zum Laden von Multiboot-Modulen. Zum Beispiel:

(list (list (file-append hurd "/hurd/ext2fs.static") "ext2fs"
             )
      (list (file-append libc "/lib/ld.so.1") "exec"
             ))
chain-loader (Vorgabe: #f)

Eine Zeichenkette, die von GRUBs chainloader-Direktive akzeptiert wird. Sie hat keine Auswirkungen, wenn auch die Felder linux oder multiboot-kernel angegeben werden. Im folgenden Beispiel wird ein anderes GNU/Linux-System per Chainloading gebootet.

(bootloader
 (bootloader-configuration
  ;; …
  (menu-entries
   (list
    (menu-entry
     (label "GNU/Linux")
     (device (uuid "1C31-A17C" 'fat))
     (chain-loader "/EFI/GNULinux/grubx64.efi"))))))

Zurzeit lässt nur GRUB sein Aussehen durch Themen anpassen. GRUB-Themen werden mit der grub-theme-Form erzeugt, die hier noch nicht vollständig dokumentiert ist.

Datentyp: grub-theme

Der Datentyp, der die Konfiguration des GRUB-Themas repräsentiert.

gfxmode (Vorgabe: '("auto"))

Welcher gfxmode für GRUB eingestellt werden soll (als eine Liste von Zeichenketten mit Bildschirmauflösungen, siehe gfxmode in Handbuch von GNU GRUB).

Scheme-Prozedur: grub-theme

Liefert das vorgegebene GRUB-Thema, das vom Betriebssystem benutzt wird, wenn kein theme-Feld im bootloader-configuration-Verbundsobjekt angegeben wurde.

Es wird von einem feschen Hintergrundbild begleitet, das die Logos von GNU und Guix zeigt.

Um zum Beispiel eine andere Auflösung als vorgegeben zu verwenden, würden Sie so etwas schreiben:

(bootloader
 (bootloader-configuration
 ;; …
 (theme (grub-theme
         (inherit (grub-theme))
         (gfxmode '("1024x786x32" "auto"))))))

Nächste: guix system aufrufen, Vorige: Initiale RAM-Disk, Nach oben: Systemkonfiguration   [Inhalt][Index]