chenall 发表于 2014-11-28 23:10:00

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)

zhaohj 发表于 2015-1-16 11:13:38

我目前也只能用undionly.kpxe来引导,再相互切换启动wimboot就没有问题。
直接用grub4dos引导启动wimboot目前还是重启的。

zhaohj 发表于 2014-11-29 16:11:02

如果pxe启动,没TFTP,只有HTTP或FTP,目前这个grldr能否启动?

chenall 发表于 2014-11-29 17:01:05

zhaohj 发表于 2014-11-29 16:11
如果pxe启动,没TFTP,只有HTTP或FTP,目前这个grldr能否启动?


pxe不可能没有TFTP吧,没有tftp的话任何启动软件都无法启动.

pxe启动的最基础服务就是TFTP.

chenall 发表于 2014-11-29 17:27:05

最新进展,把grub4dos目前的pxe访问直接改成ipxe的API调用,,

竟然可以正常使用ipxe命令(带回显的),不明白这是什么原因?????

chenall 发表于 2014-11-29 20:46:17

包含ipxe命令新的版本0.4.6a源码已经更新上传.
只是增加了一个ipxe命令调用ipxe功能.

大家现在可以测试一下看看有没有什么问题(应该不会有什么问题).

也可以测试一下在grub4dos环境下能否通过ipxe启动http/ftp上的文件.

ipxe文件系统整合,暂时还没有完成.测试整合之后如果在ipxe文件系统执行map命令会重启,还没有找到原因.,好像有内存冲突






zhaohj 发表于 2014-11-29 21:34:27

本帖最后由 zhaohj 于 2014-11-29 21:36 编辑

奇怪,我测试不成功

chenall 发表于 2014-11-29 21:36:31

zhaohj 发表于 2014-11-29 21:34
奇怪,我测试不成功

不是从ipxe启动的..

需要使用ipxe启动的才能使用.

zhaohj 发表于 2014-11-29 21:38:10

你是说从IPXE启动转grub4dos?

chenall 发表于 2014-11-29 21:39:59

zhaohj 发表于 2014-11-29 21:38
你是说从IPXE启动转grub4dos?

是的.

zhaohj 发表于 2014-11-29 21:51:39

本帖最后由 zhaohj 于 2014-11-29 22:02 编辑

太伟大了,好像加载成功了。
但boot后没反应...

chenall 发表于 2014-11-29 22:13:35

本帖最后由 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:23:38

本帖最后由 zhaohj 于 2014-11-29 22:27 编辑

文本模式下,加载进度条正常,boot还有问题
(ps:直接ipxe下是正常启动的)
另搞个0.4.5.c的测试一下

chenall 发表于 2014-11-29 22:26:59

zhaohj 发表于 2014-11-29 22:23
文本模式下,加载进度条正常,boot还有问题
(ps:直接ipxe下是正常启动的)

这个应该不是grub4dos的问题.

你可以试试直接用ipxe(不转到grub4dos),看看能不能正常启动.

chenall 发表于 2014-11-30 17:52:45

把文件系统功能集成进去了,这样就可以不通过ipxe命令来读取http上的文件了.

改动的内容比较大,请大家尽量多多测试,,

需要测试ipxe功能是否正常,,还有默认情况下(相当于旧版)的文件访问等是否正常.

直接下载顶楼的附件测试..


ipxe功能只有0.4.6a版支持,0.4.5c不打算集成..

chenall 发表于 2014-12-1 14:46:51


再次更新了,源码先提交上传了.不是很稳定,有时会死机重启,大家可以多多测试..

现在可以直接使用http等协议(使用ipxe启动grldr或直接使用新版本的ipxegrldr文件来启动)

map --mem http://b.chenall.net/ntboot.iso (0xff)
map --hook

天使的魔翼 发表于 2014-12-1 15:02:19

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
命令行输入后感觉未真正死机,卡死在下图中:

chenall 发表于 2014-12-1 16:37:01

天使的魔翼 发表于 2014-12-1 15:02
实机网络测试:
文件服务器:192.168.1.188,支持HTTP、TFTP,管理员权限;




用这个应该会好一些..

zhaohj 发表于 2014-12-1 16:57:13

本帖最后由 zhaohj 于 2014-12-1 16:58 编辑

IPXE启动转grub4dos,启动win8pe还是错误。(ps:直接ipxe启动win8pe是可以的)
直接ipxegrldr还未测试

chenall 发表于 2014-12-1 17:04:56

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之前记得先切换到文本模式.

zhaohj 发表于 2014-12-1 17:11:11

我是直接用菜单的:
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的问题

chenall 发表于 2014-12-1 17:14:20

zhaohj 发表于 2014-12-1 17:11
我是直接用菜单的:
title --iPXE to grub4dos boot w8pe1
terminal console


我是说ipxe菜单,不是grub4dos菜单.

写一个ipxe脚本,用ipxe chain xxx.ipxe加载应该就行了.

chenall 发表于 2014-12-1 17:16:04

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:32:25

本帖最后由 zhaohj 于 2014-12-1 17:40 编辑

g4d命令行下ipxe shell也会死机的
屏幕一直抖动中...

chenall 发表于 2014-12-1 17:41:20

zhaohj 发表于 2014-12-1 17:32
g4d命令行下ipxe shell也会死机的

不会死机啊,死机就是你没有切换到文本模式.不能使用图形模式.

其实没有死机,你输入exit命令执行一下看看会不会跳出来.

zhaohj 发表于 2014-12-1 17:43:01

chenall 发表于 2014-12-1 17:41
不会死机啊,死机就是你没有切换到文本模式.不能使用图形模式.

其实没有死机,你输入exit命令执行一下看 ...

不会跳出来,确实死机了
命令行下已经执行terminal console

zhaohj 发表于 2014-12-1 17:55:45

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

zhaohj 发表于 2014-12-1 18:02:03

C大你也搞个win8p.wim测试一下吧
估计其他的img iso都没有问题的

chenall 发表于 2014-12-1 19:09:44

这个暂时不管,也许是wimboot的问题也不一定.

目前最主要的工作是让grub4dos可以正常访问http上的文件.

sratlf 发表于 2014-12-1 23:18:14

本帖最后由 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的提示文件应该传输成功了

chenall 发表于 2014-12-2 08:26:34

sratlf 发表于 2014-12-1 23:18
麻烦帮我看下是哪里的问题启动所需的文件都在 d:\137\boot 文件夹下用tftpd32架的tftp和dhcp   easyweb ...

这个正是目前需要解决的问题,
页: [1] 2 3 4
查看完整版本: grub4dos 集成 ipxe 的功能-测试