跳至內容
出自 Arch Linux 中文维基


Plymouth 是一個來自於 Fedora 社區的提供漂亮的啟動界面的項目,現在它被列入了freedesktop.org 的官方資源之中。它依靠 KMS 儘可能早的設置顯示器的原始解析度顯示,之後產生漂亮的啟動界面直至出現登錄界面。

準備

Plymouth 依靠 KMS(Kernel Mode Setting,內核級顯示模式設置)顯示圖形界面。在 UEFI 系統中,Plymouth 可以使用 EFI 幀緩衝。

如果使用了私有驅動, 無法啟用 KMS,或者只是不想使用 EFI 幀緩衝,那麼可以考慮使用支持大屏解析度的 Uvesafb。如果既沒有KMS也沒有framebuffer,那麼Plymouth將使用文本模式。

安裝

需要穩定版本請安裝 plymouthplymouth-gitAUR是開發版本。

默認情況下,Plymouth 將引導消息記錄到 /var/log/boot.log,並且不顯示啟動畫面。

  • 要顯示啟動畫面,將 splash 加入內核參數
  • 需要靜默啟動, 再添加 quiet
  • 要禁用日誌,添加 plymouth.nolog

安裝 Plymouth 後,如果想要在啟動早期階段就啟用,需要配置 initramfs 生成器,創建含有Plymouth的鏡像。

mkinitcpio

plymouth添加到 mkinitcpio.confHOOKS 列表中:

/etc/mkinitcpio.conf
HOOKS=(... plymouth ...)

然後使用 mkinitcpio -P 命令重新生成 initramfs

如果你正在使用 systemd 鉤子,它必須在 plymouth 之前。

如果你的系統使用 dm-crypt 加密,請確保將 plymouth 鉤子置於 crypt 鉤子之前。

dracut

安裝 Plymouth 之後,dracut 會自動捕獲並將其添加到 initramfs 鏡像中。如果自動捕獲失敗,可以在 dracut 配置文件中添加下列幾行來強制 dracut 引入 Plymouth:

/etc/dracut.conf.d/myflags.conf
add_dracutmodules+=" plymouth "

配置

通過 /etc/plymouth/plymouthd.conf 進行配置,通過 /usr/share/plymouth/plymouthd.defaults 文件可以查看配置的默認值。

更改主題

Plymouth 自帶了一些主題:

  1. BGRT: Spinner 的一個變種,如果 OEM 的圖標可用便會顯示。(BGRT 指的是 Boot Graphics Resource Table)
  2. Fade-in: "簡單的有淡出淡入的星星的主題"
  3. Glow: "伴隨著新興標誌的餅狀引導進度條的企業主題"
  4. Script: "腳本案例插件" (漂亮的 Arch Logo 主題)
  5. Solar: "帶有燃燒的藍色星球的空間主題"
  6. Spinner: "帶有加載框的簡單主題"
  7. Spinfinity: "顯示旋轉的無窮大標誌的主題"
  8. Tribar: "帶三色進度條的文本模式主題"
  9. (Text: "帶三色進度條的文本模式主題")
  10. (Details: "詳細信息回退主題")

默認選擇 bgrt,可以通過修改配置文件設置其它主題, 例如:

/etc/plymouth/plymouthd.conf
[Daemon]
Theme=fade-in

或者執行

# plymouth-set-default-theme -R theme

每次更換主題,initrd 都必須重新構建。-R選項可確保其被重建(或者手動重新生成 initramfs):

安裝新主題

可以通過 AUR 安裝其它主題,或者 plymouth-kcm 提供與 KDE Plasma 設置的集成,並提供 AUR 上沒有的主題。

使用以下命令獲得已安裝的主題列表:

$ plymouth-set-default-theme -l

或是通過:

$ ls /usr/share/plymouth/themes
bgrt  details  fade-in  glow  script  solar  spinfinity  spinner  text  tribar

顯示延遲

Plymouth 可以配置選項以延遲啟動畫面顯示:

/etc/plymouth/plymouthd.conf
[Daemon]
ShowDelay=5

