无忧启动论坛

标题: grub4dos 集成 ipxe 的功能-测试 [打印本页]

作者: chenall    时间: 2014-11-28 23:10
标题: 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等协议.例子:

  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)
复制代码



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


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

pxe启动的最基础服务就是TFTP.
作者: chenall    时间: 2014-11-29 17:27
最新进展,把grub4dos目前的pxe访问直接改成ipxe的API调用,,

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


作者: chenall    时间: 2014-11-29 20:46
包含ipxe命令新的版本0.4.6a源码已经更新上传.
只是增加了一个ipxe命令调用ipxe功能.

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

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

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







作者: zhaohj    时间: 2014-11-29 21:34
本帖最后由 zhaohj 于 2014-11-29 21:36 编辑

奇怪,我测试不成功
作者: chenall    时间: 2014-11-29 21:36
zhaohj 发表于 2014-11-29 21:34
奇怪,我测试不成功

不是从ipxe启动的..

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


作者: zhaohj    时间: 2014-11-29 21:38
你是说从IPXE启动转grub4dos?
作者: chenall    时间: 2014-11-29 21:39
zhaohj 发表于 2014-11-29 21:38
你是说从IPXE启动转grub4dos?

是的.


作者: zhaohj    时间: 2014-11-29 21:51
本帖最后由 zhaohj 于 2014-11-29 22:02 编辑

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

Snap6.jpg (107.85 KB, 下载次数: 224)

Snap6.jpg

Snap7.jpg (25.48 KB, 下载次数: 240)

boot后提示

boot后提示

作者: chenall    时间: 2014-11-29 22:13
本帖最后由 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
本帖最后由 zhaohj 于 2014-11-29 22:27 编辑

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

Snap8.jpg (91.49 KB, 下载次数: 208)

Snap8.jpg

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

这个应该不是grub4dos的问题.

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

作者: chenall    时间: 2014-11-30 17:52
把文件系统功能集成进去了,这样就可以不通过ipxe命令来读取http上的文件了.

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

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

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


ipxe功能只有0.4.6a版支持,0.4.5c不打算集成..
作者: chenall    时间: 2014-12-1 14:46

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

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

map --mem http://b.chenall.net/ntboot.iso (0xff)
map --hook
作者: 天使的魔翼    时间: 2014-12-1 15:02
chenall 发表于 2014-12-1 14:46
再次更新了,源码先提交上传了.不是很稳定,有时会死机重启,大家可以多多测试..

现在可以直接使用http等 ...

实机网络测试:
文件服务器:192.168.1.188,支持HTTP、TFTP,管理员权限;
  1. map --mem http://192.168.1.188/2121/siso.iso (0xff)
  2. map --hook
复制代码

命令行输入后感觉未真正死机,卡死在下图中:

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


用这个应该会好一些..

grldr.zip

160.9 KB, 下载次数: 56, 下载积分: 无忧币 -2


作者: zhaohj    时间: 2014-12-1 16:57
本帖最后由 zhaohj 于 2014-12-1 16:58 编辑

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

Snap1.jpg (36.45 KB, 下载次数: 213)

Snap1.jpg

作者: chenall    时间: 2014-12-1 17:04
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
我是直接用菜单的:
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的问题

Snap2.jpg (61.83 KB, 下载次数: 206)

Snap2.jpg

作者: chenall    时间: 2014-12-1 17:14
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
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
本帖最后由 zhaohj 于 2014-12-1 17:40 编辑

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

Snap3.jpg (32.49 KB, 下载次数: 232)

Snap3.jpg

作者: chenall    时间: 2014-12-1 17:41
zhaohj 发表于 2014-12-1 17:32
g4d命令行下ipxe shell也会死机的

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

其实没有死机,你输入exit命令执行一下看看会不会跳出来.
作者: zhaohj    时间: 2014-12-1 17:43
chenall 发表于 2014-12-1 17:41
不会死机啊,死机就是你没有切换到文本模式.不能使用图形模式.

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

