Suivant: Invoquer guix system
, Précédent: Disque de RAM initial, Monter: Configuration du système [Table des matières][Index]
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
.
Le type d’une déclaration de configuration de chargeur d’amorçage.
bootloader
¶Le chargeur d’amorçage à utiliser, en tant qu’objet bootloader
. Pour
l’instant grub-bootloader
, grub-efi-bootloader
,
grub-efi-removable-bootloader
, gru-efi-netboot-bootloader
,
grub-efi-netboot-removable-bootloader
, extlinux-bootloader
et
u-boot-bootloader
sont pris en charge.
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-bootloader
vous permet de démarrer en particulier sur des
machines Intel en mode BIOS « legacy ».
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-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.
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.
L’installation de ggrub-efi-netboot-bootloader
génère le contenu du
répertoire racine TFTP sur targets
(voir targets
) sous le répertoire efi/Guix, qui sera servi par un
serveur TFTP. Vous pouvez maintenant monter les répertoires du serveur TFTP
directement sur targets
pour déplacer les fichiers requis vers le
serveur TFTP automatiquement pendant l’installation.
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.
Pour d’autres cas vous devrez programmer votre propre installateur de
chargeur d’amorçage qui rende les fichiers nécessaires du dépôt disponibles
à travers TFTP, par exemple en les copiant vers la racine du répertoire de
TFTP pour vos targets
.
Il est important de remarquer que les liens symboliques pointant hors du répertoire racine de TFTP peuvent ne pas être permis par dans configuration de votre serveur TFTP. De plus le lien vers le dépôt expose la totalité de celui-ci à travers TFTP. Ces deux points sont à prendre en compte pour les aspects de sécurité. Nous vous conseillons de désactiver tout accès TFTP en écriture !
Remarquez que ce chargeur d’amorçage ne modifiera pas le « gestionnaire de démarrage UEFI » du système.
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).
Si une partition système EFI (ESP) ou une partition similaire avec un
système de fichiers FAT est montée dans targets
, alors le liens
symboliques ne peuvent pas être créés. Dans ce cas tout sera préparé pour le
démarrage à partir du stockage local, de la même manière que
grub-efi-bootloader
, à la différence que tous les binaires GRUB sont
copiés dans targets
, ce qui est nécessaire pour démarrer depuis le
réseau.
grub-efi-netboot-removable-bootloader
est identique à
grub-efi-netboot-bootloader
en dehors du fait que le sous-répertoire
efi/boot sera utilisé au lieu de efi/Guix pour se conformer
aux spécifications UEFI pour les média amovibles.
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
etgrub-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
.
extra-initrd
(default: #f
)File name of an additional initrd to load during the boot. It may or may not point to a file in the store, but the main use case is for out-of-store files containing secrets.
In order to be able to provide decryption keys for the LUKS device, they need to be available in the initial ram disk. However they cannot be stored inside the usual initrd, since it is stored in the store and being a world-readable (as files in the store are) is not a desired property for a initrd containing decryption keys. You can therefore use this field to instruct GRUB to also load a manually created initrd not stored in the store.
For any use case not involving secrets, you should use regular initrd
(voir initrd
) instead.
Suitable image can be created for example like this:
echo /key-file.bin | cpio -oH newc >/key-file.cpio chmod 0000 /key-file.cpio
After it is created, you can use it in this manner:
;; Operating system with encrypted boot partition (operating-system ... (bootloader (bootloader-configuration (bootloader grub-efi-bootloader) (targets '("/boot/efi")) ;; Load the initrd with a key file (extra-initrd "/key-file.cpio"))) (mapped-devices (list (mapped-device (source (uuid "12345678-1234-1234-1234-123456789abc")) (target "my-root") (type (luks-device-mapping-with-options ;; And use it to unlock the root device #:key-file "/key-file.bin"))))))
Be careful when using this option, since pointing to a file that is not readable by the grub while booting will cause the boot to fail and require a manual edit of the initrd line in the grub menu.
Currently only supported by GRUB.
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.
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.
For example, when running in QEMU it can be useful to use a text-based console (use options --nographic --serial mon:stdio):
'("console=com0")
To use the new and still experimental
rumpdisk
user-level disk driver instead of GNU Mach’s in-kernel IDE driver, set
kernel-arguments
to:
'("noide")
Of course, these options can be combined:
'("console=com0" "noide")
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 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).
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]