Arranque híbrido en GNU/Linux: Una guía para la compatibilidad entre BIOS heredado y EFI

1. Introducción​

Hace algunos años los equipos solo utilizaban BIOS con MBR, y no había problemas para utilizar un disco duro con una instalación de GNU/Linux en cualquier hardware compatible. Así, por ejemplo, si fallaba la placa madre de un servidor, solo bastaba con desconectar el disco duro del equipo descompuesto, y luego, conectarlo en otro para que arrancara nuevamente con el mismo sistema, configuraciones y software.

Sin embargo, con la aparición de EFI, el panorama del arranque del sistema cambió significativamente y el intercambio de discos duros con GNU/Linux entre equipos dejó de ser trivial. EFI introdujo mejoras importantes, como una interfaz de firmware más moderna y capacidades adicionales que mejoran la seguridad y la velocidad del arranque. No obstante, también trajo consigo algunos desafíos. Los sistemas operativos instalados en máquinas con BIOS heredada no arrancaban en máquinas que tuviesen EFI, y viceversa.

Se dice que una unidad tiene arranque híbrido cuando el sistema operativo instalado puede arrancar indistintamente en computadoras con BIOS heredado o con EFI, ofreciendo una mayor versatilidad en un entorno moderno donde ambos tipos de firmware coexisten. No debe confundirse el arranque híbrido con el arranque dual, el cual se refiere a la capacidad de seleccionar entre múltiples sistemas operativos instalados en una misma máquina; por ejemplo, cuando se instala GNU/Linux junto a Windows y el usuario selecciona con cuál de ellos trabajará.

Las aplicaciones típicas de unidades con arranque híbrido son:
  • Si se estropea la placa madre de un equipo y no se dispone de un reemplazo; con solo cambiar la unidad que contiene el sistema operativo a otro PC y encenderlo, ya tiene funcionando el sistema nuevamente.
  • Si tiene la necesidad de diagnosticar, reparar, o trabajar en equipos ajenos, utilizando su propio sistema operativo personalizado con sus herramientas de software favoritas, puede arrancar desde una unidad externa, con total independencia del sistema operativo instalado en una unidad interna del PC anfitrión.
El objetivo de esta guía es proporcionar las herramientas y conocimientos necesarios para configurar una unidad de almacenamiento que contenga un sistema operativo GNU/Linux, de manera que pueda utilizarla en cualquier computadora, sin importar si esta utiliza BIOS heredado o EFI. Exploraremos los pasos esenciales para instalar GNU/Linux y configurar el sistema EFI para el arranque híbrido, asegurando así que pueda llevar su entorno de trabajo consigo y arrancar en cualquier máquina compatible, independiente del firmware que posea.

Finalmente, debo agradecer a Last Dragon por su video “Arranque boot híbrido en GNU/Linux en modo efi o bios mbr” del canal de YouTube, “La cueva del último dragón Last Dragon”, en el cual está basada esta guía.

2. Hardware y software utilizado​

Por su puesto que ustedes pueden ocupar el hardware y software que más se acomode a sus circunstancias específicas. Sin embargo, por mi parte empleé:
  • 1 SSD Kingston SA400S37/120G, SATA3 de 120GB de 2.5”
  • 1 cable adaptador USB 3.0 a SATA3
  • 1 memoria USB Kingston DT106 con el LiveUSB de EndeavourOS (Gemini)
  • 1 TOSHIBA Satellite L305-SP6943C, equipado con Procesador Intel® Core™2 Duo T6600, 4GB DDR2-800 DDR2 SDRAM, SSD Kingston SA400S37/120G 120GB con Windows 10, y un HDD de 500GB. La última versión de BIOS de este equipo data del año 2009.
Aunque disponía de discos duros de 2.5” y memorias USB de pocos GB, preferí utilizar un SSD por su mayor velocidad y su capacidad adecuada para contener tanto un sistema operativo completo, como el software de terceros y una partición /home para archivos personales. Si bien, es posible prescindir del adaptador USB 3.0 a SATA3, reemplazando el disco duro original del equipo con el SSD, me era más cómodo utilizar este accesorio para ahorrarme el trabajo de abrir el laptop.

Respecto del software, se podría emplear cualquier distro de GNU/Linux. Yo me incliné por EndevourOS solo por gusto personal y porque soy un maniático del control. Por su parte, Last Dragon ocupó Debian en su video, con mínimas diferencias respecto a los pasos que aquí se seguirán.

Esta guía no abordará la selección, descarga, verificación, ni grabación de la imagen de la distro elegida en una memoria USB, ya que hay infinidad de tutoriales al respecto en YouTube.

3. Instalación de GNU/Linux mediante Calamares​

