修改 Grub2 主题,美化启动画面

现在在启动引导程序中 Grub 大行其道,几乎所有 Linux 发行版都默认使用 Grub 做引导程序。Debian 也不例外。然而,系统默认的 Grub 界面或许不能令你满意。这篇文章就是介绍如何修改 Grub2 的主题,使系统的启动画面更漂亮的。

首先准备一张图片

以前的 splash 图片对格式要求比较严格,必须是 xpm 格式的,还要压缩为 gz 包。现在好像不需要了,并且已经支持 png、jpg/jpeg、tga 三种格式的图片,只要求图片是 RGB 模式而非索引模式的。

Gnome 为我们提供了很多漂亮的图片,可以去 gnome 主题网站尽情挑选。

无论如何,我们已经找到了一张很酷的图片,我们给它起名叫 grub-splash.png 。接下来,我们要把它保存到本地磁盘,你可以保存在任意你认为合适的地方,一般为 /usr/share/images/desktop-base/ 下。

现在我们的图片的完整路径是:

/usr/share/images/desktop-base/grub-splash.png

接下来,让 grub 找到该图片

有两种方法可以实现:

使用 alternative

运行以下命令:


$ sudo update-alternatives --config desktop-grub 有 2 个候选项可用于替换 desktop-grub (提供 /usr/share/images/desktop-base/spacefun-grub.png)。 选择 路径 优先级 状态 ------------------------------------------------------------ * 0 /usr/share/images/desktop-base/spacefun-grub-widescreen.png 14 自动模式 1 /usr/share/images/desktop-base/moreblue-orbit-grub.png 10 手动模式 2 /usr/share/images/desktop-base/spacefun-grub-widescreen.png 14 手动模式 要维持当前值[*]请按回车键,或者键入选择的编号: $

可见,星号所标识的“当前值”正是我们正在用的背景图片。我们要做的就是把我们刚刚找到的图片替换成“当前值”。

首先,把我们的图片“注册”到 Debian 的 alternative 系统:


$ sudo update-alternatives --install /usr/share/images/desktop-base/spacefun-grub.png desktop-grub /usr/share/images/desktop-base/grub-splash.png 20

后面那个“20”是优先级,数值越大优先级越高。当前最高的是 14,所以我们要设置一个比 14 大的优先级。当然,也可以设置一个比 14 小的优先级,如果你不想默认使用新的背景图片的话。

然后,把我们的新背景图片设置为默认值,即“当前值”:


$ sudo update-alternatives --config desktop-grub 有 4 个候选项可用于替换 desktop-grub (提供 /usr/share/images/desktop-base/spacefun-grub.png)。 选择 路径 优先级 状态 ------------------------------------------------------------ * 0 /usr/share/images/desktop-base/grub-splash.png 20 自动模式 1 /usr/share/images/desktop-base/grub-splash.png 20 手动模式 2 /usr/share/images/desktop-base/moreblue-orbit-grub.png 10 手动模式 3 /usr/share/images/desktop-base/spacefun-grub-widescreen.png 14 手动模式 要维持当前值[*]请按回车键,或者键入选择的编号:1 $

注意:这次在“键入选择的编号”后面,我键入了 grub-splash.png 前面的编号 1。

其实,在键入 1 之前,我们的新背景图片已经是“当前值”了。因为我们在“注册”时,设置了一个更高的优先级 20 。而在“自动模式”下,系统是自动使用优先级最高的选项的。

修改配置文件

与 Grub 背景图片相关的配置文件是 /usr/share/desktop-base/grub_background.sh 。打开该文件后,我们看到只有三行内容:


WALLPAPER=/usr/share/images/desktop-base/spacefun-grub.png COLOR_NORMAL=light-gray/black COLOR_HIGHLIGHT=white/black

该文件内容很好理解:第一行就是背景图片的地址,第二行是普通字体的颜色和背景色,第三行是被选中项的字体颜色和背景色。