對於啟動很快的系統,可能在顯示管理器或登錄提示準備好前只能看到啟動畫面閃過。可以設置 ShowDelay 為一個比啟動時間更長的值(以秒為單位)來避免這種閃爍以及黑屏。默認值為0秒,因此您不需要將其更改為其他值,就可以在引導過程中更早地看到您的啟動。

HiDPI

編輯配置文件:

/etc/plymouth/plymouthd.conf
DeviceScale=an-integer-scaling-factor

然後重建 initrd。

提示與技巧

顯示啟動消息

啟動時按 Esc 鍵可以切換到啟動消息。

平滑過渡

GDM 支持開箱即用的平滑過渡,無需額外配置。

對於其他顯示管理器,您可以使用 display-manager.service 的以下附加片段獲得平滑過渡:

/etc/systemd/system/display-manager.service.d/plymouth.conf
[Unit]
Conflicts=plymouth-quit.service
After=plymouth-quit.service rc-local.service plymouth-start.service systemd-user-sessions.service
OnFailure=plymouth-quit.service

[Service]
ExecStartPost=-/usr/bin/sleep 30
ExecStartPost=-/usr/bin/plymouth quit --retain-splash

預覽主題

主題可以在不重新生成 initrd 的情況下預覽。按 Ctrl+Alt+F6 切換到文本終端,使用 root 登錄並鍵入:

# plymouthd
# plymouth --show-splash

再按 Ctrl+Alt+F6 並輸入如下命令退出預覽:

# plymouth --quit

您也可以在運行中的 X.Org 會話以 root 身份運行它們,但 Plymouth 窗口會覆蓋終端窗口並將本身置頂。所以請準備好虛擬桌面。

更換背景圖片

某些主題(如 spinner 和 BGRT)可以改變其背景圖像。只需將 /usr/share/plymouth/themes/spinner/background-tile.png 替換為你想要的圖片。一旦改變主題就要重新生成 initrd。

缺少 BGRT 圖片

如果您使用的是 BGRT 主題,但 UEFI 沒有提供供應商徽標,則可以將回退鏡像放置到 /usr/share/plymouth/themes/spinner/bgrt-fallback.png 中以顯示它。

放慢啟動速度以顯示完整的動畫

在啟動時間非常快的系統上,如果需要顯示整個動畫,則可能需要使用包含 ExecStartPre=/usr/bin/sleep 5附加片段plymouth-quit.service 添加延遲。見這篇 reddit 帖子

也可以使用一個新的 systemd 服務,它與 Plymouth 同時啟動,並且等待了完整播放動畫所需要的時間。這種方法將確保不會察覺到啟動時間不一致,因為在動畫開始顯示之後添加時間,而是一個在動畫期間開始的延遲。

/etc/systemd/system/plymouth-wait-for-animation.service
[Unit]
Description=Waits for Plymouth animation to finish
Before=plymouth-quit.service display-manager.service

[Service]
Type=oneshot
ExecStart=/usr/bin/sleep 動畫所需的時間

[Install]
WantedBy=plymouth-start.service

然後啟用這個服務。

注意:如果使用 initramfs 啟動了 Plymouth,該方法將不起作用。

疑難解答

禁用的內核參數

如果在啟動過程中遇到問題,可以使用以下內核參數臨時禁用 Plymouth:

plymouth.enable=0 disablehooks=plymouth

調試

要將調試輸出寫入 /var/log/plymouth-debug.log,請添加以下內核參數:

plymouth.debug

密碼提示不更新

當在 Mkinitcpio 中使用 systemd 而不是 udev 鉤子時,在通過 Plymouth 腳本處理它的主題上密碼提示可能不會更新。

您可以嘗試切換到開發版本 plymouth-gitAUR 或使用來自 Mkinitcpio#常用鉤子的替代品。

顯示未居中

當在啟動過程中啟用了多個監視器時,某些主題可能無法使顯示居中。

您可以使用內核級顯示模式設置#Forcing modes 禁用特定的監視器。

另見