Plymouth

来自 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 ...)

dracut[编辑 | 编辑源代码]

安装 Plymouth 之后,dracut英语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]
ExecStartPre=-/usr/bin/plymouth deactivate
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

更换背景图片[编辑 | 编辑源代码]

某些主题(如 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 帖子

疑难解答[编辑 | 编辑源代码]

禁用的内核参数[编辑 | 编辑源代码]

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

plymouth.enable=0 disablehooks=plymouth

调试[编辑 | 编辑源代码]

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

plymouth.debug

密码提示不更新[编辑 | 编辑源代码]

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

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

显示未居中[编辑 | 编辑源代码]

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

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

另见[编辑 | 编辑源代码]