不会跳出来,确实死机了
命令行下已经执行terminal console
作者: zhaohj    时间: 2014-12-1 17:55
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

Snap4.jpg (30.52 KB, 下载次数: 177)

Snap4.jpg

作者: zhaohj    时间: 2014-12-1 18:02
C大你也搞个win8p.wim测试一下吧
估计其他的img iso都没有问题的
作者: chenall    时间: 2014-12-1 19:09
这个暂时不管,也许是wimboot的问题也不一定.

目前最主要的工作是让grub4dos可以正常访问http上的文件.
作者: sratlf    时间: 2014-12-1 23:18
本帖最后由 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
sratlf 发表于 2014-12-1 23:18
麻烦帮我看下是哪里的问题  启动所需的文件都在 d:\137\boot 文件夹下  用tftpd32架的tftp和dhcp   easyweb ...

这个正是目前需要解决的问题,
作者: zhaohj    时间: 2014-12-2 08:46
pxe basedir有问题

Snap1.jpg (34.33 KB, 下载次数: 157)

Snap1.jpg

作者: chenall    时间: 2014-12-2 09:01
zhaohj 发表于 2014-12-2 08:46
pxe basedir有问题

pxe type 1

没有执行该命令时默认的(pd)不会调用ipxe读文件.

请仔细看顶楼的贴子.
作者: zhaohj    时间: 2014-12-2 09:16
一样啊            

Snap2.jpg (33.16 KB, 下载次数: 160)

Snap2.jpg

作者: chenall    时间: 2014-12-2 09:27
zhaohj 发表于 2014-12-2 09:16
一样啊

可能是个BUG,我再查一下看看
作者: 天使的魔翼    时间: 2014-12-2 11:26
本帖最后由 天使的魔翼 于 2014-12-2 11:28 编辑
chenall 发表于 2014-12-1 16:37
用这个应该会好一些..


完美解决好了,配合H3大大的最新PE可以做些命令行的动作了。
可惜我一直只能在命令行使用,不能使用图形模式。
作者: chenall    时间: 2014-12-2 15:33
好消息,经过多次调试跟踪目前应该是找到问题的原因了..

ipxe也真是的,PXENV_FILE_READ读取一个块的大小是不固定的,
作者: zhaohj    时间: 2014-12-3 11:13
我也报告一个好消息,ipxe->grub4dos,成功启动http上的wim8pe
只要在script开始的地方加入下面命令解决:
#!ipxe
   imgfree
作者: chenall    时间: 2014-12-3 11:16
本帖最后由 chenall 于 2014-12-3 11:17 编辑
zhaohj 发表于 2014-12-3 11:13
我也报告一个好消息,ipxe->grub4dos,成功启动http上的wim8pe
只要在script开始的地方加入下面命令解决: ...


嗯,我倒是忘记了这个,使用ipxe加载grldr之后grldr的镜像没有自动释放.

你现在还是使用ipxe的命令来启动的

可以测试了一下最新版的,直接使用GRUB4DOS的方案,类似如下语句.
pxe type 1
pxe basedir /http://xx.yy.com/
root (pd)/
kernel /wimboot
initrd @bcd=/bcd @bootmgr=/bootmgr @boot.sdi=/boot/boot.sdi @boot.wim=@/boot/boot.wim
作者: zhaohj    时间: 2014-12-3 11:57
本帖最后由 zhaohj 于 2014-12-3 11:58 编辑

initrd @bcd=/bcd @bootmgr=/bootmgr @boot.sdi=/boot/boot.sdi @boot.wim=@/boot/boot.wim
boot.sdi、boot.wim是压缩的,读了两次。
而用ipxe脚本只读一次.
0x8270 能否解决?

Snap2.jpg (52.81 KB, 下载次数: 203)

Snap2.jpg

作者: chenall    时间: 2014-12-3 12:02
应该没有读两次,initrd不会自动解压的.可能是第一次是为了获取文件大小.

有读两次的就可以发现时间明显变长(特别是大文件)
作者: zhaohj    时间: 2014-12-4 10:38
本帖最后由 zhaohj 于 2014-12-4 11:16 编辑

