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 支持开箱即用的平滑过渡，无需额外配置。

### 预览主题

可以通过在getty[1]:中运行以下命令来预览当前配置的主题

    # plymouthd; plymouth --show-splash; sleep 5; plymouth --quit

注意：此命令行以包含 sleep 调用的链式命令方式执行，可在设定的延迟后将控制权交还给用户，请勿将其移除。

### 更换背景图片

某些主题（如 spinner 和 BGRT）可以改变其背景图像。只需将 `/usr/share/plymouth/themes/spinner/background-tile.png` 替换为你想要的图片。一旦改变主题就要重新生成 initrd。

### 缺少 BGRT 图片

如果您使用的是 BGRT 主题，但 UEFI 没有提供供应商徽标，则可以将回退镜像放置到 `/usr/share/plymouth/themes/spinner/bgrt-fallback.png` 中以显示它。

或者，设置以下内容以保留固件背景：

    /etc/plymouth/plymouthd.conf

    UseFirmwareBackground=true

### 放慢启动速度以显示完整的动画

在启动时间非常快的系统上，如果需要显示整个动画，则可能需要使用包含 `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，该方法将不起作用。

### 使用 SimpleDRM

对于使用 UEFI 的设备，Plymouth 默认使用 SimpleDRM 驱动程序在 UEFI 帧缓冲上显示启动画面。这使得在更快但加载 GPU 驱动耗时较长的机器上（例如，使用 AMD GPU 的系统），启动画面也能够显示出来，同时还能消除主板启动画面与 Plymouth 之间的闪烁。

在旧式 UEFI 系统上，如果 efifb 无法以原生模式启动，而只能以 640x32、800x600 或 1024x768 分辨率运行，Plymouth 将默认不使用 SimpleDRM。

警告：使用此方法时，次要的显示器在启动过程中不会点亮。如果您的笔记本使用扩展坞连接屏幕，全盘加密的密码提示可能无法显示。

要禁用 SimpleDRM，请在您的内核参数中添加 `plymouth.use-simpledrm=0`。有关此选项的更多信息，请参见 Plymouth 问题 #264。

## 疑难解答

### 禁用的内核参数

如果在启动过程中遇到问题，可以使用以下内核参数临时禁用 Plymouth：

    plymouth.enable=0 disablehooks=plymouth

### 调试

要将调试输出写入 `/var/log/plymouth-debug.log`，请添加以下内核参数：

    plymouth.debug

### 密码提示不更新

当在 Mkinitcpio 中使用 `systemd` 而不是 `udev` 钩子时，在通过 Plymouth 脚本处理它的主题上密码提示可能不会更新。

您可以尝试切换到开发版本 plymouth-gitAUR 或使用来自 Mkinitcpio#常用钩子的替代品。

### 显示未居中

当在启动过程中启用了多个监视器时，某些主题可能无法使显示居中。

您可以使用内核级显示模式设置#Forcing modes 禁用特定的监视器。

## 另见

- 原始规范
- 论坛相关帖子

分类：​

- 启动屏幕

Plymouth
添加话题