一、前言
在打造一个舒适美丽的Linux桌面环境时,对于Linux启动的时候的命令行消息我们可以通过内核参数splash=silent
quiet
loglevel=1
来进行隐藏。但是对于Grub的消息我们怎么来隐藏呢。
二、需要隐藏的消息
1.内核启动消息
这个消息指的是Grub将系统启动交给Linux内核之前一般会打印的两个消息:
Loading Linux Linux 5.3.18-lp152.81-default ...
Loading initial ramdisk ...
2.Grub启动消息
这个消息指的是机器BIOS启动进入GRUB菜单前打印的消息,一般是Welcome to GRUB!
三、GRUB消息清除
1.内核启动消息
这个消息输出的直接来源是来自于/boot/grub2/grub.cfg
中的如下配置
echo 'Loading Linux 5.3.18-lp152.81-default ...'
linuxefi /boot/vmlinuz-5.3.18-lp152.81-default root=UUID=ade74768-e440-4149-87d2-e073fda71fab mitigations=auto
echo 'Loading initial ramdisk ...'
initrdefi /boot/initrd-5.3.18-lp152.81-default
但是这个文件是属于自动生成的,每次内核升级或者更改GRUB设置都会通过执行grub2-mkconfig
来自动生成。不过其自动生成的模板在/etc/grub.d/
目录下。可以通过更改模板来达到一劳永逸的目的。
- 1.找到
/etc/grub.d/10_linux
文件 - 2.清除
Loading Linux
消息
找到下面被注释的代码,将其替换为后面的两行代码。
if [ -d /sys/firmware/efi ] && [ "x${GRUB_USE_LINUXEFI}" = "xtrue" ]; then
# +------------- Disable Boot Message -----------+
# sed "s/^/$submenu_indentation/" << EOF
# echo '$(echo "$message" | grub_quote)'
# linuxefi ${rel_dirname}/${basename} ${root_device} ${args}
sed "s/^/$submenu_indentation/" << EOF
linuxefi ${rel_dirname}/${basename} ${root_device} ${args}
EOF
else
# +------------- Disable Boot Message -----------+
# sed "s/^/$submenu_indentation/" << EOF
# echo '$(echo "$message" | grub_quote)'
# linux ${rel_dirname}/${basename} ${root_device} ${args}
sed "s/^/$submenu_indentation/" << EOF
linux ${rel_dirname}/${basename} ${root_device} ${args}
EOF
- 3.清除
Loading initial ramdisk
消息
找到下面被注释的代码,将其替换为后面的两行代码。
if [ -d /sys/firmware/efi ] && [ "x${GRUB_USE_LINUXEFI}" = "xtrue" ]; then
# +------------- Disable Boot Message -----------+
# sed "s/^/$submenu_indentation/" << EOF
# echo '$(echo "$message" | grub_quote)'
# initrdefi $(echo $initrd_path)
sed "s/^/$submenu_indentation/" << EOF
initrdefi $(echo $initrd_path)
EOF
else
# +------------- Disable Boot Message -----------+
# sed "s/^/$submenu_indentation/" << EOF
# echo '$(echo "$message" | grub_quote)'
# initrd $(echo $initrd_path)
sed "s/^/$submenu_indentation/" << EOF
initrd $(echo $initrd_path)
EOF
2.Grub启动消息
对于grub的消息的来源并没有配置文件来让我们修改,它都被写死在grub的二进制文件中。
对于目前通用的UEFI启动来说,它在/boot/efi/EFI/{os_name}/grubx64.efi
中。
这时候就需要一个工具来处理它了:grub-shusher
- 1.下载编译
git clone https://github.com/ccontavalli/grub-shusher.git
cd grub-shusher
make
- 2.清除GRUB消息
sudo -s
./grub-kernel /boot/efi/EFI/***/grubx64.efi
执行前请注意备份grubx64.efi
,避免炸机。
最后
最后配合GRUB_TIMEOUT=0
和plymouth
启动动画你就会得到一个清爽干净的Linux开机体验了。