之前为了玩玩 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-desktop
和 initrd-3.7.10-1.16-desktop
分别符号连接到 vmlinuz
和 initrd
,
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 就不需要再修改了。©
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/using-wildcards-in-menu_lst/>。转载请保留此信息及相应链接。