Suivant: , Précédent: , Monter: Configuration du système   [Table des matières][Index]


12.14 Configuration du chargeur d’amorçage

Le système d’exploitation supporte plusieurs chargeurs d’amorçage. La configuration du chargeur d’amorçage se fait avec la déclaration bootloader-configuration. Tous les champs de cette structure sont indépendants du chargeur d’amorçage sauf un, bootloader qui indique le chargeur d’amorçage à configurer et à installer.

Certains chargeurs d’amorçage ne prennent pas en compte tous les champs de bootloader-configuration. Par exemple, le chargeur d’amorçage extlinux ne supporte pas les thèmes et ignore donc le champ theme.

Type de données :bootloader-configuration

Le type d’une déclaration de configuration de chargeur d’amorçage.

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.

Les chargeurs d’amorçage disponibles sont décrits dans les modules (gnu bootloader …). En particulier, (gnu bootloader u-boot) contient des définitions de chargeurs d’amorçage pour une large gamme de systèmes ARM et AArch, à l’aide du chargeur d’amorçage U-Boot.

grub-efi-bootloader permet de démarrer sur un système moderne qui utilise l’UEFI (Unified Extensible Firmware Interface). C’est ce que vous devriez utiliser si l’image d’installation contient un répertoire /sys/firmware/efi lorsque vous démarrez dessus sur votre machine.

grub-bootloader vous permet de démarrer en particulier sur des machines Intel en mode BIOS « legacy ».

grub-efi-netboot-bootloader vous permet de démarrer votre système via le réseau avec TFTP. En plus d’un système de fichier racine NFS, cela vous permet de démarrer un système Guix sans disque.

