Plymouth
Plymouth 是一個來自於 Fedora 社區的提供漂亮的啟動界面的項目,現在它被列入了freedesktop.org 的官方資源之中。它依靠 KMS 儘可能早的設置顯示器的原始解析度顯示,之後產生漂亮的啟動界面直至出現登錄界面。
準備[編輯 | 編輯原始碼]
Plymouth 依靠 KMS(Kernel Mode Setting,內核級顯示模式設置)顯示圖形界面。在 UEFI 系統中,Plymouth 可以使用 EFI 幀緩衝。
如果使用了私有驅動, 無法啟用 KMS,或者只是不想使用 EFI 幀緩衝,那麼可以考慮使用支持大屏解析度的 Uvesafb。如果既沒有KMS也沒有framebuffer,那麼Plymouth將使用文本模式。
安裝[編輯 | 編輯原始碼]
需要穩定版本請安裝 plymouth包,plymouth-gitAUR是開發版本。
默認情況下,Plymouth 將引導消息記錄到 /var/log/boot.log
,並且不顯示啟動畫面。
安裝 Plymouth 後,如果想要在啟動早期階段就啟用,需要配置 initramfs 生成器,創建含有Plymouth的鏡像。
mkinitcpio[編輯 | 編輯原始碼]
把plymouth
添加到 mkinitcpio.conf 的 HOOKS
列表中:
/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 自帶了一些主題:
- BGRT: Spinner 的一個變種,如果 OEM 的圖標可用便會顯示。(BGRT 指的是 Boot Graphics Resource Table)
- Fade-in: "簡單的有淡出淡入的星星的主題"
- Glow: "伴隨著新興標誌的餅狀引導進度條的企業主題"
- Script: "腳本案例插件" (漂亮的 Arch Logo 主題)
- Solar: "帶有燃燒的藍色星球的空間主題"
- Spinner: "帶有加載框的簡單主題"
- Spinfinity: "顯示旋轉的無窮大標誌的主題"
- Tribar: "帶三色進度條的文本模式主題"
- (Text: "帶三色進度條的文本模式主題")
- (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
然後啟用這個服務。
疑難解答[編輯 | 編輯原始碼]
禁用的內核參數[編輯 | 編輯原始碼]
如果在啟動過程中遇到問題,可以使用以下內核參數臨時禁用 Plymouth:
plymouth.enable=0 disablehooks=plymouth
調試[編輯 | 編輯原始碼]
要將調試輸出寫入 /var/log/plymouth-debug.log
,請添加以下內核參數:
plymouth.debug
密碼提示不更新[編輯 | 編輯原始碼]
當在 Mkinitcpio 中使用 systemd
而不是 udev
鉤子時,在通過 Plymouth 腳本處理它的主題上密碼提示可能不會更新。
您可以嘗試切換到開發版本 plymouth-gitAUR 或使用來自 Mkinitcpio#常用鉤子的替代品。
顯示未居中[編輯 | 編輯原始碼]
當在啟動過程中啟用了多個監視器時,某些主題可能無法使顯示居中。
您可以使用內核級顯示模式設置#Forcing modes 禁用特定的監視器。