I - Intro

La primera vez que instalé con éxito Linux, recuerdo pensar “¿Qué es ese GRUB que sale siempre?” Aunque…lo más común era leer mensajes de error porque rompía cosas del sistema =)

Aprendí mucho probando el famoso “dual boot”. Por supuesto que el primer intento fue fallido porque…sí, adivinaron: instalé primero Linux y luego Windows. Técnicamente es posible configurar el bootloader de Windows para que sea compatible y lea la partición de Linux, pero extremadamente complejo y propenso a errores. Es por eso que siempre se recomienda instalar primero Windows y luego Linux. Grub en este sentido es más flexible y no requiere configuración adicional. Lección aprendida.

Si querés saber más acerca de qué procesos intervienen y qué función cumplen en el inicio de un sistema operativo, seguí leyendo.

II - Bootloader | Cargador de Arranque

¿Qué es? Es el primer programa que se ejecuta luego del POST y el firmware y su responsabilidad es iniciar el proceso de arranque del Sistema Operativo.

Lo hace cargando la imagen del Kernel y la imagen del disco RAM inicial del sistema elegido (initramfs o initrd) en la memoria RAM.

Es posible que un bootloader | cargador de arranque contenga también un menú inicial con alternativas de inicio del sistema (opciones y otros “modos de inicio”), como así también otros SOs (sistemas operativos) que puedan estar instalados. Este menú suele ser llamado Boot Manager | Gestor/Administrador de Arranque.

Es importante diferenciar entre bootloader y bootmanager ya que no todos los bootloaders son bootmanagers, ni todos los bootmanagers son bootloaders. En ese caso, es viable utilizar determinado bootloader y un bootmanager distinto.

El bootloader se ubica usualmente en uno de los discos y, si bien hay distintos tipos, suelen almacenarse en :

  • MBR Master Boot Record: alojado en el primer sector, el sector 0 del disco. Usado en los sistemas tradicionales con firmware BIOS | Basic Input Output System.

  • EFI Extensible Firmware Interface: alojado en una partición EFI dedicada del tipo FAT32. Utilizado en los sistemas modernos desde hace años con firmware UEFI | Unified Extensible Firmware Interface y esquema de particionado GPT.

Ejemplo de un entorno Fedora 42 donde se ve la partición EFI con formato FAT32:

sudo lsblk -f
proyectoleeti@fedora42:~$ sudo lsblk -f
NAME      FSTYPE FSVER LABEL    UUID      FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1                                                   
├─nvme0n1p1 vfat   FAT32          A1B2-C3D4   580M     3% /boot/efi
├─nvme0n1p2 ext4   1.0            2f8a9b1c-...  890M    12% /boot
└─nvme0n1p3 btrfs        fedora42 8c4d2a5f-... 420G    65% /    

Hay muchos y distintos tipos de bootloaders, según la arquitectura del hardware, nombrando sólo algunos pocos:

  • GRUB GRand Unified Bootloader el más común en los sistemas Linux.

  • Das U-Boot usado en sistemas embebidos como routers, e-books.

  • ISOLINUX utilizado principalmente en medios extraíbles.

En la siguiente galería de imágenes, GRUB muestra múltiples opciones:

  • Ubuntu Cargar el SO Ubuntu, la versión instalada es la 25.04.

  • Advanced options for Ubuntu Opciones de inicio avanzadas para Ubuntu, por ejemplo si hay más de una versión instalada del Kernel o el recovery mode útil durante un mantenimiento o falla.

  • Memory test (memtest86+64.efi) Herramienta para diagnosticar la RAM.

  • Memory test (memtest86+64.efi, serial console) La misma opción anterior, pero con salida a puerto consola (mayormente utilizada en servidores).

  • Windows Boot Manager (on /dev/sda1) Carga el boot manager de Windows, si aparece esta opción es porque hay al menos una instalación de Windows disponible. En este caso es Windows 11.

  • UEFI Firmware Settings Ingresa en la configuración adicional del firmware de UEFI.

    GRUB: menú inicial GRUB: opciones del OS

Resumen visual paso a paso:

Resumen visual paso a paso.

III - Linux Kernel and initramfs

El bootloader se encarga de cargar la imagen del kernel elegido y el initramfs/initrden la memoria RAM. Luego le cede el control al Kernel.

El kernel usualmente está comprimido y el primer paso es descomprimirse a sí mismo, y luego realizar un chequeo básico del hardware.

Tras el chequeo, ejecuta el initial RAM disk que puede ser initramfs o initrd. Durante este paso se monta un sistema de archivos mínimo y temporal con drivers del hardware, dispositivos y red necesarios para iniciar el sistema.

Una vez cargados estos drivers, se desmonta y descarta el initial RAM disky el Kernel monta el filesystem real.

Un kernel puede ser desarrollado y utilizado en distintos sistemas Linux, mientras que el initramfs se reconstruye y configura cada vez que un sistema es instalado o tiene una actualización o reconfiguración del Kernel, ya que contiene los drivers y configuraciones del hardware específicos.

Resumen visual paso a paso:

Resumen visual paso a paso.

🐧 ¿Eso es todo?

Claro que no ;) este es un primer post de una serie de tres. En el próximo te cuento sobre Init, Servicios, Systemd, Systemctl…y luego terminamos la serie con un lab que abarcará estos tres posts y más.

Hasta el siguiente post! 🐧