本文最后一次在 2020 年 06 月12 日更新,部分内容可能已经过时!

视频点此

如果你使用Arch,你对启动过程中跑代码的情景一定不陌生——黑苹果也差不多。那有没有什么办法让Arch能像比如Ubuntu 这种发行版一样,启动的时候显示一个动画呢?

当然可以,只需要一个小组件即可实现开机动画自定义:plymouth

它是来自于Fedora社区的提供美化启动图形界面的功能的项目。其借助KMS实现在电脑启动完毕之前就能启动自己的目的。而KMS是啥呢?

KMS,全称Kernel mode setting。简单来说,就是让显卡在内核级别上设置分辨率之类的工作而不是在用户级别进行。至于这两个级别就别细说了,再说就多了。为了形象一些,可以类比一下WindowsXP:当XP在启动过程中,它的徽标和滚动条是在640x480模式下进行的,而当这个滚动条消失掉之后,才进入一个正常的分辨率显示。而通过KMS,则可以在出现徽标的时候就将分辨率设置正常。

KMS大概了解了——虽然没什么用——接下来看看如何通过plymouth完成开机动画的自定义。

安装plymouth,然后编辑/etc/mkinitcpio.conf——通过这个文件可以自定义内核勾子,达到KMS的目的。所谓勾子,顾名思义,会把你设定的东西都一股脑给勾起来,就启动了。

找到没有警号的HOOK一行,在base udev后加上plymouth相关的勾子,保存即可。但到底加什么,需要根据你自己的情况输入。

  • 如果你有encrypt勾子,则删除这个勾子,然后加入plymouth plymouth-encrypt两个勾子
  • 如果有systemd勾子,则加入sd-plymouth
  • 如果既有encrypt又有systemd,则将encryptplymouth-encrypt改为sd-encrypt
  • 如果你有zfs勾子,则需要再安装一个plymouth-zfs,然后将zfs替换为plymouth-zfs
  • 其他情况,则直接添加plymouth

注意:plymouth相关的勾子一定加在udev之后,顺序很重要

然后,编辑/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT一行,引号的尾部增加quiet splash loglevel=3 rd.udev.log_priority=3 vt.global_cursor_default=0,保存。

现在,内核参数相关的文件修改完成,更新一下 sudo grub-mkconfig -o /boot/grub/grub.cfg(Arch分支的命令,其他分支自行查找)。

到此,plymouth安装完成,可以重启看一看效果。

如果想用更多的开机动画,可以自行安装主题,然后修改/etc/plymouth/plymouthd.conf,修改Theme=后的名称保存即可。至于默认都有哪些主题,可以通过plymouth-set-default-theme -l查看。

同样的,plymouth不止可以自定义启动界面,还有一些细节可供调整。我感觉最好的一项就是可以从开机动画渐变效果到登录界面。很平滑的感觉。

  • 禁用的登录器服务。对于KDE默认的sddm,只需要systemctl disable sddm
  • 启用登录器对应的plymouth服务。对于KDE默认的sddm,只需要systemctl enable sddm-plymouth

很多登录器都支持这种服务,包括GDM、LXDM、SLiM、LightDM,服务名称也很有规律:登录器名称-plymouth

添加新评论