修改 Grub2 主题,美化启动画面
On 2011-05-07 14:11:00 By Soli修改 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:
- http://code.google.com/p/burg/
- http://www.burgloader.com
- https://help.ubuntu.com/community/Burg
- https://help.ubuntu.com/community/Burg/zh_CN