Plymouth - Arch Linux 中文维基

跳至內容

# Plymouth

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Plymouth，最近一次同步於 2024-08-30，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- 靜默啟動

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`，並且不顯示啟動畫面。

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

安裝 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 自帶了一些主題：

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 禁用特定的監視器。

## 另見

- 原始規範
- 論壇相關帖子

分類：​

- 啟動屏幕

Plymouth
新增話題