Debemos trabajar en un equipo con BIOS heredado, y averiguar cuál tecla le permite acceder al menú de arranque en su equipo. Este dato debería estar en el manual del equipo, pero generalmente, por un par de segundos durante el POST se muestra esta información en la parte inferior de la pantalla. Algunas teclas comunes son Esc, F8 y F12, pero no son las únicas posibles. Si es necesario, pruebe las teclas de función una por una, o bien, ingrese al Setup para asignarle la primera prioridad de arranque a los dispositivos USB. Asegúrese que, al momento de arrancar, la memoria USB con el LiveUSB esté efectivamente conectada al equipo.

Una vez que el LiveUSB esté en plana ejecución, conecte la unidad externa donde instalará EndeavourOS a un puerto USB. Si realizará una instalación online, asegúrese de estar conectado a Internet.

En EndeavourOS aparece una ventana de bienvenida en inglés, a la cual se le puede cambiar el idioma para su mayor comodidad. Luego, inicie el instalador. En este caso, se trata de Calamares; uno de los instaladores de sistema más populares y sencillos que hay en la actualidad.

Bienvenida.jpg

Deberá optar entre una instalación online u offline. El primer método le permite elegir entre distintos entornos de escritorio y afinar en detalle la selección de paquetes que se instalarán, pero requiere estar conectado a Internet. El método offline instalará el escritorio KDE, no le permite seleccionar los paquetes a instalar y no requiere de Internet. Yo escogí el método Online, para instalar el entorno de escritorio Xfce y tener el control sobre la instalación de paquetes.

1721420741409.png

La instalación de EndeavourOS se realiza en los siguientes 10 pasos:

1. Ubicación. Elija el idioma, la región y el huso horario que le corresponda.
2. Teclado. Seleccione la distribución de su teclado.
3. Escritorio. Escoja uno de los entornos de escritorio según sus gustos y necesidades.
4. Paquetes. Aparece un resumen de los paquetes a instalar y le entrega la posibilidad de afinar la selección predeterminada según desee. Es muy recomendable, que no haga cambios, a menos que sepa exactamente lo que está haciendo.
5. Cargador de arranque. Para crear un arranque híbrido seleccionamos Grub Bootloader.
6. Particiones.
a. Tipo de particionado. Debe escoger Particionado manual.
b. Dispositivo de almacenamiento. Elija el dispositivo de almacenamiento donde instalará EndeavourOS. Mi selección fue el SSD, KINGSTON SA400S37120G – 111.79GiB (/dev/sdc).
c. Tabla de particiones. Cree una Nueva tabla de particiones, del tipo Tabla de particiones GUID (GPT). Esto borrará por completo la unidad.

1721421567200.jpeg


d. Creación de las particiones. Es fundamental crear una primera partición de arranque compatible con BIOS, seguida de una partición para los archivos EFI, y al menos, una partición para el sistema operativo. A continuación, se muestra una tabla con los detalles de las particiones. Recuerde que, para crear una partición siempre debe comenzar por seleccionar el espacio libre.

ParticiónTamañoSistema de archivosPunto de montajeEtiqueta del sistema de archivosIndicadores
sdc18 MiBUnformattedbios-grub
sdc250 MiBfat32EFImsft-data
sdc355 Gibext4/EndeavourOS
sdc4Resto de espacioext4/homeHome


NOTAS:
  • La primera partición es de 8 MiB, por una exigencia de EndeavourOS. Sin embargo, en algunas distros el tamaño mínimo de puede ser, inclusive, de 1 MiB.
  • La segunda partición me funcionó bien con 50 MiB, aunque existe mucha documentación que recomienda tamaños entre 100-550 MiB.
  • Por seguridad, se recomienda cifrar las particiones de / y /home. Y si lo hace, en lugar de ext4, verá LUKS.
  • La cuarta partición, destinada a contener archivos personales, es opcional.
  • Si lo desea puede agregar más particiones. Entre ellas, una partición de intercambio (swap), pero por versatilidad, preferí un archivo de intercambio.

e. Seleccionar el dispositivo en que instalar el gestor de arranque. En Instalar el gestor de arranque en: Elija el dispositivo de almacenamiento donde instalará EndeavourOS. Mi selección fue Registro de arranque principal (MBR) de KINGSTON SA400S37120G – 111.79GiB (/dev/sdc).

Particiones.jpg


f. Comprobar la configuración de GPT en BIOS. Una vez listo lo anterior, presione Siguiente y aparecerá un mensaje explicándole cómo debe estar correctamente configurado el uso de GPT en BIOS.


