无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 10377|回复: 55
打印 上一主题 下一主题

[讨论] 通过grub引导gurb.exe并加载镜像在最新版中不可用?

[复制链接]
跳转到指定楼层
1#
发表于 2013-2-26 03:36:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
通过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 编辑 ]
56#
发表于 2013-2-27 23:19:34 | 只看该作者
辛苦了。保重。
回复

使用道具 举报

55#
发表于 2013-2-27 23:14:08 | 只看该作者
又抓出一条虫子,大家很极积啊,这样子解决问题才快。
回复

使用道具 举报

54#
发表于 2013-2-27 22:12:01 | 只看该作者
既然成功,就可以提交了。

更新记录可以这么写:重新解决 issue 74。

意思就是,上次解决 issue 74 时不小心,有疏忽和漏洞,这次真正解决了。
回复

使用道具 举报

53#
发表于 2013-2-27 21:50:34 | 只看该作者
dosstart.rar (82.53 KB) 已测试,顺利,感谢不点
回复

使用道具 举报

52#
发表于 2013-2-27 21:39:39 | 只看该作者

回复 #51 zxw 的帖子

已解决                                
回复

使用道具 举报

51#
发表于 2013-2-27 21:14:39 | 只看该作者

回复 #50 不点 的帖子

gcc 4.8.0编译的,要得不?

grub4dos-0.4.5c-2013-02-27.7z (256.65 KB, 下载次数: 22)
回复

使用道具 举报

50#
发表于 2013-2-27 20:38:37 | 只看该作者
文件 dosstart.S 修改好了,我现在没有编译环境,请能编译的人,编译一下。

下载附件,解压后,得到源代码文件 dosstart.S。

用它替换最新版的 grub4dos 里面的 dosstart.S ,然后编译即可。

dosstart.rar

82.53 KB, 下载次数: 24, 下载积分: 无忧币 -2

解压后,就是源代码文件 dosstart.S

回复

使用道具 举报

49#
发表于 2013-2-27 18:28:00 | 只看该作者

回复 #48 emutemp 的帖子

好了,谢谢,这证明确实是 r262 引入的 bug。等我上载修复。

回去吃饭,今晚再弄。

[ 本帖最后由 不点 于 2013-2-27 18:29 编辑 ]
回复

使用道具 举报

48#
 楼主| 发表于 2013-2-27 18:21:50 | 只看该作者
1、再把 gcc 4.5.2 编译 r260 也上载:
运行情况:gPXe启动,map正常,镜像可以启动。
回复

使用道具 举报

47#
发表于 2013-2-27 18:17:03 | 只看该作者
再把 gcc 4.5.2 编译 r260 也上载:

grub4dos-0.4.5c-2013-02-27.7z

248.64 KB, 下载次数: 4, 下载积分: 无忧币 -2

gcc 4.5.2 编译 r260

回复

使用道具 举报

46#
 楼主| 发表于 2013-2-27 18:16:27 | 只看该作者
1、这是 gcc 4.5.2 编译 r261,怎么样?
运行情况:gPXe启动,map正常,镜像可以启动。
回复

使用道具 举报

45#
发表于 2013-2-27 18:11:03 | 只看该作者

回复 #42 不点 的帖子

跟grub4dos-0.4.5c-2012-02-14.7z相当,进grub命令行。
回复

使用道具 举报

44#
发表于 2013-2-27 18:09:07 | 只看该作者
这是 gcc 4.5.2 编译 r261,怎么样?

grub4dos-0.4.5c-2013-02-27.7z

248.75 KB, 下载次数: 8, 下载积分: 无忧币 -2

gcc 4.5.2 编译 r261

回复

使用道具 举报

43#
 楼主| 发表于 2013-2-27 17:56:49 | 只看该作者
1、“gcc 4.5.2 编译最新版本的 grub4dos,试试吧:”
运行情况:gPXE启动,不卡死,但是map还是出错,CHS参数不能识别。
附加情况:
之前的grub20130202版map后,识别CHS参数错误,使用255,63后停顿半天,但是最终还是会回到命令行;
这个版本识别CHS参数出错,使用255,63后,好像就卡死了,无法回到命令行。

2、“试试我在 2012 年 2 月 13 日的编译结果:”
运行情况:gPXE启动,map出错,(rd)地址不对。

[ 本帖最后由 emutemp 于 2013-2-27 18:10 编辑 ]
回复

使用道具 举报

42#
发表于 2013-2-27 17:14:33 | 只看该作者

回复 #41 pseudo 的帖子

试试我在 2012 年 2 月 13 日的编译结果:

http://bbs.znpc.net/forum.php?mod=viewthread&tid=6197
回复

使用道具 举报

41#
发表于 2013-2-27 17:10:15 | 只看该作者

回复 #40 不点 的帖子

卡死如36楼图,且稍后Vmware客户机崩溃。
回复

使用道具 举报

40#
发表于 2013-2-27 17:00:14 | 只看该作者
gcc 4.5.2 编译最新版本的 grub4dos,试试吧:

grub4dos-0.4.5c-2013-02-27.7z

252.7 KB, 下载次数: 6, 下载积分: 无忧币 -2

gcc 4.5.2 编译 r327

回复

使用道具 举报

39#
发表于 2013-2-27 16:44:31 | 只看该作者

回复 #38 roytam1 的帖子

用到的是grub.exe,非grldr。
回复

使用道具 举报

38#
发表于 2013-2-27 16:22:54 | 只看该作者
回复

使用道具 举报

37#
 楼主| 发表于 2013-2-27 15:46:32 | 只看该作者
之前的20120210和20120214的grub.exe都只有281KB,
20130202也只有283KB,
这个20130227有315KB,增大了不少啊。
回复

使用道具 举报

36#
发表于 2013-2-27 15:45:05 | 只看该作者

回复 #33 chenall 的帖子

grub.exe卡死


官方只有grub4dos-0.4.5c-2012-02-10.7z及grub4dos-0.4.5c-2012-02-14.7z下载(前者正常),没有2012-02-12版。
r261  2012-02-12 的源码对应前者的话就与编译器有关。
回复

使用道具 举报

35#
 楼主| 发表于 2013-2-27 15:42:22 | 只看该作者
使用grub4dos-0.4.5c-2013-02-27.7z
gPXe启动,即使不加载镜像:
kernel http://192.168.1.1/grub.exe
boot

卡死在Launching GRUB...
回复

使用道具 举报

34#
发表于 2013-2-27 15:24:33 | 只看该作者
syslinux 5.01
ipxe 来自trunk
tpe_pxe.iso 是50mb的xp pe

grub4dos-0.4.5c-2013-02-27.7z (257.14 KB)  r261  2012-02-12 的源码使用GCC4.8编译的.


在syslinux:
iso启动过程中,失败卡在missing helper [vm9]
iso启动过程中,失败卡在Launching GRUB... [实体启动]


如果用
kernel pxechn.c32 http://192.168.100.254/syslinux/grub.exe
黑屏和一个不闪烁的光标

直接用ipxe:
#!ipxe

kernel http://192.168.100.254/pxe/syslinux/grub.exe --config-file="map (rd)+1 (0xff); map --hook; rootnoverify (0xff); map --status; pause; chainloader (0xff);"
initrd http://192.168.100.254/pxe/iso/tpe_pxe.iso

卡在 Launching GRUB... [机器reset过,确认]

[ 本帖最后由 2013pentium 于 2013-2-27 15:40 编辑 ]
回复

使用道具 举报

33#
发表于 2013-2-27 15:16:11 | 只看该作者
r261  2012-02-12 的源码使用GCC4.8编译的.

grub4dos-0.4.5c-2013-02-27.7z

257.14 KB, 下载次数: 8, 下载积分: 无忧币 -2

回复

使用道具 举报

32#
发表于 2013-2-27 14:50:38 | 只看该作者
谁传个新编译的2012.2.10版grub.exe上来,如果它不行,就说明与编译器有关。
回复

使用道具 举报

31#
发表于 2013-2-27 12:46:10 | 只看该作者
楼上的结论与 pseudo 的一样,都是说 2012-2-13 的改动有问题。然而改动本来就很少,仔细检查之后,发现完全没问题。

所以,这可能又是一个编译器造成的问题。

2月10日前后是 chenall 编译的。请 chenall 看看吧。

在 chenall 给出结果之前,诸位也可以自己用某个旧版的编译器来编译新版本,猜测应该可以解决。
回复

使用道具 举报

30#
发表于 2013-2-27 12:14:28 | 只看该作者
我已整理27楼测试,看起来是2-10 到2-14期间的变化,引起的现象。


       
grub4dos-chenall 的
Issue 74:        kexec --initrd and "map (rd) (fd0)" problem Error 65

或许和这个修改有关

[ 本帖最后由 2013pentium 于 2013-2-27 12:18 编辑 ]
回复

使用道具 举报

29#
发表于 2013-2-27 11:59:25 | 只看该作者
楼上,没有成功与失败的精确分界线,很难找到失败的原因。相差一年,太模糊了。
回复

使用道具 举报

28#
发表于 2013-2-27 11:33:42 | 只看该作者
在ipxe编译debug模式后

比较 grub4dos-0.4.5c-2012-02-01 与
grub4dos-0.4.5c-2013-02-02-2.7z 的grub.exe 命令行执行过程

syslinux 5.01菜单如下,意图是保留pxe连接并进入g4d环境

kernel pxechn.c32 http://192.168.100.254/syslinux/grub.exe

测试结果是:
2012-02-01的可以打任意字符回车,ipxe协议栈调试明文显示tftp查询文件 ,并cat (pd)/dir.txt可以正确读取。
2013-02-02-2.7z 则ipxe的明文调试信息无,(pd)/dir.txt可以正确读取。


btw: gpxe已基本无维护,ipxe算是前者衍生版保持活跃
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-22 11:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表