我们要做的就是把新背景图片的地址替换原有的。你也可以根据喜好改一下颜色的配置,但背景色最后是使用默认的 black 。因为其他颜色会被背景图片覆盖,从而导致看不到背景图片。而黑色,相当于无色亦即透明,所以能正常显示背景图片。修改后该文件的内容看起来像这样:


WALLPAPER=/usr/share/images/desktop-base/grub-splash.png COLOR_NORMAL=light-gray/black COLOR_HIGHLIGHT=white/black

在动手修改之前,我们不妨研究一番。现在的背景图是 /usr/share/images/desktop-base/spacefun-grub.png ,我们去看一下它到底是什么。经过查看(使用 ls -l )我们发现,它是一个连接文件,连接到了 /etc/alternatives/desktop-grub 。我们再去看 /etc/alternatives/desktop-grub ,发现它也是个连接文件,连接到了 /usr/share/images/desktop-base/spacefun-grub-widescreen.png 。而后者是一个实实在在的图片。所以,最终使用的背景图片是 spacefun-grub-widescreen.png 。这就是 Debian 的 alternative 系统的秘密所在,这样也是第一种方法之所以有效的原因。在配置文件中使用的是 spacefun-grub.png ,它指向 /etc/alternatives/desktop-grub ,而后者也是个连接文件,指向真正的文件。这样,我们想改变背景图片的时候,只需要修改后者指向的目标即可,而无须修改配置文件了。 alternatives 系统起了桥梁的作用。

所以,第一种方法是推荐使用的方法。

更新 Grub 的配置文件

Grub 的配置文件一般是 /boot/grub/grub.cfg 。但不要直接去修改这个文件,因为这个文件是自动生成的。与 Grub 相关的配置文件和路径有:

  • /etc/default/grub 这里是 Grub 的基本配置
  • /etc/grub.d/00_header 这是保留给 Grub 使用的
  • /etc/grub.d/05_debian_theme 这是和主题风格相关的,在这里面调用了上面我们提到的 grub_background.sh
  • /etc/grub.d/10_linux 这是和 Linux 系统相关的启动项
  • /etc/grub.d/20_linux_xen 同上
  • /etc/grub.d/30_os-prober 这是系统自动检测出的其他系统的启动项
  • /etc/grub.d/40_custom 这里写自定义配置
  • /etc/grub.d/41_custom 同上
  • /usr/share/desktop-base/grub_background.sh 这个是和背景图片、颜色相关的配置,被上边的 05_debian_theme 调用
  • /usr/share/images/desktop-base/ 这里存放了 Grub 的背景图片,另外还有 GDM 和桌面的背景图片

运行如下命令,该命令就会根据上面这些配置文件自动生成最终的配置文件 grub.cfg 。


$sudo update-grub Generating grub.cfg ... Found background image: /usr/share/images/desktop-base/spacefun-grub.png Found linux image: /boot/vmlinuz-2.6.32-5-686 Found initrd image: /boot/initrd.img-2.6.32-5-686 Found Windows 7 (loader) on /dev/sdb1 done $

重启电脑查看效果

现在就重新启动你的电脑吧,因为谁不想立即查看修改后的华丽的启动画面呢?

还不够?

现在我们已经可以设置我们喜欢的背景图片和字体颜色了,是不是还意犹未尽呢?想不想要更炫更酷的启动界面呢?不好意思, Grub 无能为力了。但是别泄气,现在已经有了 gfxmenu ,并且已经加入到 Grub2 项目中,如果想了解它可以看下面给出的链接;另外,隆重推荐现在非常受欢迎的 Burg ,它是由 Bean 大牛 fork 自 gfxmenu 。值得一提的是, Bean 大牛可是我们中国人哦,而中国人的项目很少能受到整个 Linux 社区的如此关注。 Bean 大牛还是 Grub4DOS 的主要开发者。

接下来会有关于 Burg 的博文,敬请期待。

gfxmenu:

Burg:

Creative Commons License Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 4.0 International license .