无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 42147|回复: 121
打印 上一主题 下一主题

[讨论] grub4dos 集成 ipxe 的功能-测试

  [复制链接]
跳转到指定楼层
#
发表于 2014-11-28 23:10:00 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 chenall 于 2014-12-1 14:45 编辑
查了一下资料,发现原来ipxe有提供API的和PXE API一样的调用方法,所以要集成的话就很简单了..

只需要使用ipxe启动了grub4dos,这时在grub4dos下就可以调用ipxe的功能.

附件只是简单的集了了一个ipxe命令用于测试(不能正常使用)

简单测试例子(我测试是成功的):
ipxe chain grub.exe
ipxe chain http://b.chenall.net/grub.exe

正常进入grub4dos命令行.

另一个例子失败
ipxe initrd http://b.chenall.net/ntboot.iso
ipxe kernel http://b.chenall.net/memdisk raw iso
ipxe boot

卡住,不过我觉得应该成功的,只是屏幕显示的问题,因为我测试了ipxe config命令,这时也是卡住,但是我按Ctrl+X可以返回(ipxe config界面可以按Ctrl+X退出)

估计有可能是内存使用冲突还是其它原因,我对这一块不熟,希望有对系统内核比较了解的朋友看一下,有没有办法解决.否则估计就不能使用ipxe的sanboot功能了.

另外上面的功能只是简单的应用,要真正集成到grub4dos需要再写一个针对ipxe的文件系统(类似于pxe).这样就可以直接map http上的文件让grub4dos使用.

这个文件系统的实现,需要再考虑一下要用什么方式比较好,

因为grub4dos的文件系统都是(xD)的,暂时考虑使用(wd)或直接在现在的(pd)上修改实现

大家有什么好的方案也可以提出来.

有兴趣的朋友可以下载附件测试一下.

需要使用ipxe启动grub4dos才可以测试 ipxe cmd 如果返回值为真则命令执行成功.否则执行失败.


现在可以下载本贴附件开始测试ipxe相关功能了.

最新的附件已经集成了ipxe文件系统,使用的是(pd)

默认情况下使用的是基础的pxe服务,测试版本暂不支持自动切换,要使用ipxe的文件系统需要执行以下命令
pxe type 1

使用ipxe的文件系统就可以支持http等协议.例子:

  1. cat (pd)/http://b.chenall.net/menu.lst
复制代码


为了方便使用可以这样子

  1. pxe basedir /http://b.chenall.net
  2. # 以下的访问都是相对于http://b.chenall.net的
  3. cat (pd)/menu.lst
  4. map --mem (pd)/ntboot.iso (0xff)
复制代码


一些需要注意的问题:
1. 首先必须使用ipxe启动的grldr才支持使用ipxe相关功能.
2. 要直接调用ipxe命令,最好使用文本模式(terminal console),至少你在用ipxe boot/chain启动之前需要先切换到文本模式.

新的版本已经更新上传,现在比较完善了,不过还不是很稳定,有时候会死机重启...

新的版本顺便编译了一个ipxegrldr文件(集成了ipxe+grldr),你可以使用这个代替ipxe和grldr..

新的版本支持以下方法
  1. map --mem http://b.chenall.net/ntboot.iso (0xff)
  2. map --hook
  3. chainloader (0xff)
复制代码


推荐
发表于 2015-1-16 11:13:38 | 只看该作者
我目前也只能用undionly.kpxe来引导,再相互切换启动wimboot就没有问题。
直接用grub4dos引导启动wimboot目前还是重启的。
回复

使用道具 举报

106#
发表于 2018-12-5 14:17:13 | 只看该作者
感谢分享
回复

使用道具 举报

105#
发表于 2018-11-18 17:35:48 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

104#
发表于 2018-11-16 17:59:34 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

103#
发表于 2016-12-10 19:24:36 | 只看该作者
抱歉,网络延迟多重发布,请管理员删除~
回复

使用道具 举报

102#
发表于 2016-12-10 19:24:33 | 只看该作者
本帖最后由 rabbired 于 2016-12-10 19:25 编辑

抱歉,网络延迟多重发布,请管理员删除~
回复

使用道具 举报

101#
发表于 2016-12-10 19:24:31 | 只看该作者
本帖最后由 rabbired 于 2016-12-10 19:26 编辑

抱歉,网络延迟多重发布,请管理员删除~
回复

使用道具 举报

100#
发表于 2016-12-10 19:24:24 | 只看该作者
完美的工具...只是为啥不支持FTP呢,像我这样只有ftp和nfs服务器可用的,就只能看看了~希望大大发布个新版把ftp和nfs支持加上~
回复

