原来一个虚拟机上的grub, 还是1.99版的。一时闲来手贱,莫名奇妙的想升级成2.0版。
参照这个http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=245472&start=0把g2ldr升级一下。结果,grub不能正确识别root设备,然后进入修复模式。
查了半天,不得要领。最后找到bean大大最早的教程,参见2007年的这个贴子:http://bbs.znpc.net/forum.php?mod=viewthread&tid=3696。发现bean一开始是用g2hdr.bin作core.img的引导头,后来的教程才改为用lnxboot.img作引导头。
关于lnxboot.img,参见grub手册,http://www.gnu.org/software/grub/manual/html_node/Images.html#Images,作用是让grub的core.img看其来像linux内核,可以被LILO等引导程序引导。
尝试一下,用g2hdr作引导头,一举成功。制作方法:
grub-mkimage -d /usr/lib/grub/i386-pc -O i386-pc -p "/boot/grub" -o ./core.img biosdisk part_gpt part_msdos fat ntfs exfat
cat /usr/lib/grub/i386-pc/g2hdr.img ./core.img > ./g2ldr
另外要注意的事项是2.0版的grub模块都是到grub/i386-pc目录下加载。所以要把除grub.cfg外的文件都移到grub/i386-pc目录下。如果是efi版本的,模块文件则要移到grub/x86_64-efi目录下。