欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-03 23:23:00
...

问题的起因

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