使用道具 举报

99#
发表于 2016-4-2 22:01:58 | 只看该作者
snailstart 发表于 2016-4-2 20:43
感谢不点和chenall,我的问题解决了,的确是只需要在使用grub4dos的时候再启动grub4dos,原先想多了:dizz ...

这个问题可以从哲学的角度去理解。这不是个纯技术问题。你所说的“解决了”,就是从哲学上“理解了”。

ipxe 和 grub4dos,两者凑在一起磨合,都要费一番工夫的。如果再加上 SAN 网络驱动,那本来就可能暴露出新的问题,需要新的“磨合期”。在磨合的初期,出现失败是很正常的,是可以理解的。如果参与磨合的开发者多了,那自然会提高“成功磨合”的概率。

归根到底这是哲学问题,不是纯技术问题。

以上是分享自己看问题的方式和角度。

回复

使用道具 举报

98#
发表于 2016-4-2 20:43:33 | 只看该作者
不点 发表于 2016-4-1 09:42
同意。

个人认为,snailstart 的使用,严格来说属于“压力测试”,超限使用 grub4dos。

感谢不点和chenall,我的问题解决了,的确是只需要在使用grub4dos的时候再启动grub4dos,原先想多了
回复

使用道具 举报

97#
发表于 2016-4-1 10:59:41 | 只看该作者
不好意思,插楼请教C大一个关于ntboot的问题:
我想让ntboot启动wim文件的时候支持测试模式,但是把ntboot.nt6解压后将ntboot.img中的bcd替换为开启了测试模式并禁用的签名的bcd,重新打包后启动wim文件依然没有打开测试模式,请问还需要改什么吗?
回复

使用道具 举报

96#
发表于 2016-4-1 09:42:37 | 只看该作者
chenall 发表于 2016-3-31 10:02
我的意思是你这个菜单中需要IPXE的功能完全没有必要进GRUB4DOS。可以直接在IPXE中单独启动,需要用到GRUB4D ...

同意。

个人认为,snailstart 的使用,严格来说属于“压力测试”,超限使用 grub4dos。
ipxe和grub4dos是两个软件,能够合在一起已经不容易了。再加上其他代码(硬件驱动、int13 接管,等等),未必会磨合得很好。
第一,增加的代码(硬件驱动、int13 等)需要占用内存空间,有可能与grub4dos发生冲突。
第二,grub4dos没有硬件驱动(不谈usb、cdrom,因为这里没有涉及到),而ipxe本身就含有网卡硬件驱动。再加上sandisk存储空间的驱动,对内存的使用,就可能达到饱和了。要知道,常规内存的量是很有限的,只有 640K 或更少。ipxe 把常规内存消耗完了之后,就没有足够的常规内存供 grldr 使用了。所以,试图在 grldr 之下调用 ipxe 也不行。

chenall 的办法是可以根本解决问题的。你可以使用 ipxe 作为第一启动,使用你的 sandisk。待到需要 grub4dos 的功能时,再启动 grub4dos。两者不打架。

回复

使用道具 举报

95#
 楼主| 发表于 2016-3-31 10:02:12 | 只看该作者
我的意思是你这个菜单中需要IPXE的功能完全没有必要进GRUB4DOS。可以直接在IPXE中单独启动,需要用到GRUB4DOS的功能时再进入GRUB4DOS
回复

使用道具 举报

94#
发表于 2016-3-31 09:59:58 | 只看该作者
chenall 发表于 2016-3-31 08:23
如果你确定直接使用ipxe没有问题的话是可以直接使用IPXE+GRLDR而不是使用IPXEGRLDR

也就是主引导用IPX ...

分开的ipxe-》grldr-》在grldr下用ipxe的sanboot问题一样,应该不是合成和分开的造成的。
只有单纯的用ipxe的sanboot没问题。
回复

使用道具 举报

93#
发表于 2016-3-31 08:38:40 | 只看该作者
本帖最后由 不点 于 2016-3-31 08:48 编辑

我的建议是,在实模式阶段,不要让别的软件来创建虚拟盘(接管int13),只让 grub4dos 来创建。grub4dos 创建的虚拟盘,是能够与各种 DOS、各种 Windows 兼容的,不至于发生莫名其妙的失败。grub4dos 是 BIOS 模式下与微软兼容性最好的开源启动管理软件(没有之一,姑且用用这个流行广告语)。只用 map 命令创建虚拟盘,不要用其他方法。
回复

使用道具 举报

92#
 楼主| 发表于 2016-3-31 08:23:54 | 只看该作者
