如何自定义 Raspberry Pi 5 的启动界面

许多树莓派用户希望获得干净、专业的启动体验,而不是看到冗长的内核日志和系统消息。

尽管社区通常推荐使用 fbi(帧缓冲图像查看器)等工具,但它存在一个根本性限制:帧缓冲设备 /dev/fb0 在系统服务启动之前不可用,因此无法在启动过程的早期阶段显示图像。

本指南介绍一种使用 Plymouth 的可靠方法,从系统启动初期就开始显示自定义启动画面。


第一阶段:禁用内核输出

启动期间,内核日志会滚动显示在屏幕上,干扰自定义启动画面的展示。

将以下参数添加到启动命令行中:

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

参数说明:

  • logo.nologo
    移除屏幕左上角的树莓派标志(或发行版标志)。

  • quiet
    减少内核输出信息量。

  • loglevel=0
    仅显示紧急消息,使内核几乎完全静默。

:warning: 重要提示:

cmdline.txt 文件必须保持为单行,参数之间以空格分隔。格式错误可能导致系统无法启动。


隐藏闪烁的光标

即使禁用了内核输出,某些系统仍可能显示闪烁的终端光标。

请在同一行末尾添加以下参数:

vt.global_cursor_default=0

第二阶段:准备启动资源

图像优化

推荐规格:

  • 格式:PNG 或 JPG(如需透明背景,建议使用 PNG)
  • 分辨率:≤ 1920×1080
  • 颜色调色板:≤ 224 色(可提升加载速度)
  • 文件名splash.png

将图像放置于以下路径:

/boot/splash.png

此位置允许内核在早期启动阶段访问该图像。


检查显示驱动配置

确保在以下文件中启用了正确的显示驱动:

/boot/firmware/config.txt

示例配置:

dtparam=vc4-kms-v3d

避免使用可能触发 HDMI 重新初始化的参数,例如:

hdmi_force_hotplug=1

第三阶段:部署 Plymouth 主题系统

1. 安装所需软件包

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

2. 创建最小化主题

创建主题目录:

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

创建主题配置文件:

/usr/share/plymouth/themes/silent/silent.plymouth
[Plymouth Theme]
Name=silent
Description=静态启动画面
ModuleName=script

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

3. 创建渲染脚本

创建文件:

/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);

脚本逻辑说明:

  • 加载预先准备好的启动图像
  • 获取当前显示分辨率
  • 创建全屏精灵对象
  • 设置图层顺序,确保图像位于最底层

4. 部署资源并激活主题

复制图像文件:

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

激活主题:

sudo plymouth-set-default-theme -R silent

重要说明:

-R 参数不仅设置默认主题,还会自动执行:

update-initramfs -u

这会将主题编译进 initramfs,从而使 Plymouth 能在内核早期启动阶段就显示启动画面。


技术原理说明

树莓派 5 的启动流程

树莓派 5 的启动过程与旧版本有显著差异。

  1. 固件阶段
    初始化 PCIe 和 HDMI 等硬件。

  2. systemd-boot 阶段
    加载内核和 initramfs。

  3. 基础系统阶段 (basic.target)
    帧缓冲设备才完全可用。

这就是 fbi 方法失败的原因:它作为系统服务启动时,帧缓冲设备可能尚未就绪。而 Plymouth 作为启动过程的一部分运行得更早。


视觉图层控制

在脚本中:

SetPosition(0, 0, -100)

负的 Z 轴值 将图像置于最底层,确保后续的 UI 元素不会覆盖它。

这种图层机制对于实现干净的启动画面至关重要。


验证与测试

重启系统:

sudo sync
sudo reboot

预期结果:

  • :white_check_mark: 无彩虹启动方块
  • :white_check_mark: 无内核日志输出
  • :white_check_mark: 无闪烁光标
  • :white_check_mark: 整个启动过程中显示自定义图像

如果在固件阶段仍出现字符,这些字符来自 start.elf。移除它们需要替换引导程序的 Logo 资源,涉及更深层次的修改。


:white_check_mark: 完成本设置后,您的树莓派将在通电瞬间即显示完全自定义的启动画面,提供整洁且专业的启动体验。