在 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/>。转载请保留此信息及相应链接。

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>