Next: Invoking guix system
, Previous: Disco en RAM inicial, Up: Configuración del sistema [Contents][Index]
El sistema operativo permite varios cargadores de arranque. El cargador de
arranque se configura mediante el uso de la declaración
bootloader-configuration
. Todos los campos de esta estructura son
independientes del cargador de arranque excepto uno, bootloader
, que
indica el cargador de arranque a configurar e instalar.
Algunos de los cargadores de arranque no inspeccionan todos los campos de
bootloader-configuration
. Por ejemplo, el cargador de arranque
extlinux no permite temas y por lo tanto ignora el campo theme
.
El tipo de una declaración de configuración del cargador de arranque.
bootloader
¶The bootloader to use, as a bootloader
object. For now
grub-bootloader
, grub-efi-bootloader
,
grub-efi-removable-bootloader
, grub-efi-netboot-bootloader
,
grub-efi-netboot-removable-bootloader
, extlinux-bootloader
and
u-boot-bootloader
are supported.
Los cargadores de arranque se describen en los módulos (gnu bootloader
…)
. En particular, (gnu bootloader u-boot)
contiene
definiciones de cargadores de arranque para un amplio rango de sistemas ARM
y AArch64, mediante el uso del cargador de arranque U-Boot.
grub-bootloader
permite el arranque en máquinas basadas en Intel en
modo “antiguo” BIOS.
grub-efi-bootloader
permite el arranque en sistemas modernos que usan
la interfaz extendida de firmware unificada (UEFI). Es el que debería
ser usado si la imagen de instalación contiene un directorio
/sys/firmware/efi cuando la arranca en su sistema.
grub-efi-removable-bootloader
allows you to boot your system from
removable media by writing the GRUB file to the UEFI-specification location
of /EFI/BOOT/BOOTX64.efi of the boot directory, usually
/boot/efi. This is also useful for some UEFI firmwares that
“forget” their configuration from their non-volatile storage. Like
grub-efi-bootloader
, this can only be used if the
/sys/firmware/efi directory is available.
Nota: This will overwrite the GRUB file from any other operating systems that also place their GRUB file in the UEFI-specification location; making them unbootable.
grub-efi-netboot-bootloader
allows you to boot your system over
network through TFTP. In combination with an NFS root file system this
allows you to build a diskless Guix system.
The installation of the grub-efi-netboot-bootloader
generates the
content of the TFTP root directory at targets
(see targets
) below the sub-directory efi/Guix, 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 during installation.
Si tiene pensado usar también un sistema de archivos raíz NFS (en realidad
si monta el almacén desde un directorio compartido con NFS) el servidor TFTP
también debe proporcionar el archivo /boot/grub/grub.cfg y otros
archivos desde el almacén (como las imágenes de fondo de GRUB, el núcleo
(see kernel
) y el disco en RAM para
el arranque (see initrd
)). GRUB
accederá a todos estos archivos del almacén a través de TFTP con su ruta del
almacén habitual, como por ejemplo
tftp://tftp-server/gnu/store/…-initrd/initrd.cpio.gz.
Two symlinks are created to make this possible. For each target in the
targets
field, the first symlink is
‘target’/efi/Guix/boot/grub/grub.cfg pointing to
../../../boot/grub/grub.cfg, where ‘target’ may be
/boot. In this case the link is not leaving the served TFTP root
directory, but otherwise it does. The second link is
‘target’/gnu/store and points to ../gnu/store. This link
is leaving the served TFTP root directory.
The assumption behind all this is that you have an NFS server exporting the
root file system for your Guix system, and additionally a TFTP server
exporting your targets
directories—usually a single /boot—from
that same root file system for your Guix system. In this constellation the
symlinks will work.
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 for 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. It is advised to disable any TFTP write access!
Please note, that this bootloader will not modify the ‘UEFI Boot Manager’ of the system.
Además de lo expresado anteriormente—grub-efi-netboot-bootloader
,
los servidores TFTP y NFS—también necesitará un servidor DHCP configurado
correctamente para hacer posible el arranque a través de la red. Para esto
únicamente podemos recomendarle por el momento que busque información sobre
PXE (Preboot eXecution Environment).
If a local EFI System Partition (ESP) or a similar partition with a FAT file
system is mounted in targets
, then symlinks cannot be created. In
this case everything will be prepared for booting from local storage,
matching the behavior of grub-efi-bootloader
, with the difference
that all GRUB binaries are copied to targets
, necessary for booting
over the network.
grub-efi-netboot-removable-bootloader
is identical to
grub-efi-netboot-bootloader
with the exception that the sub-directory
efi/boot will be used instead of efi/Guix to comply with the
UEFI specification for removable media.
Nota: This will overwrite the GRUB file from any other operating systems that also place their GRUB file in the UEFI-specification location; making them unbootable.
targets
This is a list of strings denoting the targets onto which to install the bootloader.
The interpretation of targets depends on the bootloader in question. For
grub-bootloader
, for example, they should be device names understood
by the bootloader installer
command, such as /dev/sda
or
(hd0)
(see Invoking grub-install in GNU GRUB Manual). For
grub-efi-bootloader
and grub-efi-removable-bootloader
they
should be mount points of the EFI file system, usually /boot/efi.
For grub-efi-netboot-bootloader
, targets
should be the mount
points corresponding to TFTP root directories served by your TFTP server.
menu-entries
(predeterminadas: '()
)Una lista posiblemente vacía de objetos menu-entry
(véase a
continuación), que indican entradas que deben aparecer en el menú del
cargador de arranque, además de la entrada del sistema actual y la entrada
que apunta a generaciones previas del sistema.
default-entry
(predeterminada: 0
)El índice de la entrada del menú de arranque por omisión. El índice 0 es para la entrada del sistema actual.
timeout
(predeterminado: 5
)El número de segundos que se esperará entrada por el teclado antes de arrancar. El valor 0 indica que se debe arrancar de forma inmediata, y -1 que se debe esperar indefinidamente.
keyboard-layout
(predeterminada: #f
)Si es #f
, el menú del cargador de arranque (si existe) usa la
distribución de teclado predeterminada, habitualmente inglés estadounidense
(“qwerty”).
En otro caso, debe ser un objeto keyboard-layout
(see Distribución de teclado).
Nota: Esta opción se ignora actualmente por todos los cargadores de arranque menos
grub
ygrub-efi
.
theme
(predeterminado: #f)El objeto del tema del cargador de arranque que describe el tema usado. Si no se proporciona ningún tema, algunos cargadores de arranque pueden usar un tema por omisión, lo cual es cierto en GRUB.
terminal-outputs
(predeterminadas: '(gfxterm)
)Los terminales de salida que se usarán para el menú de arranque, como una
lista de símbolos. GRUB acepta los valores: console
, serial
,
serial_{0-3}
, gfxterm
, vga_text
, mda_text
,
morse
y pkmodem
. Este campo corresponde con la variable
GRUB_TERMINAL_OUTPUT
(see Simple configuration in GNU GRUB
manual).
terminal-inputs
(predeterminadas: '()
)Los terminales de entrada que se usarán para el menú de arranque, como una
lista de símbolos. Para GRUB, el valor predeterminado es el terminal nativo
de la plataforma determinado en tiempo de ejecución. GRUB acepta los
valores: console
, serial
, serial{0-3}
,
at_keyboard
y usb_keyboard
. Este campo corresponde a la
variable GRUB GRUB_TERMINAL_INPUT
(see Simple configuration in GNU GRUB manual).
serial-unit
(predeterminada: #f
)La unidad serie usada por el cargador de arranque, como un entero del 0 al 3. Para GRUB, se selecciona en tiempo de ejecución; actualmente GRUB selecciona 0 lo que corresponde a COM1 (see Serial terminal in GNU GRUB manual).
serial-speed
(predeterminada: #f
)La velocidad de la interfaz serie, como un entero. Para GRUB, el valor predeterminado se selecciona en tiempo de ejecución, actualmente GRUB selecciona 9600 bps (see Serial terminal in GNU GRUB manual).
device-tree-support?
(default: #t
)Whether to support Linux device tree files loading.
This option in enabled by default. In some cases involving the
u-boot
bootloader, where the device tree has already been loaded in
RAM, it can be handy to disable the option by setting it to #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
(see 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 desease listar entradas adicionales para el menú de arranque a través del
campo menu-entries
mostrado previamente, deberá crearlas con la forma
menu-entry
. Por ejemplo, imagine que desea ser capaz de arrancar otra
distribución (¡difícil de imaginar!), puede definir una entrada de menú de
esta forma:
(menu-entry
(label "La otra distribución")
(linux "/boot/old/vmlinux-2.6.32")
(linux-arguments '("root=/dev/sda2"))
(initrd "/boot/old/initrd"))
Los detalles se encuentran a continuación.
El tipo de una entrada en el menú del cargador de arranque.
label
La etiqueta a mostrar en el menú—por ejemplo, "GNU"
.
linux
(predeterminado: #f
)La imagen del núcleo Linux a arrancar, por ejemplo:
(file-append linux-libre "/bzImage")
Con GRUB, también es posible especificar un dispositivo explícitamente mediante el uso de la convención de nombres de dispositivo de GRUB (see Naming convention in GNU GRUB manual), por ejemplo:
"(hd0,msdos1)/boot/vmlinuz"
Si se especifica el dispositivo explícitamente como en el ejemplo anterior,
el campo device
se ignora completamente.
linux-arguments
(predeterminados: '()
)La lista de parámetros extra de línea de órdenes para el núcleo Linux—por
ejemplo, '("console=ttyS0")
.
initrd
(predeterminado: #f
)Una expresión-G o una cadena que contiene el nombre de archivo del disco inicial en RAM usado (see Expresiones-G).
device
(predeterminado: #f
)El dispositivo donde se encuentran el núcleo y el initrd—es decir, para GRUB, raíz de esta entrada de menú (see root in GNU GRUB manual).
Puede ser una etiqueta de sistema de archivos (una cadena), un UUID de
sistema de archivos (un vector de bytes, see Sistemas de archivos), o #f
,
en cuyo caso el cargador de arranque buscará el dispositivo que contenga el
archivo especificado por el campo linux
(see search in GNU
GRUB manual). No debe ser un nombre de dispositivo del SO como
/dev/sda1.
multiboot-kernel
(predeterminado: #f
)El núcleo a arrancar en modo Multiboot (see multiboot in GNU GRUB manual). Cuando se proporciona este campo, se genera una entrada Multiboot en el menú. Por ejemplo:
(file-append mach "/boot/gnumach")
multiboot-arguments
(predeterminados: '()
)Lista de parámetros adicionales que se proporcionan al núcleo Multiboot en la línea de órdenes.
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
(predeterminados: '()
)Lista de ordenes para cargar módulos de Multiboot. Por ejemplo:
(list (list (file-append hurd "/hurd/ext2fs.static") "ext2fs"
…)
(list (file-append libc "/lib/ld.so.1") "exec"
…))
chain-loader
(default: #f
)A string that can be accepted by grub
’s chainloader
directive. This has no effect if either linux
or
multiboot-kernel
fields are specified. The following is an example of
chainloading a different GNU/Linux system.
(bootloader
(bootloader-configuration
;; …
(menu-entries
(list
(menu-entry
(label "GNU/Linux")
(device (uuid "1C31-A17C" 'fat))
(chain-loader "/EFI/GNULinux/grubx64.efi"))))))
De momento únicamente GRUB permite el uso de temas. Los temas de GRUB se
crean mediante el uso de grub-theme
, todavía no documentado
completamente.
Tipo de datos que representa la configuración de un tema de GRUB.
gfxmode
(predeterminado: '("auto")
)El modo gráfico gfxmode
de GRUB configurado (una lista de cadenas con
resoluciones de pantalla, see gfxmode in GNU GRUB manual).
Devuelve el tema predeterminado de GRUB que usa el sistema operativo si no
se especifica el campo theme
en el registro
bootloader-configuration
.
Viene con una bonita imagen de fondo que muestra los logos de GNU y Guix.
Por ejemplo, para usar una resolución distinta de la predeterminada, puede usar algo como esto:
(bootloader
(bootloader-configuration
;; …
(theme (grub-theme
(inherit (grub-theme))
(gfxmode '("1024x786x32" "auto"))))))
Next: Invoking guix system
, Previous: Disco en RAM inicial, Up: Configuración del sistema [Contents][Index]