The installation of the grub-efi-netboot-bootloader generates the content of the TFTP root directory at targets (voir 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.

Si vous voulez aussi utiliser un système de fichier racine NFS (en fait si vous montez le dépôt depuis un partage NFS), alors le serveur TFTP doit aussi servir le fichier /boot/grub/grub.cfg et d’autres fichiers à partir du dépôt (comme l’image de fond de GRUB, le noyau (voir kernel) et l’initrd (voir initrd)). Tous ces fichiers du dépôt seront accessibles pour GRUB à travers TFTP avec leurs chemins normaux, par exemple tftp://tftp-server/gnu/store/…-initrd/initrd.cpio.gz.

Deux liens symboliques sont créés pour rendre cela possible. Pour chaque cible du champ targets, le premier lien est ‘target/efi/Guix/boot/grub/grub.cfg pointant vers ../../../boot/grub/grub.cfg, où ‘target’ peut être /boot. Dans ce cas le lien ne quitte pas le répertoire racine du serveur TFTP. Le second lien est ‘target/gnu/store qui pointe vers ../gnu/store. Ce lien est en dehors du répertoire racine du serveur TFTP.

L’hypothèse derrière tout ceci est que vous avez un serveur NFS qui exporte le système de fichiers racine de votre système Guix, et en plus, un serveur TFTP qui exporte vos répertoires targets — habituellement /boot uniquement — à partir du même système de fichiers racine que votre système Guix. Dans ce cas les liens symboliques vont fonctionner.

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.

En dehors de grub-efi-netboot-bootloader, des serveurs TFTP et NFS déjà mentionnés, vous pouvez utiliser un serveur DHCP correctement configuré pour permettre le démarrage réseau. Pour cela nous ne pouvons que vous recommander de regarder les instructions sur PXE (Preboot eXecution Environment).

grub-efi-removable-bootloader vous permet de démarrer votre système à partir d’un média amovible en écrivant le fichier GRUB à l’emplacement spécifié par UEFI /EFI/BOOT/BOOTX64.efi du répertoire de démarrage, typiquement /boot/efi. C’est aussi utile pour certains micrologiciels UEFI qui « oublient » la configuration de leur stockage non-volatile. Comme pour grub-efi-bootloader, cela peut aussi être utilisé si le répertoire /sys/firmware/efi est disponible.

Remarque : Cela remplacera le fichier GRUB des autres systèmes d’exploitation qui placent aussi un fichier GRUB dans l’emplacement spécifié par UEFI. Cela les rends impossible à démarrer.

targets

C’est une liste de chaînes qui dénotent les cibles sur lesquelles installer le chargeur d’amorçage.

L’interprétation des cibles dépend du chargeur d’amorçage en question. Pour grub-bootloader par exemple, cela devrait être le nom des périphériques compris par la commande installer du chargeur d’amorçage, comme /dev/sda ou (hd0) (voir Invoking grub-install dans GNU GRUB Manual). Pour grub-efi-bootloader et grub-efi-removable-bootloader, cela devrait être les points de montage des systèmes de fichiers EFI, typiquement /boot/efi. Pour grub-efi-netboot-bootloader, targets doit contenir les points de montage correspondant aux répertoires racines de TFTP sur votre serveur TFTP.

menu-entries (par défaut : ())

Une liste éventuellement vide d’objets menu-entry (voir plus bas), dénotant les entrées qui doivent apparaître dans le menu du chargeur d’amorçage, en plus de l’entrée pour le système actuel et l’entrée pointant vers les générations précédentes.

default-entry (par défaut : 0)

L’index de l’entrée du menu de démarrage par défaut. L’index 0 correspond au système actuel.

timeout (par défaut : 5)

Le nombre de secondes à attendre une entrée clavier avant de démarrer. Indiquez 0 pour démarre immédiatement, et -1 pour attendre indéfiniment.

keyboard-layout (par défaut : #f)

Si c’est #f, le menu du chargeur d’amorçage (s’il y en a un) utilise la disposition du clavier par défaut, normalement pour l’anglais américain (« qwerty »).

Sinon, cela doit être un objet keyboard-layout (voir Disposition du clavier).

Remarque : Cette option est actuellement ignorée par les chargeurs d’amorçage autre que grub et grub-efi.

theme (par défaut : #f)

L’objet de thème du chargeur d’amorçage décrivant le thème utilisé. Si aucun thème n’est fournit, certains chargeurs d’amorçage peuvent utiliser un thème par défaut, c’est le cas de GRUB.

terminal-outputs (par défaut : '(gfxterm))

Les terminaux de sortie utilisés par le menu de démarrage du chargeur d’amorçage, en tant que liste de symboles. GRUB accepte les valeurs console, serial, serial_{0-3}, gfxterm, vga_text, mda_text, morse et pkmodem. Ce champ correspond à la variable GRUB GRUB_TERMINAL_OUTPUT (voir Simple configuration dans GNU GRUB manual).

terminal-inputs (par défaut : '())

Les terminaux d’entrée utilisés par le menu de démarrage du chargeur d’amorçage, en tant que liste de symboles. Pour GRUB, la valeur par défaut est le terminal natif de la plate-forme déterminé à l’exécution. GRUB accepte les valeurs console, serial, serial_{0-3}, at_keyboard et usb_keyboard. Ce champ correspond à la variable GRUB GRUB_TERMINAL_INPUT (voir Simple configuration dans GNU GRUB manual).

serial-unit (par défaut : #f)

L’unitié série utilisée par le chargeur d’amorçage, en tant qu’entier entre 0 et 3. Pour GRUB, il est choisi à l’exécution ; actuellement GRUB choisi 0, ce qui correspond à COM1 (voir Serial terminal dans GNU GRUB manual).

serial-speed (par défaut : #f)

La vitesse de l’interface série, en tant qu’entier. Pour GRUB, la valeur par défaut est choisie à l’exécution ; actuellement GRUB choisi 9600 bps (voir Serial terminal dans GNU GRUB manual).

device-tree-support? (par défaut : #t)

Indique s’il faut prendre en charge le chargement des fichiers device tree de Linux.

Cette option est activée par défaut. Dans certains cas qui impliquent le chargeur d’amorçage u-boot, où l’arborescence de l’appareil est déjà chargée en RAM, il peut être pratique de désactiver cette option en indiquant #f.

Si vous voulez lister des entrées du menu de démarrage supplémentaires via le champ menu-entries ci-dessus, vous devrez les créer avec la forme menu-entry. Par exemple, imaginons que vous souhaitiez pouvoir démarrer sur une autre distro (c’est difficile à concevoir !), vous pourriez alors définir une entrée du menu comme ceci :

(menu-entry
  (label "L'autre distro")
  (linux "/boot/old/vmlinux-2.6.32")
  (linux-arguments '("root=/dev/sda2"))
  (initrd "/boot/old/initrd"))

Les détails suivent.

Type de données :menu-entry

Le type d’une entrée dans le menu du chargeur d’amorçage.

label

L’étiquette à montrer dans le menu — p. ex. "GNU".

linux (par défaut : #f)

L’image du noyau Linux à démarrer, par exemple :

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

Pour GRUB, il est aussi possible de spécifier un périphérique explicitement dans le chemin de fichier avec la convention de nommage de GRUB (voir Naming convention dans GNU GRUB manual), par exemple :

"(hd0,msdos1)/boot/vmlinuz"

Si le périphérique est spécifié explicitement comme au-dessus, le champ device est complètement ignoré.

linux-arguments (par défaut : ())

La liste des arguments de la ligne de commande du noyau supplémentaires — p. ex. ("console=ttyS0").

initrd (par défaut : #f)

Une G-expression ou une chaîne dénotant le nom de fichier du disque de RAM initial à utiliser (voir G-Expressions).

device (par défaut : #f)

Le périphérique où le noyau et l’initrd se trouvent — c.-à-d. pour GRUB, l’option root de cette entrée de menu (voir root dans GNU GRUB manual).

Cela peut être une étiquette de système de fichiers (une chaîne), un UUID de système de fichiers (un vecteur d’octets, voir Systèmes de fichiers) ou #f, auquel cas le chargeur d’amorçage recherchera le périphérique contenant le fichier spécifié par le champ linux (voir search dans GNU GRUB manual). Cela ne doit pas être un nom de périphérique donné par l’OS comme /dev/sda1.

multiboot-kernel (par défaut : #f)

Le noyau à démarrer en mode Multiboot (voir multiboot dans GNU GRUB manual). Lorsque ce champ est spécifié, une entrée de menu Multiboot est générée. Par exemple :

(file-append mach "/boot/gnumach")
multiboot-arguments (par défaut : ())

Liste d’arguments de la ligne de commande supplémentaires pour le multiboot-kernel.

multiboot-modules (par défaut : ())

Liste de commandes pour charger les modules Multiboot. Par exemple :

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

Une chaine qui peut être acceptée par la directive chainloader de grub. Cela n’a aucun effet si le champ linux ou multiboot-kernel est renseigné. Voici un exemple de chargement chainé d’un autre système GNU/Linux.

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

Pour l’instant seul GRUB prend en charge les thèmes. On crée un thème GRUB avec la forme grub-theme, qui n’est pas encore complètement documentée.

Type de données :grub-theme

Type de données représentant la configuration du thème GRUB.

gfxmode (par défaut : '("auto"))

Le gfxmode de GRUB à utiliser (une liste de chaines de résolution d’écran, voir gfxmode dans GNU GRUB manual).

Procédure Scheme :grub-theme

Renvoie le thème par défaut de GRUB utilisé par le système d’exploitation si aucun champ theme n’est spécifié dans l’enregistrement bootloader-configuration.

Il contient une image de fond sympathique avec les logos de GNU et de Guix.

Par exemple, pour changer la résolution par défaut, vous pouvez utiliser quelque chose comme

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

Suivant: Invoquer guix system, Précédent: Disque de RAM initial, Monter: Configuration du système   [Table des matières][Index]