Saltar a contenido

Systemd Boot

En la presente práctica vamos a valorar la posibilidad de cambiar el tradicional gestor de arranque grub por systemd boot.


  1. Valora las ventajas y desventajas de este cambio.

  2. Indica que versiones basadas en GNU/Linux están adoptando a systemd boot como gestor de arranque por defecto.

  3. En máquina virtual basada en Debian 12, sustituye el gestor de arranque grub por systemd boot, en el menú de arranque deberá aparecer las siguientes opciones:

    • Arranque de debian 12.
    • Acceso a Firmware de la máquina virtual.
    • Acceso a la shell EFI.

1. Ventajas y desventajas

Systemd-boot:

Ventajas

Simplicidad y Ligereza:
Systemd-boot es conocido por ser más ligero y simple en comparación con GRUB. Su diseño minimalista puede resultar en tiempos de arranque más rápidos y menor uso de recursos.

Integración con Systemd:
systemd-boot está diseñado para integrarse estrechamente con systemd, lo que puede facilitar la configuración y la administración del sistema, especialmente en entornos donde systemd se utiliza de manera integral.

Arranque Rápido:
systemd-boot tiende a tener tiempos de arranque más rápidos en comparación con GRUB. Esto puede ser beneficioso para aquellos que valoran un arranque rápido del sistema.

Desventajas

Menos Flexibilidad:
systemd-boot es más simple y puede carecer de algunas características avanzadas que ofrece GRUB. Podría ser menos versátil para usuarios que necesitan una configuración altamente personalizada. Además este solo trabaja con sistemas EFI

Compatibilidad con Sistemas Múltiples:
GRUB es conocido por gestionar múltiples sistemas operativos en un solo menú de arranque, mientras que systemd-boot puede requerir configuración manual adicional para manejar sistemas operativos múltiples.

GRUB:

Ventajas

Gestión de Arranque Multisistema:
GRUB es conocido por su capacidad para gestionar múltiples sistemas operativos en un solo menú de arranque. Es útil en sistemas con instalaciones duales o múltiples sistemas operativos.

Configuración Avanzada:
GRUB ofrece opciones de configuración avanzadas que permiten a los usuarios personalizar detalladamente el proceso de arranque. Esto es beneficioso para aquellos que necesitan un control preciso sobre la configuración del arranque.

Desventajas

Complejidad para Usuarios Novatos:
La configuración avanzada de GRUB puede resultar complicada para usuarios novatos. Aquellos no familiarizados con la edición manual de archivos de configuración pueden encontrar que GRUB es menos accesible.

Tiempo de Arranque Prolongado:
En comparación con gestores de arranque más ligeros como systemd-boot, GRUB puede tener tiempos de arranque más prolongados.

La elección entre systemd-boot y GRUB dependerá de las necesidades y preferencias específicas del usuario. Si se busca simplicidad y ligereza, systemd-boot puede ser una opción adecuada. Si se necesitan funciones avanzadas y una gestión más compleja, GRUB podría ser la elección preferida.

2. Versiones de GNU/Linux que están usando systemd boot como gestor de arranque por defecto

En mayo de 2011, Fedora se convirtió en la primera distribución principal de Linux en habilitar systemd por defecto.15​

Distribuciones en las que systemd está habilitado de forma predeterminada:

  • Arch Linux, Clear Linux, Pop!_Os, Fedora y Antergos.

3. Migración de Grub a SystemdBoot

Para hacer la migración del gestor de arranque grub a systemd-boot estaré usando una maquina virtual con Debian 12.

Tenemos el siguiente esquema de particiones:

fabio@systemd:~$ lsblk -f
NAME FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sr0                                                                         
vda                                                                         
├─vda1
│    vfat   FAT32       48CD-4327                             422,9M    17% /boot/efi
├─vda2
│    ext4   1.0         bb1ecc0e-1c27-4914-bc85-65c16534b488   10,8G    13% /
└─vda3
     swap   1           42b06512-4b1f-468c-968c-23a8b87c89b6                [SWAP]