snailstart 发表于 2016-3-31 07:34
是的,这么底层感觉很难,只是在使用ipxegrldr的时候,感觉是这地方出现了问题。同一份源码的ipxe引导 ...

如果你确定直接使用ipxe没有问题的话是可以直接使用IPXE+GRLDR而不是使用IPXEGRLDR

也就是主引导用IPXE,根据需要来启动GRLDR,比如在IPXE的菜单中调用。

IPXEGRLDR其实就是IPXE和GRLDR整合在一起的文件,分开不影响使用。
回复

使用道具 举报

91#
发表于 2016-3-31 07:34:12 | 只看该作者
本帖最后由 snailstart 于 2016-3-31 07:35 编辑
不点 发表于 2016-3-30 18:54
个人认为,hook 中断 int13 的事情,最好别做。为什么呢?因为很难做好这个工作。memdisk 和 grub4dos 费了 ...


是的,这么底层感觉很难,只是在使用ipxegrldr的时候,感觉是这地方出现了问题。同一份源码的ipxe引导是没有问题,先看看问题在哪。
没办法刚进公司,老板给的任务硬着头皮也要搞,醉了。
要实现,本地双系统(win+linux),SAN网络引导win系统(iscsi上的img)。网络有问题,自动切换到本地系统,网络的引导也能引导本地系统。这个有什么好的方案吗。目前确定grub4dos如果没有上面的问题的话,是可以实现这些功能的。
回复

使用道具 举报

90#
发表于 2016-3-30 18:54:03 | 只看该作者
本帖最后由 不点 于 2016-3-30 18:55 编辑

个人认为,hook 中断 int13 的事情,最好别做。为什么呢?因为很难做好这个工作。memdisk 和 grub4dos 费了九牛二虎之力,花了很多年,才把它理顺,各种死角,都避免发生意外情况。如果一个新软件要想做好它,那是很不容易的。除非你直接拷贝 memdisk 或 grub4dos 的 int13 处理代码,否则,没有 10 年时间,相信那是不会很成熟的。要经过 10 年以上的锤炼才行。

应该直接调用 memdisk 或 grub4dos 的仿真功能,而不是自己再整出一套仿真程序。因为那八成会添乱的。
回复

使用道具 举报

89#
发表于 2016-3-30 17:33:48 | 只看该作者
chenall 发表于 2016-3-30 08:19
具体的看build脚本就明白了。

就是直接把ipxe的源码放到GRUB4DOS源码中。

谢谢chenall,我已经编译出来ipxegrldr了。但我遇到了另一个问题
我使用pxe引导tftp上的ipxegrldr->读取menu.lst(其中有个引导项)      
ipxe chain http://10.15.2.133/fronboot/vmScript/voitest.ipxe,显示ipxe的引导菜单
voitest.ipxe有一个引导项
sanboot --drive 0x80  iscsi:10.15.2.133::::iqn.2015-10.org.vclass.vd.vclient:sn.mmecnefr-8scvnu-tw8w
最后一步sanboot后显示器显示 :
Registered SAN device 0x80
Booting from SAN device 0x80
黑一下屏
这些步骤应该都是正常的。
但过一会画面是

看图片应该是iscsi的磁盘引导有问题(iscsi磁盘应该找到了),但是这个磁盘我直接用本地ipxe(我是直接把ipxe.usb dd 到硬盘的引导记录里面)和voitest.ipxe系统是可以正常启动的。

我猜想,是不是跟这有关http://blog.csdn.net/wolfsun3/article/details/48828047,ipxe是hook了BIOS的13号中断,这个iscsi系统引导成功了,ipxe的hook是不是应该还在起作用,而我们的grub4dos集成了ipxe是不是交给iscsi磁盘后,就把ipxe也给释放掉了?纯属猜测。。。
回复

使用道具 举报

88#
 楼主| 发表于 2016-3-30 08:19:18 | 只看该作者
snailstart 发表于 2016-3-29 19:17
你好chenall,是我理解错了还是怎么着,我的grub4dos-src下放着4dos的源码和ipxe的目录,grub4dos/ipxe ...

具体的看build脚本就明白了。

就是直接把ipxe的源码放到GRUB4DOS源码中。

回复

使用道具 举报

87#
 楼主| 发表于 2016-3-30 08:17:56 | 只看该作者
freesoft00 发表于 2016-3-29 19:38
你正的那个编译环境在哪里下载

grub4dos_dev_2014-06-25.7z

这个是只能在32位系统下使用的,可以编译GRUB4DOS和外部命令,不支持IPXE
回复

使用道具 举报

86#
发表于 2016-3-29 19:38:43 | 只看该作者
chenall 发表于 2016-3-29 08:11
把ipxe的源码放到同一目录下,存放例子。

