在 GRUB 启动菜单中使用通配符替代版本号

之前为了玩玩 Linux,在笔记本上装了 Windows 7 与 OpenSUSE 共存的系统。因为启动项共存的问题最后选择从随身的 U 盘启动 Linux。可是因为 OpenSUSE 启动项中带了版本号,每次升级 Linux 内核之后,都需要修改 Grub 启动菜单(menu.lst)中启动项里的版本号。试了试,发现使用通配符来替代版本号就好了。

至于如何创建 U 盘引导程序,在前面介绍安装 Windows 7 和 OpenSUSE 双系统的文章中已经介绍过了。

现在直接编辑 U 盘中的 menu.lst 文件,将对应的 Linux 版本号改成通配符 * 就可以了。例如:

# No need change the version number when updating the kernel
title OpenSUSE Desktop
fallback 2
root (hd1,5)
kernel /boot/vmlinuz-*-desktop
initrd /boot/initrd-*-desktop
boot
savedefault --wait=2

这里仅仅将版本号码改成 *,其它的不动。

当然还有更省事的方法:创建简短、不变的符号连接(Symbolic Link)文件到每次更新后的 kernel 和 initrd 文件。

比如在 OpenSUSE 中,boot 文件夹中就存在 vmlinuz 和 initrd 两个文件。这两个文件仅仅是符号连接到了相应的实际文件上。可以通过 readlink 查看其信息,如,

readlink /boot/vmlinuz

要自己手动创建这样的符号连接,可以如下操作,

ln -s target_path link_path

例如,将内核 vmlinuz-3.7.10-1.16-desktopinitrd-3.7.10-1.16-desktop 分别符号连接到 vmlinuzinitrd

ln -s /boot/vmlinuz /boot/vmlinuz-3.7.10-1.16-desktop
ln -s /boot/initrd /boot/initrd-3.7.10-1.16-desktop

然后对应的 grub 启动项中可以写成,

# No need change the version number when updating the kernel
title OpenSUSE Desktop
fallback 2
root (hd1,5)
kernel /boot/vmlinuz
initrd /boot/initrd
boot
savedefault --wait=2

如果 Linux 系统在升级的时候自动更新这两个符号连接,我们的 GRUB 里的 menu.lst 就不需要再修改了。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/using-wildcards-in-menu_lst/>。转载请保留此信息及相应链接。

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)