systemd-boot (Español)
systemd-boot, anteriormente llamado gummiboot, es un sencillo gestor de arranque UEFI que ejecuta imágenes EFI configuradas. La entrada predeterminada es seleccionada por un patrón configurado (glob) o un menú en pantalla. Se incluye en el paquete systemd, que se instala en un sistema Arch de forma predeterminada.
Es fácil de configurar, pero solo puede iniciar ejecutables EFI, tales como EFISTUB (Español) del kernel de Linux, Intérprete de órdenes de UEFI, GRUB o Windows Boot Manager.
Instalación
Instalar el gestor de arranque EFI
Para instalar el gestor de arranque EFI systemd-boot primero asegúrese de que el sistema haya arrancado en modo UEFI y que las variables de UEFI son accesibles. Esto se puede verificar ejecutando la orden efivar --list
.
Cabe señalar que systemd-boot solo puede cargar el kernel EFISTUB desde la EFI system partition (Español) (ESP). Para mantener el kernel actualizado, es más sencillo y, por lo tanto, mas recomendable montar la ESP en /boot
. Si la ESP no está montada en /boot
, los archivos kernel y de initramfs deben copiarse en dicha ESP. Consulte EFI system partition (Español)#Puntos de montaje alternativos para más detalles.
esp
se usará a lo largo de esta página para indicar el punto de montaje ESP, es decir, /boot
.
Con la ESP montada en esp
, utilice bootctl(1) para instalar systemd-boot en la partición del sistema EFI ejecutando:
# bootctl --path=esp install
Esto copiará el cargador de arranque systemd-boot a la partición EFI: en un sistema de arquitectura x64 los dos binarios idénticos esp/EFI/systemd/systemd-bootx64.efi
y esp/EFI/BOOT/BOOTX64.EFI
se transferirán a la ESP. A continuación, establecerá systemd-boot como la aplicación EFI predeterminada (entrada de arranque predeterminada) cargada por el gestor de arranque EFI («EFI Boot Manager»).
Luego, vaya a la sección #Configuración para agregar entradas de arranque para que systemd-boot funcione correctamente en el momento del arranque.
Actualizar el gestor de arranque EFI
Siempre que haya una nueva versión de systemd-boot, el gestor de arranque debe ser actualizado por el usuario. Esto se puede realizar bien manualmente o bien la actualización se puede activar automáticamente utilizando los hooks de pacman. Los dos enfoques se describen a continuación.
Actualización manual
systemd-boot pueden ser actualizado por systemd-boot. Si el parámetro path
no se especifica, /efi
, /boot
, y /boot/efi
se verifican a su vez.
# bootctl update
Si la ESP está montada en una ubicación diferente, la opción --path=
puede pasar la ruta apropiada. Por ejemplo:
# bootctl --path=esp update
bootctl --path=esp install
.Actualización automática
El paquete systemd-boot-pacman-hookAUR proporciona un hook de pacman para automatizar el proceso de actualización. Al instalar el paquete, este agregará un hook que se ejecutará cada vez que se actualice el paquete systemd.
En otro caso, para replicar lo que hace el paquete systemd-boot-pacman-hook sin instalarlo, coloque el siguiente hook de pacman en el directorio /etc/pacman.d/hooks/
:
/etc/pacman.d/hooks/systemd-boot.hook
[Trigger] Type = Package Operation = Upgrade Target = systemd [Action] Description = Updating systemd-boot When = PostTransaction Exec = /usr/bin/bootctl update
Configuración
Configurar el cargador
La configuración del cargador se coloca en esp/loader/loader.conf
, y está compuesto por las siguientes opciones:
-
default
— entrada por defecto para seleccionar como se define #Añadir entradas al cargador; se da sin el sufijo .conf y se puede utilizar un comodín comoarch-*
;
-
timeout
— tiempo de espera del menú, en segundos. Si este no se ha establecido, el menú solo se muestra cuando se mantiene pulsada la teclaespaciadora
(aunque también funcionan la mayoría de las otras teclas) durante el arranque;
-
editor
— si se quiere activar el editor de los parámetros del kernel o no.yes
(por defecto) es para activar,no
es para desactivar. Dado que el usuario puede añadirinit=/bin/bash
para puentear la contraseña de root y acceder como tal, se recomienda encarecidamente establecer esta opción enno
;
-
auto-entries
— muestra entradas automáticas para Windows, EFI Shell y Default Loader si se configura en1
(default),0
para ocultar;
-
auto-firmware
— muestra la entrada para reiniciar en las configuraciones de firmware UEFI si está configurado en1
(default),0
para ocultar;
-
console-mode
— cambia el modo de consola UEFI:0
para 80x25,1
para 80x50,2
y superior para modos no estándar proporcionado por el firmware del dispositivo, si existe,auto
selecciona un modo adecuado automáticamente,max
para el modo más alto disponible,keep
(default) para el modo de firmware seleccionado.
Consulte el manual de loader.conf para ver la lista completa de opciones.
He aquí un ejemplo de configuración del cargador:
esp/loader/loader.conf
default arch timeout 4 console-mode max editor no
-
default
ytimeout
se pueden cambiar en el menú de inicio y los cambios se almacenarán como variables EFI, sobrescribiendo estas opciones. - Un archivo básico de configuración del cargador se encuentra en
/usr/share/systemd/bootctl/loader.conf
.
Añadir entradas al cargador
bootctl busca elementos del menú de arranque en esp/loader/entries/*.conf
—cada archivo encontrado debe contener exactamente un cargador—. Las opciones posibles son:
-
title
— nombre del sistema operativo. Necesario.
-
version
— versión del kernel, que se muestra solamente cuando existan varias entradas con el mismo título. Opcional.
-
machine-id
— identificador de la máquina desde/etc/machine-id
, que se muestra solamente cuando existan varias entradas con la misma versión y título. Opcional.
-
efi
— programas EFI a iniciar, que se encuentren en la ESP (esp
); por ejemplo,/vmlinuz-linux
. Tanto este parámetro comolinux
(véase a continuación) son necesarios.
-
options
— opciones de línea de órdenes para pasar al programa EFI o los parámetros del kernel. Opcional, pero es necesario al menosinitrd=ruta-a-efi
yroot=dev
para arrancar Linux.
Para el arranque de Linux, también puede usar, en lugar de efi
y options
, la siguiente sintaxis:
-
linux
yinitrd
seguidos de la ruta relativa de los archivos correspondientes en el ESP; por ejemplo/vmlinuz-linux
; esto se traducirá automáticamente aefi path
yoptions initrd=path
—esta sintaxis solo se admite por comodidad y no tiene diferencias en la función—.
Un ejemplo de un archivo de carga para iniciar Arch desde una partición con la etiqueta arch_os y cargar el microcode (Español) de la CPU de Intel sería:
esp/loader/entries/arch.conf
title Arch Linux linux /vmlinuz-linux initrd /intel-ucode.img initrd /initramfs-linux.img options root=LABEL=arch_os rw
bootctl buscará automáticamente para «Windows Boot Manager» (\EFI\Microsoft\Boot\Bootmgfw.efi
), «EFI Shell» (\shellx64.efi
) y «EFI Default Loader» (\EFI\Boot\bootx64.efi
). En caso de detectarlas, las entradas también se generarán automáticamente para ellos. Sin embargo, no autodetecta otras aplicaciones EFI (a diferencia de lo que hace rEFInd), por lo que para arrancar el kernel, deben ser creadas entradas de configuración manualmente.
- Si realiza un arranque dual con Windows, se recomienda encarecidamente que desactive la opción predeterminada [[[Dual boot with Windows#Fast Startup and hibernation|Fast Start-Up]].
- Recuerde cargar el microcódigo de Intel con
initrd
si procede, se proporciona un ejemplo en Microcode (Español)#systemd-boot. - La partición raíz se puede identificar con su
LABEL
oPARTUUID
. Este último se puede encontrar con la ordenblkid -s PARTUUID -o value /dev/sdxY
, dondex
es la letra del dispositivo yY
es el número de partición. Esto es necesario solo para identificar la partición raíz, no la particiónesp
.
- Las entradas de arranque disponibles que se han configurado pueden enumerarse con la orden
bootctl list
. - Un archivo de entrada de ejemplo se encuentra en
/usr/share/systemd/bootctl/arch.conf
. - Los kernel parameters (Español) para escenarios como LVM (Español) o dm-crypt (Español) se pueden encontrar en sus páginas respectivas.
Intérpretes de órdenes de EFI y otras aplicaciones EFI
En el caso de que haya instalado instérpretes de órdenes de EFI u otras aplicaciones EFI dentro de la partición ESP, puede utilizar los siguientes fragmentos:
efi
es relativo a su punto de montaje esp. Si está montada en /boot
y los archivos binarios de EFI residen en /boot/EFI/xx.efi
y /boot/yy.efi
, entonces especifique los parámetros como efi/EFI/xx.efi
y efi/yy.efi
respectivamente.Ejemplos de entradas para los cargadores del intérprete de órdenes de UEFI personalizadas:
esp/loader/entries/uefi-shell-v1-x86_64.conf
title UEFI Shell x86_64 v1 efi /EFI/shellx64_v1.efi
esp/loader/entries/uefi-shell-v2-x86_64.conf
title UEFI Shell x86_64 v2 efi /EFI/shellx64_v2.efi
Arrancar con la configuración del firmware de EFI
La mayoría de los firmware del sistema configurado para el inicio de EFI agregarán sus propias entradas efibootmgr para arrancar en la «Configuración del Firmware de UEFI».
Preparar los kernels para /EFI/Linux
/EFI/Linux busca archivos del kernel especialmente preparados, que agrupan el kernel, el disco RAM de inicio (initrd), la línea de órdenes del kernel y /etc/os-release
en un solo archivo . Este archivo se puede firmar fácilmente para «secure boot».
systemd-boot
requiere que el archivo os-release
contenga bien VERSION_ID
o bien BUILD_ID
para generar una ID y agregar automáticamente la entrada, que el archivo os-release
de Arch no hace. Mantenga su propia copia con uno de ellos o haga que su script de agrupación lo genere automáticamente.Coloque la línea de órdenes del kernel que desea usar en un archivo y cree un archivo de agrupación como este:
Kernel packaging command:
objcopy \ --add-section .osrel="/usr/lib/os-release" --change-section-vma .osrel=0x20000 \ --add-section .cmdline="kernel-command-line.txt" --change-section-vma .cmdline=0x30000 \ --add-section .linux="vmlinuz-file" --change-section-vma .linux=0x40000 \ --add-section .initrd="initrd-file" --change-section-vma .initrd=0x3000000 \ "/usr/lib/systemd/boot/efi/linuxx64.efi.stub" "linux.efi"
Opcionalmente firme el archivo linux.efi
producido anteriormente.
Copie linux.efi
en esp/EFI/Linux
.
Proporcionar soporte para hibernación
Véase Suspend and hibernate.
Proteger con contraseña el editor de parámetros del kernel
Alternativamente, puede instalar systemd-boot-passwordAUR que admite password
como opción de configuración básica. Utilice sbpctl generate
para generar un valor para esta opción.
Instale systemd-boot-password con la siguiente orden:
# sbpctl install esp
Con el editor activado, se le solicitará su contraseña antes de poder editar los parámetros del kernel.
Teclas utilizadas en el menú de arranque
Las siguientes teclas se utilizan dentro del menú:
-
Arriba/Abajo
- selecciona la entrada -
Intro
- arranca la entrada seleccionada -
d
- selecciona la entrada por defecto para arrancar (almacenado en una variable de EFI no volátil) -
-/T
- disminuye el tiempo de espera (almacenado en una variable de EFI no volátil) -
+/t
- aumenta el tiempo de espera (almacenado en una variable de EFI no volátil) -
e
- edita la línea de órdenes del kernel -
v
- muestra la versión de systemd-boot y de UEFI -
Q
- sale -
P
- imprime la configuración actual -
h/?
- ayuda
Las siguientes teclas son de acceso rápido, de modo que cuando se pulsan dentro del menú o durante el arranque, inician directamente una entrada específica:
-
l
- Linux -
w
- Windows -
a
- OS X -
s
- Shell de EFI -
1-9
- número de entrada
Solución de problemas
Instalación después de arrancar en modo BIOS
Si se inicia en el modo BIOS, aún puede instalar systemd-boot, sin embargo, este proceso requiere que le diga al firmware que inicie el archivo EFI de systemd-boot en el arranque, lo cual se puede hacer generalmente de dos maneras:
- tiene un intérprete de órdenes de EFI en funcionamiento en otro lugar;
- su interfaz de firmware proporciona una forma de configurar correctamente el archivo EFI que debe cargarse en el momento del arranque.
Si puede hacerlo, la instalación es más fácil: ingrese en el intérprete de órdenes de EFI o en la interfaz de configuración de su firmware y cambie el archivo EFI predeterminado de su equipo a esp/EFI/systemd/systemd-bootx64.efi
(o systemd-bootia32.efi
dependiendo de si el firmware de su sistema es de 32 bits).
Crear entrada manual utilizando efibootmgr
Si la orden bootctl install
falla, puede crear una entrada de arranque EFI manualmente con la utilidad efibootmgr:
# efibootmgr -c -d /dev/sdX -p Y -l "\EFI\systemd\systemd-bootx64.efi" -L "Linux Boot Manager"
Donde /dev/sdXY
es la EFI system partition (Español).
\
) como separador.El menú no aparece después de actualizar Windows
Véase UEFI#Windows changes boot order.