C大,ipxegrldr的配置文件怎么修改?
怀疑12-3版本引入了bug,用ipxegrldr在g4d下引导win8pe不成功。
title \t[ 9]-Win8PE 网络版
pxe keep
terminal console
kernel /wimboot
initrd @bcd=/boot/bcd @bootmgr=/bootmgr @boot.sdi=/boot/boot.sdi @boot.wim=/w8pe/w8pe1.wim
-----------------------------
再用ipxe的undionly.kpxe作为启动文件,同样菜单成功!
说明IPXEGRLDR还是有问题
作者: chenall    时间: 2014-12-4 11:23
本帖最后由 chenall 于 2014-12-4 11:25 编辑

配置文件是内置的,编译的时候内置合成(在0.4.6a的build文件后面有编译命令,你也可以自己编译.),不能修改..

你也可以直接使用ipxe,而不使用ipxegrldr,ipxegrldr只是把ipxe和配置文件和grldr整合在了一起.

不能使用有没有什么错误提示?有没有更详细的信息,我好定位问题原因.
作者: zhaohj    时间: 2014-12-4 14:29
chenall 发表于 2014-12-4 11:23
配置文件是内置的,编译的时候内置合成(在0.4.6a的build文件后面有编译命令,你也可以自己编译.),不能修改..
...


我来几个暂定键试试,目前的大致感觉是:内存没有清理干净,或内存冲突。目前的状态是直接重启。

作者: xiaoy    时间: 2014-12-5 12:38
有没有办法实现不进入pe  在 ipxegrldr 环境中将http上的wim恢复到本地硬盘  
作者: chenall    时间: 2014-12-5 14:16
zhaohj 发表于 2014-12-4 14:29
我来几个暂定键试试,目前的大致感觉是:内存没有清理干净,或内存冲突。目前的状态是直接重启。

可以再试试新版的,看看有没有改善.

作者: chenall    时间: 2014-12-5 14:19
本帖最后由 chenall 于 2014-12-5 14:20 编辑
xiaoy 发表于 2014-12-5 12:38
有没有办法实现不进入pe  在 ipxegrldr 环境中将http上的wim恢复到本地硬盘


这个办法肯定是有的,只是很麻烦目前没有人做这个.
1.首先需要有NTFS/FAT文件系统的读写驱动.
2.需要解压WIM格式的驱动.

然后再把上面的相关代码整合起来,就可以实现了.

说起来是简单,要实现起来可不简单.

如果GRUB4DOS哪一天有支持文件写入功能那就比较简单了.

Kolibri 好像是个不错的的选择,这个里面好像已经有支持NTFS的读写,只需要再编译一个解压WIM的程序就可以了.
作者: zhaohj    时间: 2014-12-5 18:13
本帖最后由 zhaohj 于 2014-12-6 14:00 编辑

IPXGRLDR启动测试,加载完文件后还是直接重启。
加载过程都很正常。
----------------------------
IPXGRLDR也无需关注,还是使用ipxe自带的启动文件就可以了。而且undionly.kpxe很小(不到70kb),如果能下载源码改动一下启动界面是一个不错的选择。


作者: zhaohj    时间: 2014-12-6 14:38
另问一下:
[SetupData]
BootDevice="ramdisk(0)"
BootPath="\WXPE\SYSTEM32\"
OsLoadOptions="/fastdetect /minint /rdimageoffset=8192 /rdimagelength=3161088 /rdpath=\H3PE\WINPEIN.WIM"
  或OsLoadOptions="/minint /fastdetect /rdpath=\H3PE\WINPEIN.IMG"
     OsLoadOptions="/minint /fastdetect /rdpath=\H3PE\WINPEIN.ISO"
这种原来的pxe启动方式是从tftp下载的,怎么改成HTTP下载?
作者: chenall    时间: 2014-12-6 14:40
zhaohj 发表于 2014-12-6 14:38
另问一下:
[SetupData]
BootDevice="ramdisk(0)"

