GRUB2设置theme以后仍不能显示以及GRUB2修改背景图片后不生效的解决方法
问题的起因
这次对archlinux进行重装,是因为GIMP软件启动的时候,对gmem.c报出overflow的错误。
安装完成,遇到了新的问题,无论我怎么修改GRUB的设置,grub-mkconfig许多次,安装各种grub-theme,以及重新编译了grub进行测试。都没有用。
在grub引导界面,按c进入命令行界面以后,我使用background_image命令以后,发现是gfxterm没有加载。这样问题解决思路也就很明显了。
解决方法
grub的设置一般在两个文件,/etc/default/grub 和 /etc/grub.d/* 。第二个目录里面,除了40_custom,其他的在不知道内容的情况下最好不要修改。
我们先检查/etc/default/grub,查看是否有:
GRUB_THEME="/boot/grub/themes/Vimix/theme.txt"
设置,同时检查:
# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console
里面的 GRUB_TERMINAL_OUTPUT=console 必须注释掉,或者修改成 GRUB_TERMINAL_OUTPUT=gfxterm
如果没有这两个项目,可以手动添加进去。
这样的话,使用grub-mkconfig进行一次grub.cfg脚本的生成。重启测试一下是否能够工作
如果没有解决问题,请往下看
使用记事本查看一下/boot/grub/grub.cfg的内容,检查其中
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=zh_CN
insmod gettext
如果,这段内容放在一个
if XX
xxx
fi
之中,那么很有可能是 if 后面的条件不满足,grub不加载if-fi块里面的内容
这个时候,简单的解决方法是直接吧 if xxx 和 fi去掉,让里面的内容直接执行,加载上所需的模块。注意这次不需要执行grub-mkconfig创建新的grub.cfg。修改玩grub.cfg以后直接重启即可。
上面的方法修改完以后,尽量不要执行grub-mkconfig的命令,以免覆盖掉我们修改过的grub.cfg文件。
但是为了省事,我们可以修改/etc/grub.d/00_header,找到生成
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=zh_CN
insmod gettext
的地方,同样是去掉对应的一组if - fi ,修改完成后,使用grub-mkconfig重新生成grub.cfg。注意的是不要立即重启,先检查grub.cfg的内容,确定以上命令块只是去掉了两头的条件判断。
上一篇: 为GRUB2添加背景图片
下一篇: RHEL 7 修改系统默认运行级别