linux开机关机动画
2016年05月24日

概述

plymouth 项目是为了替代fbsplash,而实现一个理论上没有光标闪烁的开机启动动画效果.

安装

emerge sys-boot/plymouth

emerge sys-kernel/dracut

dracut用于创建initrd文件

预览

# 打开守护进程
plymouthd
# 预览splash
plymouth --show-splash

# 关闭splash
# 切换到tty2
ctrl-alt-F2
plymouth --quit

如果需要再预览主题,需要重新打开守护进程

配置

# 显示所有主题
plymouth-set-default-theme -l

# 切换主题
plymouth-set-default-theme xxxx
# 创建initrd
dracut -H

# 也可以-R更换主题并且自动创建initrd
plymouth-set-default-theme -R xxxx

# 修改grub配置
vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT='quiet splash'
GRUB_GFXMODE=1366x768x24
GRUB_GFXPAYLOAD_LINUX=keep

# 更新grub.cfg文件
# 如果boot未挂载,请提前挂载
grub2-mkconfig -o /boot/grub/grub.cfg

手动dracut -H生成的img文件与plymouth-set-default-theme -R生成的img文件名有所不同,所以习惯上最后只使用一种方式,免得重复生成grub.cfg文件

评价

优点

  • 无闪烁和日志输出
  • 动画的样式丰富

缺点

  • 依赖比fbsplash复杂[其中包括一些xlib库]
  • 依赖initrd
  • 系统常驻plymouthd进程
  • 没有系统启动进度信息,[那个进度条是假的]

顺带与fbsplash坐下比较

优点

  • 不依赖initrd
  • 启动进度显示以及显示日志的切换换功能

缺点

  • 需要给内核添加 console framebuffer 驱动
  • 动画样式很简单

BUG

  • plymouth 在测试的时候,没有办法显示关机动画
  • 开机动画的长度似乎都只有一部分长度,而如果在这个时间内没有启动到X相关的服务,splash就卡住不懂了
    如果系统尚未安装X相关的服务,只能ctrl-alt-Fx切换其他tty登录了

fbsplash BUG

  • 启动动画似乎不能在内核加载完的第一时间显示,总是会显示一部分openrc的信息以后才会被加载

相关链接

http://wiki.gentoo.org/wiki/Plymouth