|
通过grub引导gurb.exe并加载镜像在最新版中不可用?
测试起源于这个贴:
"http://bbs.znpc.net/forum.php?mod=viewthread&tid=6720&extra=page%3D1"
按照里面的使用syslinux的gpxelinux引导,但是加载完镜像后,grub.exe不能正确识别镜像并挂载,即无法正确识别镜像CHS参数,map后无法识别文件系统。
grub4dos为目前的最新版“grub4dos-0.4.5c-2013-02-02-2”。
syslinux使用4.0.6,5.0.1版都尝试过。
进一步测试,按照“README_GRUB4DOS_CN.txt”中的使用小的镜像,“grub4dos-0.4.5c-2013-02-02-2”版仍然无法正常引导。
而使用“grub4dos-0.4.5b-2011-12-06”版本,gurb.exe可以正常加载镜像并引导。
引导命令如下:
kernel http://192.168.1.1/grub.exe --config-file="map (rd) (hd0); map --hook; rootnoverify (hd0,0);chainloader (hd0,0)/ntldr"
initrd http://192.168.1.1/hd.img
boot
为了查看镜像加载完后的(rd)设备状态,改为通过如下命令引导,引导执行完map (rd) (hd0)后会停止:
kernel http://192.168.1.1/grub.exe --config-file="map (rd) (hd0);"
initrd http://192.168.1.1/hd.img
boot
再通过map --status命令查看(rd)设备状态,通过cat --hex (rd)+1查看(rd)位置的内容:
发现“grub4dos-0.4.5b-2011-12-06”版中,rd-base起始位置的内容与磁盘镜像内容相符,rd-size的大小也等于镜像的大小;map (rd) (hd0)执行时正确识别了CHS参数;在map --hook后能正确识别文件系统;
而在“grub4dos-0.4.5c-2013-02-02-2”版中,rd-base值很大,起始位置的内容与磁盘镜像内容完全不符,rd-size记不清是否等于磁盘镜像大小了,映像中好像是完全与镜像大小无关。map (rd) (hd0)执行时无法正确识别CHS参数;在map --hook后不能识别文件系统;
目前来看,“grub4dos-0.4.5b-2011-12-06”版,grub.exe能正确设置(rd)的base地址和size,所以能正常引导镜像;
而“grub4dos-0.4.5b-2011-12-06”版,grub.exe不能正确设置(rd)的base地址和size,(rd)的内容完全不是镜像的内容,故mapp (rd) (hd0)时,无法识别内存盘中的磁盘参数和文件系统,故引导失败。
通过测试多个能够正常引导的磁盘镜像,基本可以证实与镜像无关,“grub4dos-0.4.5c-2013-02-02-2”版都无法引导,“grub4dos-0.4.5b-2011-12-06”版可以正常引导。
[ 本帖最后由 emutemp 于 2013-2-26 15:30 编辑 ] |
|