这个估计不支持吧.
作者: sunsea    时间: 2014-12-6 20:39
本帖最后由 sunsea 于 2014-12-6 20:41 编辑
chenall 发表于 2014-12-5 14:19
这个办法肯定是有的,只是很麻烦目前没有人做这个.
1.首先需要有NTFS/FAT文件系统的读写驱动.
2.需要 ...


ntfs可以参考nt4的泄露源码,http://bbs.wuyou.net/forum.php?mod=viewthread&tid=348796,fat很简单谁都会,WIM解压可以抄7z的,完毕,要善于利用拿来主义
作者: wln    时间: 2014-12-23 12:01
实机环境下,使用IPXE会报0x040ee119错,使用grub4dos和prelinux.0都很正常。
但就是TFTP的速度太慢,还是想用HTTP。
不知道能不能直接从grub4dos进而不是IPXE,又可以直接使用IPXE的HTTP呢?
谢谢啊

无标题.jpg (233.3 KB, 下载次数: 114)

无标题.jpg

作者: chenall    时间: 2014-12-23 12:06
wln 发表于 2014-12-23 12:01
实机环境下,使用IPXE会报0x040ee119错,使用grub4dos和prelinux.0都很正常。
但就是TFTP的速度太慢,还是 ...


使用是的什么启动文件?

可以试试ipxegrldr如果还是不行的话只能使用完整版本的ipxe
作者: wln    时间: 2014-12-23 13:41
就是完整版本的ipxe会报错,查看了网上的讨论,说换成undionly.Kkpxe可以解决,但没有找到。
ipxegrldr其实就是IPXE+GRLDR吧?
谢谢啊
作者: wln    时间: 2014-12-23 13:44
ipxegrldr其实就是先IPXE再转成GRLDR的吧?估计IPXE这里就过不去了
作者: chenall    时间: 2014-12-23 14:48
wln 发表于 2014-12-23 13:44
ipxegrldr其实就是先IPXE再转成GRLDR的吧?估计IPXE这里就过不去了

ipxegrldr就是ondionly.kpxe集成了GRLDR,你可以试一下看看能不能用.
作者: wln    时间: 2015-1-14 16:05
chenall 发表于 2014-12-23 14:48
ipxegrldr就是ondionly.kpxe集成了GRLDR,你可以试一下看看能不能用.

用了grub4dos-0.4.6a-2015-01-09里面的ipxgrldr,也一样会报上面的错。
用grldr转ipxe能引导,也能正常下载文件,包括WIM的文件,但进PE报错
试过WIMBOOT2.0.0和2.4.1都不行
配置文件如下:
menu.lst
title HTTP 启动测试 ipxe\n测试IPX的HTTP。
pxe keep
kernel /ipxe.krn
initrd /boot/http.ipx

http.ipx:
#!ipxe
dhcp
chain /boot/menu.txt

menu.txt:
:bootpe
  kernel ${xieyi}://${next-server}/boot/wimboot gui || goto retry
  initrd ${xieyi}://${next-server}/boot/boot.sdi   boot.sdi  || goto retry
  iseq ${platform} pcbios || goto winefi
  initrd ${xieyi}://${next-server}/boot/bootmgr.exe bootmgr.exe || goto retry
  initrd ${xieyi}://${next-server}/boot/bcd bcd || goto retry
  initrd ${xieyi}://${next-server}/boot/${pefile}  boot.WIM  || goto retry
  boot || goto retry
虚拟机中,用ipxe.pxe和这个MENU.TXT是可以正常进PE的

IMG_20150114_150906.jpg (282.16 KB, 下载次数: 122)

IMG_20150114_150906.jpg

IMG_20150114_155512.jpg (473.36 KB, 下载次数: 133)

IMG_20150114_155512.jpg

作者: chenall    时间: 2015-1-14 20:09
wln 发表于 2015-1-14 16:05
用了grub4dos-0.4.6a-2015-01-09里面的ipxgrldr,也一样会报上面的错。
用grldr转ipxe能引导,也能正常 ...

不需要转过来转过去的.

