grub4dos 集成 ipxe 的功能-测试
本帖最后由 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)
我目前也只能用undionly.kpxe来引导,再相互切换启动wimboot就没有问题。
直接用grub4dos引导启动wimboot目前还是重启的。 如果pxe启动,没TFTP,只有HTTP或FTP,目前这个grldr能否启动? zhaohj 发表于 2014-11-29 16:11
如果pxe启动,没TFTP,只有HTTP或FTP,目前这个grldr能否启动?
pxe不可能没有TFTP吧,没有tftp的话任何启动软件都无法启动.
pxe启动的最基础服务就是TFTP. 最新进展,把grub4dos目前的pxe访问直接改成ipxe的API调用,,
竟然可以正常使用ipxe命令(带回显的),不明白这是什么原因?????
包含ipxe命令新的版本0.4.6a源码已经更新上传.
只是增加了一个ipxe命令调用ipxe功能.
大家现在可以测试一下看看有没有什么问题(应该不会有什么问题).
也可以测试一下在grub4dos环境下能否通过ipxe启动http/ftp上的文件.
ipxe文件系统整合,暂时还没有完成.测试整合之后如果在ipxe文件系统执行map命令会重启,还没有找到原因.,好像有内存冲突
本帖最后由 zhaohj 于 2014-11-29 21:36 编辑
奇怪,我测试不成功 zhaohj 发表于 2014-11-29 21:34
奇怪,我测试不成功
不是从ipxe启动的..
需要使用ipxe启动的才能使用.
你是说从IPXE启动转grub4dos? zhaohj 发表于 2014-11-29 21:38
你是说从IPXE启动转grub4dos?
是的.
本帖最后由 zhaohj 于 2014-11-29 22:02 编辑
太伟大了,好像加载成功了。
但boot后没反应... 本帖最后由 chenall 于 2014-11-29 22:21 编辑
zhaohj 发表于 2014-11-29 21:51
太伟大了,好像加载成功了。
但boot后没反应...
1.不可以使用图形模式...
要启动之前必须要切换到文本模式.否则屏幕就不显示的,
2.还是需要用ipxe来启动的.命令
ipxe boot
嘿嘿,还有更好玩的,给个例子大家就明白了,该干什么干什么去.
ipxe sanhook -d 0xff http://b.chenall.net/ntboot.iso
成功之后就可以在grub4dos下用(0xff)来访问...
再高级一些,变形..实现了map http上的文件(会麻烦一些)
ipxe sanhook -d 0 http://b.chenall.net/xxx.img
map --mem (0)+yyyy (0xff)
ipxe sanunhook -d 0
本帖最后由 zhaohj 于 2014-11-29 22:27 编辑
文本模式下,加载进度条正常,boot还有问题
(ps:直接ipxe下是正常启动的)
另搞个0.4.5.c的测试一下 zhaohj 发表于 2014-11-29 22:23
文本模式下,加载进度条正常,boot还有问题
(ps:直接ipxe下是正常启动的)
这个应该不是grub4dos的问题.
你可以试试直接用ipxe(不转到grub4dos),看看能不能正常启动.
把文件系统功能集成进去了,这样就可以不通过ipxe命令来读取http上的文件了.
改动的内容比较大,请大家尽量多多测试,,
需要测试ipxe功能是否正常,,还有默认情况下(相当于旧版)的文件访问等是否正常.
直接下载顶楼的附件测试..
ipxe功能只有0.4.6a版支持,0.4.5c不打算集成..
再次更新了,源码先提交上传了.不是很稳定,有时会死机重启,大家可以多多测试..
现在可以直接使用http等协议(使用ipxe启动grldr或直接使用新版本的ipxegrldr文件来启动)
map --mem http://b.chenall.net/ntboot.iso (0xff)
map --hook chenall 发表于 2014-12-1 14:46
再次更新了,源码先提交上传了.不是很稳定,有时会死机重启,大家可以多多测试..
现在可以直接使用http等 ...
实机网络测试:
文件服务器:192.168.1.188,支持HTTP、TFTP,管理员权限;
map --mem http://192.168.1.188/2121/siso.iso (0xff)
map --hook
命令行输入后感觉未真正死机,卡死在下图中:
天使的魔翼 发表于 2014-12-1 15:02
实机网络测试:
文件服务器:192.168.1.188,支持HTTP、TFTP,管理员权限;
用这个应该会好一些..
本帖最后由 zhaohj 于 2014-12-1 16:58 编辑
IPXE启动转grub4dos,启动win8pe还是错误。(ps:直接ipxe启动win8pe是可以的)
直接ipxegrldr还未测试 zhaohj 发表于 2014-12-1 16:57
IPXE启动转grub4dos,启动win8pe还是错误。(ps:直接ipxe启动win8pe是可以的)
直接ipxegrldr还未测试
你可以编写一个菜单比如8pe.ipxe放在服务器上
然后直接使用以下命令加载,这样可以避免多次调用带来影响.
ipxe chain 8pe.ipxe
或直接在grub4dos命令行中输入ipxe shell进入ipxe命令行再加载启动..当然了执行 ipxe shell之前记得先切换到文本模式.
我是直接用菜单的:
title --iPXE to grub4dos boot w8pe1
terminal console
pxe keep
ipxe kernel http://192.168.1.11:81/wimboot
ipxe initrd http://192.168.1.11:81/bootmgr.exe bootmgr.exe
ipxe initrd http://192.168.1.11:81/boot/bcd bcd
ipxe initrd http://192.168.1.11:81/boot/boot.sdi boot.sdi
ipxe initrd http://192.168.1.11:81/w8pe/w8pe1.wim boot.wim
ipxe boot
另解决一下端口不是80的问题
zhaohj 发表于 2014-12-1 17:11
我是直接用菜单的:
title --iPXE to grub4dos boot w8pe1
terminal console
我是说ipxe菜单,不是grub4dos菜单.
写一个ipxe脚本,用ipxe chain xxx.ipxe加载应该就行了. zhaohj 发表于 2014-12-1 17:11
我是直接用菜单的:
title --iPXE to grub4dos boot w8pe1
terminal console
新的版本直接使用不要加(pd)否则默认情况下会失败,默认的(pd)是旧的PXE系统.
注意看我的贴子
直接使用
cat http://192.168.1.11:81/menu.lst 本帖最后由 zhaohj 于 2014-12-1 17:40 编辑
g4d命令行下ipxe shell也会死机的
屏幕一直抖动中... zhaohj 发表于 2014-12-1 17:32
g4d命令行下ipxe shell也会死机的
不会死机啊,死机就是你没有切换到文本模式.不能使用图形模式.
其实没有死机,你输入exit命令执行一下看看会不会跳出来. chenall 发表于 2014-12-1 17:41
不会死机啊,死机就是你没有切换到文本模式.不能使用图形模式.
其实没有死机,你输入exit命令执行一下看 ...
不会跳出来,确实死机了
命令行下已经执行terminal console W8PE1.IPXE:
#!ipxe
kernel http://192.168.1.11:81/wimboot
initrd http://192.168.1.11:81/bootmgr.exe bootmgr.exe
initrd http://192.168.1.11:81/boot/bcd bcd
initrd http://192.168.1.11:81/boot/boot.sdi boot.sdi
initrd http://192.168.1.11:81/w8pe/w8pe1.wim boot.wim
boot
看来启动win8pe还有兼容性问题,可能是wimboot问题
-----------------------
进入g4d命令行:
terminal console
ipxe shell
>chain w8pe1.ipxe
C大你也搞个win8p.wim测试一下吧
估计其他的img iso都没有问题的 这个暂时不管,也许是wimboot的问题也不一定.
目前最主要的工作是让grub4dos可以正常访问http上的文件. 本帖最后由 sratlf 于 2014-12-1 23:20 编辑
麻烦帮我看下是哪里的问题启动所需的文件都在 d:\137\boot 文件夹下用tftpd32架的tftp和dhcp easywebserver开的http以及12-01版grub4dos
tftpd32指定ipxegrldr为引导文件虚拟机挂载ipxe.iso启动ipxe.iso是直接用的ipxe官网上的启动后执行 cat http://192.168.239.1/dir.txt 是成功的
执行 map --mem http://192.168.239.1/boot/imgs/dts.ima (0) 失败提示是disk read error但是看easywebserver的提示文件应该传输成功了
sratlf 发表于 2014-12-1 23:18
麻烦帮我看下是哪里的问题启动所需的文件都在 d:\137\boot 文件夹下用tftpd32架的tftp和dhcp easyweb ...
这个正是目前需要解决的问题,