今天想了一下,这话说得不对。做 ghost ubuntu 的经验说明,分区引导扇区里的 stage1 恰恰是指向 本分区 里的 stage2 的,只是 stage2 找不到住在他隔壁的 menu.lst。现在我越搞越糊涂了。billbear 写了:m$ 的 分区引导信息是寻找 本分区 中的 ntldr
而装在分区引导扇区里的 grub 却没有一个寻找 本分区 里的 stage2 的功能,必须清晰地指明是第几个分区,而分区的编号可能因为某些操作而发生变化。
我做的 ghost 是一个装在活动第3主分区的 ubuntu 的镜像,grub 安装在了分区引导扇区里;
当恢复到活动第一主分区的时候,启动时会进入 grub 命令行,很明显,stage2 已经正确加载了,因为所有的 grub 命令已经可用,只不过没有找到菜单而已。这时候手动输入命令可以正确启动:
kernel (hd0,0)/vmlinuz root=/dev/sda1 ro quiet
initrd (hd0,0)/initrd.img
boot
而这个时候修复 grub 只要在启动后已经进入的完整的 grub 环境下输入
root (hd0,0)
setup (hd0,0)
重启就有菜单了。
我比较了一下修复前后的分区引导扇区里的 stage1,没有任何变化。
只是 stage2 改变了。改变的大概就是对 menu.lst 的引用。
这和我一直以来的认识相左。混乱中。
不过这样倒是可以很方便地用 grub4dos 的 stage2 代替 grub 的 stage2 来改造这个镜像,不用再修复 grub 了。下次试试。