ipxegrldr直接可以使用ipxe的所有功能(ipxe启动和grldr效果一样)

直接在grub4dos命令行下加载ipxe的脚本文件.
ipxe chain /boot/menu.txt

作者: wln    时间: 2015-1-14 22:45
直接用ipxegrldr引导不了,报0X040EE119
作者: wln    时间: 2015-1-14 22:46
的错误。grldr的引导很稳定,主要是想用ipxe的http,所以想从grldr转ipxe
作者: captain_g    时间: 2015-1-15 09:36
wln 发表于 2014-12-23 13:41
就是完整版本的ipxe会报错,查看了网上的讨论,说换成undionly.Kkpxe可以解决,但没有找到。
ipxegrldr其 ...

去这里看看吧:

http://boot.ipxe.org/
作者: wln    时间: 2015-1-15 10:32
captain_g 发表于 2015-1-15 09:36
去这里看看吧:

http://boot.ipxe.org/

非常感谢!
试了其中2015.1.15的文件,错误提示仍然一样
作者: wln    时间: 2015-1-15 10:43
太搞也了,用grldr转ipxe.krn启动不了WIM文件
改用grub.exe结果就成功了
折腾了这么久,方案暂定为GRUB4DOS+IPXE
主要是取GRUB4DOS引导的兼容性和IPXE支持HTTP和里面内置LOGIN命令输入用户和密码以及可以显示机器系列号的功能。
感谢各位大神,互联网真美好
作者: 不点    时间: 2015-1-15 11:10
@wln

grldr 与 grub.exe 几乎是一模一样的,你所描述的如此巨大的差别,应该是不存在的。

我猜测,你的 grldr 没被启用,很可能是你机器上某个老的或者冒名顶替的 grldr 在暗地里起作用。因此,你换成 grub.exe 就好了。


作者: wln    时间: 2015-1-15 11:41
谢谢不点大师指点。
是我搞错了,我在U盘运行TFTPD4.5就正常,而同样的文件夹复制到同一台机器的硬盘用同样的软件、同样的配置来运行,就会报上面的CPIO错。
初步估计是用户权限、域控策略或者NORTON sep限制的原因,还在找原因
感谢大师
作者: chenall    时间: 2015-1-15 21:19
我实现测了几台,也发现WIMBOOT直接重启的现象,目前估计是内存的问题..

有空我再看看.
作者: wln    时间: 2015-1-15 21:57
用wimboot2.0.0现在不重启了
作者: chenall    时间: 2015-1-16 09:08
wln 发表于 2015-1-14 16:05
用了grub4dos-0.4.6a-2015-01-09里面的ipxgrldr,也一样会报上面的错。
用grldr转ipxe能引导,也能正常 ...

我明白这个问题的原因了.

在加载wimboot的initrd之前
先执行imgfree确保当前的imgstat显示的内容为空.

另外在启动之前检查一下imgstat的内容,是不是有多余的文件..

另外如果是使用一个脚本来启动的那需要加-a参数,否则也会失败.

例子(在grub4dos环境下)
ipxe imgfree
ipxe chain -a http://192.168.0.1/8pe.ini

imgfree 可以多执行几次,确保成功率.(只要imgstat显示的内容为空就行了)

这样可以成功启动.不加-a的话由于这个菜单文件也包含在内了,会失败.
作者: chenall    时间: 2015-1-16 09:09
当然了,上面的直接使用ipxe的启动方案..

用grub4dos启动还是会重启,我还没有找到原因.
作者: zhaohj    时间: 2015-1-16 11:13
我目前也只能用undionly.kpxe来引导,再相互切换启动wimboot就没有问题。
直接用grub4dos引导启动wimboot目前还是重启的。
作者: chenall    时间: 2015-1-16 13:16
zhaohj 发表于 2015-1-16 11:13
我目前也只能用undionly.kpxe来引导,再相互切换启动wimboot就没有问题。
直接用grub4dos引导启动wimboot ...

所谓的"相互切换启动wimboot就没有问题"是指用grub4dos直接启动wimboot没有问题吗?

