GRUB2设置theme以后仍不能显示以及GRUB2修改背景图片后不生效的解决方法

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zjx923759789/article/details/80795617

问题的起因

这次对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的内容,确定以上命令块只是去掉了两头的条件判断。

展开阅读全文

没有更多推荐了,返回首页