fabio@systemd:~$ 

Como podemos comprobar,el sistema ha arrancado mediante grub, ya que tiene su partición correspondiente /boot/efi. Para hacer la instalación de SystemdBoot es importante que la partición de arranque se encuentre en formato vfat, ya que SystemdBoot no reconoce otro sistema de de ficheros.

Empezaremos instalando el paquete que contiene todos los binarios que usaremos para el cambio:

sudo apt install systemd-boot

Después de esto, podremos comprobar que en nuestro directorio /boot se han creado diferentes archivos, los que nos interesan para esta práctica se encuentran dentro de /boot/efi/loader:

ficheros

A continuación ejecutaremos el siguiente comando:

sudo bootctl install

Este comando instalará el cargador de inicialización de SystemdBoot.

Vamos a editar el fichero loader.conf el cual se encuentra en el directorio que hemos comentado antes. En este fichero definimos las opciones de arranque del cargador. Habrá que insertar el siguiente contenido:

root@systemd:/boot/efi/loader# cat loader.conf 
timeout 3
console-mode keep
editor yes
default debian.conf

Podemos comprobar que hemos especificado el fichero debian.conf, este fichero habrá que crearlo manualmente a continuación y será nuestra entrada por defecto. Todas las entradas del cargador de arranque serán definidas en el directorio /boot/efi/loader/entries como ficheros .conf

El fichero debian.conf que crearé contiene lo siguiente:

root@systemd:/boot/efi/loader/entries# cat debian.conf 
title Debian fabio
linux      /8840d60ae04a4d0e8e5670011af9c744/6.1.0-17-amd64/linux
initrd     /8840d60ae04a4d0e8e5670011af9c744/6.1.0-17-amd64/initrd.img-6.1.0-17-amd64
options root=UUID=bb1ecc0e-1c27-4914-bc85-65c16534b488 rw
  • Title: Título de la entrada que veremos en el arranque.
  • Linux: Ruta de la imagen del kernel que vamos a iniciar, partiendo del directorio /boot/efi.
  • Initrd: Ruta de la imagen initrd que vamos a iniciar, partiendo del directorio /boot/efi.
  • Options: Partición raíz que se montará. En esta debemos especificar el UUID de la partición (Podemos obtenerlo con el comando blkid). Aquí también podemos definir las opciones de montaje, en mi caso rw, para lectura y escritura.

También crearé otra entrada para la Shell EFI:

root@systemd:/boot/efi/loader/entries# cat shellefi.conf 
title EFI Shell
efi /EFI/shellx64.efi

El firmware shellx64.efi podemos descargarlo desde este enlace e instalarlo con dpkg -i

Una vez hecho eso debemos desactivar el Secure Boot, podemos hacerlo desde la BIOS o bien ejecutando el comando:

sudo mokutil --disable-validation

Una vez hecho esto, actualizaremos el gestor de arranque SystemdBoot:

sudo bootctl update

Como último paso, podemos comprobar el orden de arranque con efibootmgr

root@systemd:~# efibootmgr 
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,0004,0002,0000,0003
Boot0000* UiApp
Boot0001* Linux Boot Manager
Boot0002* UEFI Misc Device
Boot0003* EFI Internal Shell
Boot0004* debian
root@systemd:~# 

El primero debe ser Linux Boot Manager, podemos cambiar el orden con efibootmgr -o XXXX

Podemos opcionalmente desintalar grub, aunque yo no lo haré en esta ocasión. Finalmente reiniciamos el equipo y comprobamos que arranca con SystemdBoot:

ficheros

Podemos comprobar que aparecen las entradas definidas y accedemos a:

  • Shell EFI.

ficheros

  • Firmware de la máquina virtual.

ficheros

  • Sistema.

ficheros

Podemos hacer cambios en el sistema, ya que está montado como lectura y escritura.