还是说用grub4dos的ipxe启动wimboot没有问题.或者直接用ipxe启动wimboot没有问题.

grub4dos的ipxe功能是可以正常使用的(包用使用wimboot),因为这些都是ipxe的原生功能.

用grub4dos的initrd是我后面加的,可能有一些东西没有考虑到,回头我再看看ipxe的代码.看看能不能解决.
作者: canmao    时间: 2015-2-12 10:48
chenall 发表于 2015-1-16 13:16
所谓的"相互切换启动wimboot就没有问题"是指用grub4dos直接启动wimboot没有问题吗?

还是说用grub4dos ...

ipxegrldr 的 pxe basedir 命令bug:

作者: chenall    时间: 2015-2-12 11:20
canmao 发表于 2015-2-12 10:48
ipxegrldr 的 pxe basedir 命令bug:

前面不要加"/",早期的版本限定必须加"/",感觉不直观

后面的版本我改了,对于http/tftp等不要加"/"

不过刚看代码的时候发现处理还是有一些问题,下次更新一起再改下.
作者: xiaoy    时间: 2015-3-2 12:22
想请教如何编辑IPXEGRLDR内置的菜单   希望有哪位能出个编辑工具
作者: chenall    时间: 2015-3-2 12:35
xiaoy 发表于 2015-3-2 12:22
想请教如何编辑IPXEGRLDR内置的菜单   希望有哪位能出个编辑工具

这个没有办法编辑,你可以重新编译,或者直接使用ondionly.kpxe配合自己的菜单来使用效果是一样的.
作者: zhaohj    时间: 2015-3-2 16:12
undionly.kpxe转grldr0.4.6,目前启动win8pe正常了,不会出现重启了。那说明ipxegrldr也正常了。
不过我还是喜欢undionly.kpxe+grldr来启动。或者C大让用户能加载默认的ipxe启动文件,如menu.ipxe。
另外建议把 ipxegrldr的启动界面搞干净一点,反正用户干预的机会很少。
作者: chenall    时间: 2015-3-2 17:10
zhaohj 发表于 2015-3-2 16:12
undionly.kpxe转grldr0.4.6,目前启动win8pe正常了,不会出现重启了。那说明ipxegrldr也正常了。
不过我还 ...

新版本的启动界面已经很干净了,去掉了菜单,只是ipxe的启动信息好像没有办法隐藏.
作者: zhaohj    时间: 2015-3-3 10:31
本帖最后由 zhaohj 于 2015-3-3 10:38 编辑

我也测试了grldr+ipxe.krn也是成功的,说明现在很稳定了。
目前想想办法隐藏 ipxe的启动信息。
----------------
我曾经遇到一台新机器,IPXE检测不到网卡,说明网卡驱动是需要经常更新的。ipxegrldr会根据IPXE提供的最新版经常更新吗?
作者: chenall    时间: 2015-3-3 10:52
zhaohj 发表于 2015-3-3 10:31
我也测试了grldr+ipxe.krn也是成功的,说明现在很稳定了。
目前想想办法隐藏 ipxe的启动信息。
--------- ...


这个在编译之前会自动更新ipxe的源码到最新版本的.实事上我们使用的是undionly这个驱动一般是不更新的.

要支持所有驱动的可以使用完整的ipxe
作者: zhaohj    时间: 2015-3-5 16:53
IPXEGRLDR还是不稳定,实机测试了几台机器(win8pe.wim,用wimboot)在boot时会产生问题:
1:dell的机器死机
2:技嘉的主板更奇怪,返回到grldr菜单(terminal console状态)
3:vm虚拟机正常
作者: chenall    时间: 2015-3-5 17:15
本帖最后由 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整合一起而已.
作者: zhaohj    时间: 2015-3-5 17:22
但目前使用undionly.kpxe+grldr 一起正常!
1:undionly.kpxe启动直接启动win8pe正常;
2:undionly.kpxe转grldr,再启动win8pe也正常。
同样使用的是wimboot
作者: snailstart    时间: 2016-3-22 20:03
chenall 发表于 2014-11-29 22:13
1.不可以使用图形模式...
要启动之前必须要切换到文本模式.否则屏幕就不显示的,
2.还是需要用ipxe来 ...

