如何自訂 Raspberry Pi 5 的開機畫面

許多 Raspberry Pi 用戶希望擁有乾淨且專業的開機體驗,而不是看到冗長的核心日誌和系統訊息。

雖然社群經常推薦使用 fbi(framebuffer 圖像檢視器),但它有一個根本性的限制:framebuffer 裝置 /dev/fb0 在系統服務啟動之前並不可用。因此,它無法在開機過程中足夠早地顯示圖像。

本指南介紹一種使用 Plymouth 的可靠方法,從早期開機階段開始顯示自訂的啟動畫面。


第一階段:關閉核心輸出

開機期間,核心日誌會滾動顯示在螢幕上,干擾自訂啟動畫面的顯示。

將以下參數加入開機命令列:

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

參數說明:

  • logo.nologo
    移除左上角的 Raspberry Pi 標誌(或發行版標誌)。

  • 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 能在早期核心開機階段就顯示啟動畫面。


技術說明

Raspberry Pi 5 的開機序列

Raspberry Pi 5 的開機流程與舊版本有顯著差異。

  1. 韌體階段
    初始化 PCIe 和 HDMI 等硬體。

  2. systemd-boot 階段
    載入核心與 initramfs。

  3. 基礎系統階段 (basic.target)
    framebuffer 裝置才完全可用。

這解釋了為什麼 fbi 方法會失敗:它是作為系統服務啟動的,但 framebuffer 裝置可能尚未準備就緒。而 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。要移除它們需要替換開機載入程式中的標誌資源,這涉及更深層的修改。


:white_check_mark: 完成此設定後,您的 Raspberry Pi 將從通電那一刻起顯示完全自訂的啟動畫面,提供精緻且專業的開機體驗。