|
本帖最后由 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等协议.例子:
- cat (pd)/http://b.chenall.net/menu.lst
复制代码
为了方便使用可以这样子
- pxe basedir /http://b.chenall.net
- # 以下的访问都是相对于http://b.chenall.net的
- cat (pd)/menu.lst
- map --mem (pd)/ntboot.iso (0xff)
复制代码
一些需要注意的问题:
1. 首先必须使用ipxe启动的grldr才支持使用ipxe相关功能.
2. 要直接调用ipxe命令,最好使用文本模式(terminal console),至少你在用ipxe boot/chain启动之前需要先切换到文本模式.
新的版本已经更新上传,现在比较完善了,不过还不是很稳定,有时候会死机重启...
新的版本顺便编译了一个ipxegrldr文件(集成了ipxe+grldr),你可以使用这个代替ipxe和grldr..
新的版本支持以下方法
- map --mem http://b.chenall.net/ntboot.iso (0xff)
- map --hook
- chainloader (0xff)
复制代码
|
|