什么时候能本地直接启动带ipxe功能,我觉得有这种需求呀
作者: chenall    时间: 2016-3-23 09:37
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


作者: minmax    时间: 2016-3-24 10:31
MENU語法
menu.lst
title ipxegrldr.lkrn
kernel /ipxegrldr.lkrn
作者: snailstart    时间: 2016-3-28 20:17
chenall你好,请问ipxegrldr是怎么生成的,我编译grub4dos只有grldr,我是小白~感谢.
作者: chenall    时间: 2016-3-29 08:11
snailstart 发表于 2016-3-28 20:17
chenall你好,请问ipxegrldr是怎么生成的,我编译grub4dos只有grldr,我是小白~感谢.

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

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

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


作者: snailstart    时间: 2016-3-29 19:17
本帖最后由 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的源码,你有什么资料推荐下吗。感谢。
作者: freesoft00    时间: 2016-3-29 19:38
chenall 发表于 2016-3-29 08:11
把ipxe的源码放到同一目录下,存放例子。

grub4dos-src

你正的那个编译环境在哪里下载
作者: chenall    时间: 2016-3-30 08:17
freesoft00 发表于 2016-3-29 19:38
你正的那个编译环境在哪里下载

grub4dos_dev_2014-06-25.7z

这个是只能在32位系统下使用的,可以编译GRUB4DOS和外部命令,不支持IPXE
作者: chenall    时间: 2016-3-30 08:19
snailstart 发表于 2016-3-29 19:17
你好chenall,是我理解错了还是怎么着,我的grub4dos-src下放着4dos的源码和ipxe的目录,grub4dos/ipxe ...

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

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


作者: snailstart    时间: 2016-3-30 17:33
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也给释放掉了?纯属猜测。。。

作者: 不点    时间: 2016-3-30 18:54
本帖最后由 不点 于 2016-3-30 18:55 编辑

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

应该直接调用 memdisk 或 grub4dos 的仿真功能,而不是自己再整出一套仿真程序。因为那八成会添乱的。
作者: snailstart    时间: 2016-3-31 07:34
本帖最后由 snailstart 于 2016-3-31 07:35 编辑
不点 发表于 2016-3-30 18:54
个人认为,hook 中断 int13 的事情,最好别做。为什么呢?因为很难做好这个工作。memdisk 和 grub4dos 费了 ...


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

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

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

IPXEGRLDR其实就是IPXE和GRLDR整合在一起的文件,分开不影响使用。
作者: 不点    时间: 2016-3-31 08:38
本帖最后由 不点 于 2016-3-31 08:48 编辑

我的建议是,在实模式阶段,不要让别的软件来创建虚拟盘(接管int13),只让 grub4dos 来创建。grub4dos 创建的虚拟盘,是能够与各种 DOS、各种 Windows 兼容的,不至于发生莫名其妙的失败。grub4dos 是 BIOS 模式下与微软兼容性最好的开源启动管理软件(没有之一,姑且用用这个流行广告语)。只用 map 命令创建虚拟盘,不要用其他方法。
作者: snailstart    时间: 2016-3-31 09:59
chenall 发表于 2016-3-31 08:23
如果你确定直接使用ipxe没有问题的话是可以直接使用IPXE+GRLDR而不是使用IPXEGRLDR

也就是主引导用IPX ...

分开的ipxe-》grldr-》在grldr下用ipxe的sanboot问题一样,应该不是合成和分开的造成的。
只有单纯的用ipxe的sanboot没问题。
作者: chenall    时间: 2016-3-31 10:02
我的意思是你这个菜单中需要IPXE的功能完全没有必要进GRUB4DOS。可以直接在IPXE中单独启动,需要用到GRUB4DOS的功能时再进入GRUB4DOS
作者: 不点    时间: 2016-4-1 09:42
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。两者不打架。


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

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

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




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3