普利茅斯市的风光

用 Plymouth 替换开机日志

默认情况下,Arch Linux 开机会展示 Linux 内核和 systemd 的日志。尽管出现问题时用这些日志排查很有用,但是每次开机,都看到一堆文字滚动,夹杂着几个报错(没有内核签名啊,无法更新钥匙环啊),还是不大舒服。

Fedora 的开发者照着 Windows 和 macOS,搞了个 Plymouth:它可以像这几个操作系统一样,显示开机画面。正好词元之前换到了 systemd-boot,可以默认禁用菜单,开机过程更加简洁了;现在再关掉日志,看起来也更舒服些。

那今天,就来装个 Plymouth 玩玩。

👄 安装 Plymouth

由于 Plymouth 已经进入 freedesktop.org 的官方资源,安装非常简单:

1
sudo pacman -S plymouth

然后,为了让内核和 systemd 在启动时不要显示日志,需要修改一下内核参数。您如果使用 systemd-boot,可以修改启动条目 /boot/loader/entries/*.conf,在内核参数末尾添加:

options ... splash quiet

若您还是会看见一些日志,那是因为 dmesg 显示了一些它认为“重要”的日志。添加或修改日志等级即可:

options ... loglevel=3

0 是最严重的错误,而 7 是调试信息,3 基本上就是只显示报错。

您当然也可以复制一份条目,然后删除 splashquiet 并填写 loglevel=7,添加参数 plymouth.enable=0 disablehooks=plymouth 禁用 Plymouth,作为调试启动参数。

您还需要将 Plymouth 添加到 mkinitcpio 的生成参数里,以便生成包含 Plymouth 的 initramfs。编辑 /etc/mkinitcpio.conf,找到以下行:

HOOKS=(...)

在括号中添加 plymouth,记得与其他项目中间有空格。

如果括号中包含 systemd,您必须在它后面添加;如果您使用硬盘加密,您必须保证在 encrypt 或者 sd-encrypt 之前添加(这样才能使用 Plymouth 的密码界面)。

安装完成后,重新生成 initramfs

1
sudo mkinitcpio -P

重新启动,并享受您的启动界面吧 🎉

🔧 小调整

如果您的显示器是 HiDPI 的,您可能需要调整缩放比例。

修改 /etc/plymouth/plymouth.conf,添加或修改:

[Daemon]
...
DeviceScale=2

这里仅支持整数缩放。

至于主题设定,请自行查看 Wiki。词元觉得默认的 bgrt 的 OEM 标志就挺好。

另外一个小小的调整就是,词元用 Windows 的时候,主板的徽标显示是和操作系统连在一起的。尤其是词元的小米笔记本,开机显示徽标有个很漂亮的动画。

如果您使用 GRUB 这就没戏了:GRUB 会加载自己的显示驱动(而非 UEFI 帧缓冲区),因此即使您禁用了菜单,一定会有一小段黑屏。但如果您使用原生 EFI 应用程序 systemd-boot,添加以下内核参数:

plymouth.use-simpledrm

启用 SimpleDRM 即可。据说在 AMD 显卡的机器上显示更好,但在词元这儿似乎没用——还是有一段黑屏。

顺便说一句,关机的时候也有 Plymouth 的界面。

🎆 下课

又花里胡哨了一点呢。

啊对了,这则博客的封面图是普利茅斯(Plymouth)市的风景。

Banner