Screenshot_20240705_174729.png
7. Usuarios. Ingrese los datos del usuario y del equipo. Para una mayor seguridad, quite la marca de Utilizar la misma contraseña para la cuenta de administrador; así podrá establecer contraseñas distintas para su cuenta de usuario y para la cuenta de administrador.
8. Resumen. Presenta un resumen de los cambios que se harán durante el proceso de instalación.
9. Instalar. Se realizan todos los cambios elegidos con anterioridad. Esto demora varios minutos.
10. Terminar. Solicita que se efectúe un para que todos los cambios tomen efecto, dando con ello término a la instalación.

Ahora, la unidad SSD está en condiciones de arrancar desde cualquier equipo con BIOS heredado.

4. Configurar el sistema EFI​

Como la unidad SSD usa una tabla de particiones GPT, configuraremos la partición EFI para hacer creer al sistema que fue instalado en un equipo con EFI.

4.1. Asegurarse de tener instalados los paquetes necesarios​

En EndeavourOS y otros derivados de Arch Linux, necesitará tener instalados los paquetes grub y dosfstools. Consulte si están instalados, mediante el comando.
Código:
$ pacman -Qs nombre_del_paquete

Si el paquete está instalado, se indicará la versión instalada y una breve descripción. De no ser así, no obtendrá respuesta y tendrá que instalarlo ejecutando la orden siguiente con privilegios de superusuario.
Código:
# pacman -S nombre_del_paquete1nombre_del_paquete2 ...

NOTA: En Debian y sus derivados, necesitará tener instalados los paquetes grub-efi y dosfstools.

4.2. Montar la partición EFI​

Debemos montar la partición EFI en el directorio /boot/efi. Para ello nos movemos al directorio boot usando,
Código:
$ cd /boot/

Aquí, usando privilegios de superusuario, creamos el directorio efi con
Código:
# mkdir efi

Hay que agregar la partición EFI en el archivo fstab para que se monte automáticamente al iniciar el sistema. Para ello necesitaremos conocer el identificador UUID de la partición EFI; el cual obtendremos con
Código:
# blkid

La salida de esto arrojará algo similar a
Código:
/dev/sda2: LABEL="Windows" BLOCK_SIZE="512" UUID="A6AA5781AA574CC5" TYPE="ntfs" PARTUUID="cbd55eac-02"
/dev/sda3: LABEL="Windows RE tools" BLOCK_SIZE="512" UUID="7E1AD32C1AD2DFE7" TYPE="ntfs" PARTUUID="cbd55eac-03"
/dev/sda1: LABEL="Reservado para el sistema" BLOCK_SIZE="512" UUID="2EA05175A051448D" TYPE="ntfs" PARTUUID="cbd55eac-01"
/dev/sdb1: LABEL="Usuarios" BLOCK_SIZE="512" UUID="3EB0870CB086C9BB" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="0383bff7-3461-47b7-ad4c-ffbfad985068"
/dev/sdc2: UUID="34A6-3DA9" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="91e45cca-a451-44fa-9af8-419d6a3825c8"
/dev/sdc3: LABEL="EndeavourOS" UUID="25d107c4-7ec0-47ce-ac61-ee3accd15aea" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="82b77a0b-a871-41a4-8e60-04411e97d9e4"
/dev/sdc4: LABEL="Home" UUID="3e8695cc-777a-4d8e-95e0-45d5e94b74b1" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="66b5cecc-c3e7-42bc-a2aa-c66c6b98f7b8"

La cadena de texto que nos interesa es UUID="34A6-3DA9". Desde la terminal y continuando con privilegios de superusuario, abrimos el archivo /etc/fstab con en nuestro editor de texto favorito; en mi caso uso mousepad.
Código:
# mousepad /etc/fstab

Nos posicionamos bajo la última línea que comienza por #, y agregamos una que contenga: UUID=34A6-3DA9 /boot/efi vfat defaults 0 0. Note que el UUID no va entre comillas. Guarde los cambios. Pero para que estos tomen efecto, tendrá que recargar el archivo fstab modificado. Esto se hace con:
Código:
# systemctl daemon-reload

Después, monte la partición EFI con:
Código:
# mount efi

Opcionalmente, puede revisar que la partición haya sido montada correctamente con el comando
Código:
# df

El cual mostrará un listado con todos los sistemas de archivos montados. Busque el /dev/sdc2, que debe estar Montado en /boot/efi.

4.3. Instalar GRUB en EFI​

Finalmente, hay que instalar GRUB en un sistema EFI y en un dispositivo extraíble con:
Código:
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable --recheck /dev/sdc

Ahora el arranque híbrido está listo y podrá arrancar este sistema operativo indistintamente en máquinas con BIOS heredado o EFI.
 
Última modificación:
Subir