grub4dos-src

你正的那个编译环境在哪里下载
回复

使用道具 举报

85#
发表于 2016-3-29 19:17:15 | 只看该作者
本帖最后由 snailstart 于 2016-3-29 19:18 编辑
snailstart 发表于 2016-3-28 20:17
chenall你好,请问ipxegrldr是怎么生成的,我编译grub4dos只有grldr,我是小白~感谢.


你好chenall,是我理解错了还是怎么着,我的grub4dos-src下放着4dos的源码和ipxe的目录,grub4dos/ipxe/src下ipxe的源码,在grub4dos-src下configure再make好像也没进ipxe编译,是需要加什么参数编译吗,ipxe的编译环境没问题,我可以单独编译。还有我想学习下4dos的源码,你有什么资料推荐下吗。感谢。
回复

使用道具 举报

84#
 楼主| 发表于 2016-3-29 08:11:43 | 只看该作者
snailstart 发表于 2016-3-28 20:17
chenall你好,请问ipxegrldr是怎么生成的,我编译grub4dos只有grldr,我是小白~感谢.

把ipxe的源码放到同一目录下,存放例子。

grub4dos-src
grub4dos-src\ipxe
grub4dos-src\ipxe\src

再编译就可以了,不过你的编译环境需要可以编译ipxe否则会失败,具体的可以查看ipxe官网的介绍。

回复

使用道具 举报

83#
发表于 2016-3-28 20:17:24 | 只看该作者
chenall你好,请问ipxegrldr是怎么生成的,我编译grub4dos只有grldr,我是小白~感谢.
回复

使用道具 举报

82#
发表于 2016-3-24 10:31:40 | 只看该作者
MENU語法
menu.lst
title ipxegrldr.lkrn
kernel /ipxegrldr.lkrn
回复

使用道具 举报

81#
 楼主| 发表于 2016-3-23 09:37:13 | 只看该作者
snailstart 发表于 2016-3-22 20:03
什么时候能本地直接启动带ipxe功能,我觉得有这种需求呀

这是可以的,因为IPXEGRLDR就是IPXE+GRLDR整合在一起的。

默认编译的是通用的UNDIONLY.KPXE只能用于PXE启动。

你可以用IPXE.LKRN来本地启动。

你可以试试附件的ipxegrldr.lkrn,里面包含了IPXE支持的所有网卡类型可以通过grub4dos的kernel来加载启动

ipxegrldr.zip

456.07 KB, 下载次数: 40, 下载积分: 无忧币 -2

回复

使用道具 举报

80#
发表于 2016-3-22 20:03:17 | 只看该作者
chenall 发表于 2014-11-29 22:13
1.不可以使用图形模式...
要启动之前必须要切换到文本模式.否则屏幕就不显示的,
2.还是需要用ipxe来 ...

什么时候能本地直接启动带ipxe功能,我觉得有这种需求呀
回复

使用道具 举报

79#
发表于 2015-3-5 17:22:51 | 只看该作者
但目前使用undionly.kpxe+grldr 一起正常!
1:undionly.kpxe启动直接启动win8pe正常;
2:undionly.kpxe转grldr,再启动win8pe也正常。
同样使用的是wimboot
回复

使用道具 举报

78#
 楼主| 发表于 2015-3-5 17:15:46 | 只看该作者
本帖最后由 chenall 于 2015-3-5 17:31 编辑
zhaohj 发表于 2015-3-5 16:53
IPXEGRLDR还是不稳定,实机测试了几台机器(win8pe.wim,用wimboot)在boot时会产生问题:
1:dell的机器死 ...


你直接使用IPXE+GRLDR是否也是一样的问题..
单单使用IPXE是否会有问题.

另外你用WIMBOOT出现问题并不能证明是IPXEGRLDR的问题(WIMBOOT是专门为IPXE设计的可能没有考虑得那么全面,用IPXEGRLDR时WIMBOOT有可能会和GRLDR使用的内存起冲突之类的.)

IPXEGRLDR一般情况下不会有什么问题的,因为和IPXE相关的都是调用IPXE来实现的.IPXEGRLDR只不过是把IPXE和GRLDR整合一起而已.
回复

使用道具 举报

77#
发表于 2015-3-5 16:53:06 | 只看该作者
IPXEGRLDR还是不稳定,实机测试了几台机器(win8pe.wim,用wimboot)在boot时会产生问题:
1:dell的机器死机
2:技嘉的主板更奇怪,返回到grldr菜单(terminal console状态)
3:vm虚拟机正常
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-27 15:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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