chenall 发表于 2015-10-3 09:12 那么它的中断处理程序是否占用了过大的代码空间?它的中断处理程序又是否使用了过大的数据空间或堆栈空间?这些空间就有可能与 grub4dos 发生冲突了。 两个软件揉到一起,最可能出问题的,就是内存互相覆盖。而且这还不容易排查。你只有仔细检查 ipxe 的源代码,看看它究竟是怎样使用内存空间的。 |
不点 发表于 2015-10-2 22:56 其实也不能算是移植... 启动IPXE之后它扩展了原来的PXE中断 GRUB4DOS只是调用了IPXE提供的中断来读取文件. |
我不了解 ipxe 是以什么样的方式移植到 grub4dos 的。我随便猜测一下可能出现内存冲突的场景。 假如 ipxe 的代码要占据内存地址 32M 以上的某些空间,则这些代码有可能破坏掉 grub4dos 的 malloc 所分配的内存,从而产生问题。还有一种可能性是,ipxe 的代码使用了常规内存,而这些常规内存也是 grub4dos 要使用的内存,从而出现冲突。 又假如 ipxe 本身也调用 grub4dos 的 malloc 函数,这些 malloc 所分配的内存也可能会与内存盘所占据的内存空间产生冲突。 另外,如果 malloc 所分配的内存没有正确释放,或者 free 函数释放内存的时机不正确,都可能带来内存冲突。 |
ygao2004 发表于 2015-9-29 09:40 你这是个认识误区。这与 grub4dos 没有多少关系。grub4dos 只是调用 pxe 的 bios 函数而已。 是主板(网卡) pxe bios 的限制。在不同的主板(网卡)之下,grub4dos 的具体表现,有很大差异。有的主板(网卡)的 pxe BIOS 只支持 512 字节的 block size。 grub4dos 为了安全起见,只探测 1408 的 block size,如果探测的结果是 “失败” 或 “不支持”,则采用默认的 512 字节的 block size。 用户确实可以手动设置 blksize 的大小,不过,那完全只能用于用户自己的电脑,无法把它当作一个通用的选项。刚才说过,有许多主板(网卡)的 pxe BIOS 只支持 512 字节的 blksize,因此,根本不存在其他的 blksize 值能够作为通用的 blksize。有许多电脑支持 1408 的 blksize。其他的电脑则可能支持很大的 blksize。但是,为了安全起见(同义词是 “为了在探测时不至于死机”),grub4dos 只探测一个 1408 的 blksize 就结束探测。如果支持,就采用 blksize = 1408;如果不支持,就采用 blksize=512。 |
chenall 发表于 2015-9-28 15:59 是的,PXE 是实模式的程序(可用的内存小),再加上网速瓶颈,启动大文件已经是没有意义的了。 不过,集成到 grub4dos 上的 ipxe 代码,它的内存使用与 grub4dos 冲突,这个问题应该解决。我怀疑是 malloc 分配的内存,与 ipxe 的内存产生了交叉和冲突。如果内存有冲突,即使是加载小文件,也不安全。虽然目前没暴露出问题,但假如有 bug,那就是定时炸弹,将来会暴露出问题。 |
那就很遗憾了,期待哪一天grub4dos内核支持自己的http,ftp而无需ipxe。 |
zhaohj 发表于 2015-9-27 12:32 测试过了,结果同上,ipxe下对于这个7g文件始终存在上面的两个问题,不论grub4dos版本。报告这些问题,只是我的副产品。 |
chenall 发表于 2015-9-24 09:06 最新版本及高版本 map --mem (hd0,0)/img,直接重启,无法加载完到内存。 |
好的,明白了。是 ipxe 移植过来之后,产生了内存冲突或者其他隐蔽的错误。等待 chenall 前来答复吧。 |
不点 发表于 2015-9-23 22:39 误会了前面的说法,pxe下map --mem (hd0,0) /img/vhd无问题,但pxe下,不能 map --mem http://吧。 另ipxe 下 map --mem (hd0,0)/img/vhd 虽然能在内存加载完,但无法引导成功,所以即使在ipxe下map --mem htp://加载到内存成功,也会无法引导成功。 |
不点 发表于 2015-9-23 22:21 我都不知矛盾的地方在哪?说的就是同一个意思,同意你的说法。 |
不点 发表于 2015-9-23 21:46 是的,7g的大文件,立刻就返回了错误,就说明它没有进行读取。pxe下grub4dos很稳定,但肯定无法读取这么大的文件,所以才试 ipxe的。 |
不点 发表于 2015-9-23 21:36 ipxe下 map --mem /img/vhd 这个7g (不是http方式)这个也会有问题,同样的东西在pxe下无问题。 |
本帖最后由 ygao2004 于 2015-9-23 21:34 编辑 不点 发表于 2015-9-23 21:07 实机中 map --mem 这个7g文件,成功进入系统。 但在实机中ipxe下 map --mem /img/vhd,成功加载进入了内存,但报错,bootmgr image错误,无法引导。 所以在ipxe下问题多多! 另外我在pxe下也有测试,map --mem /img/vhd无问题。 |
本帖最后由 ygao2004 于 2015-9-23 21:29 编辑 不点 发表于 2015-9-23 21:07 在虚拟机中的为了截屏方便而已,有在实机中亲试,我的帖子中有实机中ramos,内存12g. http://bbs.wuyou.net/forum.php?m ... &fromuid=565395 |
你的内存只有 1G,你却让它装入 7G 的文件。比如说让你吃 三吨 的米饭,你的肚子能盛得下吗? |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.