Cómo personalizar la pantalla de arranque para Raspberry Pi 5

Muchos usuarios de Raspberry Pi desean una experiencia de arranque limpia y profesional en lugar de ver largos registros del kernel y mensajes del sistema.

Aunque herramientas como fbi (visor de imágenes en framebuffer) son frecuentemente recomendadas por la comunidad, tienen una limitación fundamental: el dispositivo de framebuffer /dev/fb0 no está disponible antes de que los servicios del sistema comiencen. Por lo tanto, no pueden mostrar imágenes lo suficientemente temprano durante el proceso de arranque.

Esta guía presenta un método confiable usando Plymouth para mostrar una pantalla de bienvenida personalizada desde las primeras etapas del arranque.


Fase 1: Silenciar la salida del kernel

Durante el arranque, los registros del kernel aparecen en pantalla e interfieren con la visualización de la pantalla personalizada.

Agrega los siguientes parámetros a la línea de comando de arranque:

sudo sed -i '$s/$/ logo.nologo quiet loglevel=0/' /boot/firmware/cmdline.txt

Explicación de los parámetros:

  • logo.nologo
    Elimina el logotipo de Raspberry Pi (o el logotipo de la distribución) de la esquina superior izquierda.

  • quiet
    Reduce la cantidad de mensajes generados por el kernel.

  • loglevel=0
    Solo muestra mensajes de emergencia, haciendo que el kernel sea prácticamente silencioso.

:warning: Importante:

El archivo cmdline.txt debe permanecer como una sola línea, con los parámetros separados por espacios. Un formato incorrecto podría impedir que el sistema arranque.


Ocultar el cursor parpadeante

Incluso después de silenciar la salida del kernel, algunos sistemas aún pueden mostrar un cursor parpadeante en la terminal.

Agrega el siguiente parámetro al final de la misma línea:

vt.global_cursor_default=0

Fase 2: Preparar los recursos de arranque

Optimización de la imagen

Especificaciones recomendadas:

  • Formato: PNG o JPG (se recomienda PNG para transparencias)
  • Resolución: ≤ 1920×1080
  • Paleta de colores: ≤ 224 colores (mejora la velocidad de carga)
  • Nombre del archivo: splash.png

Coloca la imagen en:

/boot/splash.png

Esta ubicación permite que el kernel acceda a ella durante las primeras fases del arranque.


Verificar la configuración del controlador de pantalla

Asegúrate de que el controlador de pantalla correcto esté habilitado en:

/boot/firmware/config.txt

Configuración de ejemplo:

dtparam=vc4-kms-v3d

Evita parámetros que puedan provocar una reinicialización HDMI, como:

hdmi_force_hotplug=1

Fase 3: Implementar el sistema de temas de Plymouth

1. Instalar paquetes necesarios

sudo apt update
sudo apt install plymouth plymouth-themes -y

2. Crear un tema mínimo

Crea un directorio para el tema:

sudo mkdir -p /usr/share/plymouth/themes/silent

Crea el archivo de configuración del tema:

/usr/share/plymouth/themes/silent/silent.plymouth
[Plymouth Theme]
Name=silent
Description=Pantalla de bienvenida estática
ModuleName=script

[script]
ImageDir=/usr/share/plymouth/themes/silent
ScriptFile=/usr/share/plymouth/themes/silent/silent.script

3. Crear el script de renderizado

Crea el archivo:

/usr/share/plymouth/themes/silent/silent.script
wallpaper_image = Image("splash.png");
screen_width = Window.GetWidth();
screen_height = Window.GetHeight();
wallpaper_sprite = Sprite(wallpaper_image);
wallpaper_sprite.SetPosition(0, 0, -100);

Lógica del script:

  • Carga la imagen de arranque preparada
  • Obtiene la resolución actual de la pantalla
  • Crea un objeto sprite a pantalla completa
  • Establece el orden de capas para que la imagen permanezca en el fondo

4. Desplegar recursos y activar el tema

Copia la imagen:

sudo cp /boot/splash.png /usr/share/plymouth/themes/silent/

Activa el tema:

sudo plymouth-set-default-theme -R silent

Nota importante:

El parámetro -R no solo establece el tema predeterminado, sino que también ejecuta:

update-initramfs -u

Esto compila el tema en el initramfs, permitiendo que Plymouth muestre la pantalla de bienvenida durante las primeras etapas del arranque del kernel.


Explicación técnica

Secuencia de arranque de Raspberry Pi 5

El proceso de arranque de Raspberry Pi 5 difiere significativamente de versiones anteriores.

  1. Etapa del firmware
    Inicializa hardware como PCIe y HDMI.

  2. Etapa de systemd-boot
    Carga el kernel y el initramfs.

  3. Etapa del sistema básico (basic.target)
    El dispositivo de framebuffer queda completamente disponible.

Esto explica por qué falla el método fbi: se inicia como un servicio del sistema, pero el dispositivo de framebuffer aún puede no estar listo. Plymouth se ejecuta antes, como parte del proceso de arranque.


Control de capas visuales

En el script:

SetPosition(0, 0, -100)

El valor negativo en el eje Z coloca la imagen en la capa inferior, asegurando que elementos futuros de la interfaz no la cubran.

Este mecanismo de capas es esencial para crear una pantalla de bienvenida limpia.


Verificación y pruebas

Reinicia el sistema:

sudo sync
sudo reboot

Resultados esperados:

  • :white_check_mark: Sin cuadrado arcoíris al inicio
  • :white_check_mark: Sin salida de registros del kernel
  • :white_check_mark: Sin cursor parpadeante
  • :white_check_mark: Imagen personalizada mostrada durante todo el proceso de arranque

Si aún aparecen caracteres durante la etapa del firmware, provienen de start.elf. Eliminarlos requiere reemplazar los recursos del logotipo del gestor de arranque, lo cual implica modificaciones más profundas.


:white_check_mark: Tras completar esta configuración, tu Raspberry Pi mostrará una pantalla de bienvenida completamente personalizada desde el momento en que se encienda, ofreciendo una experiencia de arranque pulida y profesional.