iPXE wimboot 现在支持UEFI下的http/ftp启动了
本帖最后由 我是神仙 于 2014-9-29 12:24 编辑iPXE网络启动可以通过HTTP/FTP轻松达到千兆速度,比普通TFTP快得多
不过以前iPXE对UEFI支持不太好,UEFI时好像不支持http/ftp等高级功能。
但前几天, iPXE上的wimboot有更新了(ipxe.org/wimboot), 支持UEFI下的http/ftp启动windows PE 8.1了。
试了一下确实很不错。有兴趣的可以去试一下
新版2.3.0支持32位和64位的UEFI启动
https://git.ipxe.org/release/wimboot/wimboot-latest.zip
32位用wimboot.i386
普通BIOS和32位EFI 64位EFI要分别用不同的iPXE版本才能启动。
如果想用同一个PXE服务器 同时适应pcibios 及 32位 和 64位 不同架构的网络启动,需要对DHCP服务作相应的配置。
如果是用的HanewinDHCP Server,可以多建几个配置profile.(Option > manage profiles > add)
并用Vendor Class作为条件
PXEClient:Arch:00000 则指向 ipxe/pcibios/ipxe.pxe
PXEClient:Arch:00006 则指向 ipxe/efi.i386/ipxe.efi
PXEClient:Arch:00007 则指向 ipxe/efi.x86_64/ipxe.efi
PXEClient:Arch:00009 则指向 ipxe/default.ipxe
...
PXEClient:Arch:00000这个也可以就用默认的 for Interface IP Address作为条件就行了
As of the writing of this document, the following pre-boot
architecture types have been requested.
Type Architecture Name
---- -----------------
0 Intel x86PC
1 NEC/PC98
2 EFI Itanium
3 DEC Alpha
4 Arc x86
5 Intel Lean Client
6 EFI IA32
7 EFI BC
8 EFI Xscale
9 EFI x86-64
http://tools.ietf.org/html/rfc4578
本帖最后由 我是神仙 于 2014-9-25 09:38 编辑
我看那个snponly.efi不好用。一般都用的ipxe.efi.反正换着用 哪个行就用哪个
https://rom-o-matic.eu/ 这里可以编译。不过我也经常打不开这个网站
有没有新版ipxe-snponly.efi,懒得去编译,分享下
试试新版兼容性怎么样 ljycslg 发表于 2014-9-8 12:10
有没有新版ipxe-snponly.efi,懒得去编译,分享下
试试新版兼容性怎么样
已上传 试试吧 我是神仙 发表于 2014-9-8 12:25
已上传 试试吧
不错,实机测试很给力
vmware上HTTP超给力,bootx64.efi的tftp基本龟速
遗憾的是hyper-V无论是http还是tftp都是龟速 ljycslg 发表于 2014-9-8 13:13
不错,实机测试很给力
vmware上HTTP超给力,bootx64.efi的tftp基本龟速
遗憾的是hyper-V无论是http还是 ...
确实 见识过了wimboot的千兆威力之后 再也不能忍受tftp那个龟速了
hyperV那个确实要慢一些 搞不懂 本帖最后由 hhh333 于 2014-9-10 05:38 编辑
没玩成功,启动出菜单,但提示错误,我的菜单如下:
#!ipxe
#set menu-timeout 8000
set menu-default w8pe64
isset ${ip} || dhcp
isset ${next-server} || set next-server 192.168.7.100
:start
menu iPXE EFI Boot Menu
item --gap -- -------------------------------- H3 PE TOOL ---------------------------
item w8pe64 Win8 PE 64
item w81pe64 Win81 PE 64
item --gap -- -----------------------------------------------------------------------
choose --timeout ${menu-timeout} --default ${menu-default} selected
goto ${selected}
:failed
echo Booting failed, dropping to shell
goto shell
:w8pe64
kernel http://${next-server}/BOOT/wimboot
initrd http://${next-server}/efi/boot/bootx64.efi bootx64.efi
initrd http://${next-server}/efi/microsoft/boot/bcd bcd
initrd http://${next-server}/BOOT/boot.sdi boot.sdi
initrd http://${next-server}/BOOT/H3_8PE64.WIM H3_8PE64.WIM
boot || goto failed
goto start
:w81pe64
kernel http://${next-server}/BOOT/wimboot
initrd http://${next-server}/efi/boot/bootx64.efi bootx64.efi
initrd http://${next-server}/efi/microsoft/boot/bcd bcd
initrd http://${next-server}/BOOT/boot.sdi boot.sdi
initrd http://${next-server}/BOOT/H3_81P64.WIM H3_81P64.WIM
boot || goto failed
goto start
所有文件读取正常,BCD中菜单也可以出,但最后一步出错。过程如下:
我大致是这么玩的:
1、先到网站去编译一个snponly.efi,再改名:efi/boot/iPXE64.efi。脚本简单,就是两条语句
#!ipxe
isset ${ip} || dhcp
chain --autofree BOOT/H3_iPXEM.EFI
2、将真正的菜单内容(见上)保存为BOOT/H3_iPXEM.EFI
3、在haneWIN指定EFI启动文件为efi/boot/iPXE64.efi,如下图:
又用pause暂停了wimboot一下,好象也无问题:
经反复测试,感觉到WIM文件不能改名,只有用boot.wim,否则歇菜。 hhh333 发表于 2014-9-10 06:25
经反复测试,感觉到WIM文件不能改名,只有用boot.wim,否则歇菜。
是有这个问题,wimboot新版也有bug,在vmware下bios启动蓝屏,暂时只能这样,bios用老版2.1.0版,efi用新版 ljycslg 发表于 2014-9-10 08:10
是有这个问题,wimboot新版也有bug,在vmware下bios启动蓝屏,暂时只能这样,bios用老版2.1.0版,efi用新 ...
我都是用vmware呢 . 8.02,bios或uefi都没有蓝屏 本帖最后由 我是神仙 于 2014-9-10 11:43 编辑
hhh333 发表于 2014-9-10 06:25
经反复测试,感觉到WIM文件不能改名,只有用boot.wim,否则歇菜。
initrd http://${next-server}/BOOT/H3_8PE64.WIM H3_8PE64.WIM
试了一下,改成这样就行了:
initrd http://${next-server}/BOOT/H3_8PE64.WIM boot.WIM
---
哦 efi那个确实改名了就不行了。。。
--再修改一下 不是不能改名 而是不支持你那个名字。
具体点说,感觉不支持下划线 把你那个名字中的下划线去掉 就可以启动了
initrd http://${next-server}/BOOT/H38PE64.WIM H38PE64.WIM 我是神仙 发表于 2014-9-10 10:16
我都是用vmware呢 . 8.02,bios或uefi都没有蓝屏
我是最新版VM ,仔细测试了下,本机上的VM出现灵异现象,是用桥接模式出问题,host-only就可以,在其他机子上的VM桥接也可以,问题不大 刚才看了一下 昨天wimboot的作者又发布了一个新版本2.2.4!
看来这几天作者正在频繁更新。可以再等下。有渠道的也可以把自己的测试结果告诉作者一下以便尽快修正吧
12 hours ago Michael Brown Release version 2.2.4 master v2.2.4
12 hours ago Michael Brown Force correct DeviceHandle on loaded bootmgfw.efi
。。。
本帖最后由 我是神仙 于 2014-9-10 11:57 编辑
hhh333 发表于 2014-9-10 06:25
经反复测试,感觉到WIM文件不能改名,只有用boot.wim,否则歇菜。
试过了 不是不能改名 而是不支持你那个名字。
具体点说,感觉不支持下划线 把你那个名字中的下划线去掉 就可以启动了
initrd http://${next-server}/BOOT/H38PE64.WIM H38PE64.WIM
--
除了脚本,bcd文件中也要对应修改
--
晕 再改正一下
再试了一下 感觉不是不支持下划线,而是文件名长度只支持7个字母。所以任意删除一个字符感觉都可以启动,如把H3_8PE64.WIM 改为 H3_8PE6.WIM
不过一般都是8.3文件名,这里为什么是限制为7 没搞懂 hhh333 发表于 2014-9-10 06:25
经反复测试,感觉到WIM文件不能改名,只有用boot.wim,否则歇菜。
经过多次实验,确认它这个wim的文件名只能是7个字符以内。8个字符就会出错
hhh333 发表于 2014-9-10 06:25
经反复测试,感觉到WIM文件不能改名,只有用boot.wim,否则歇菜。
7个字符以内 我是神仙 发表于 2014-9-10 12:03
7个字符以内
竟然是这个样子的,我试一下,看来还有bug,不忙更新。先好好测试一下。 现在新版的wimboot同时支持efi和bios启动了,理想的情况下 可以使用完全相同的脚本启动
理想的情况就是比如说直接用win8安装光盘中的sources\boot.wim,可以自动解压里面的bootmgr 或 bootmgfw.efi,不用单独提供。
并且bcd文件即使是指向winload.exe它也可以自动指向winload.efi
如果是其他wim, 如hhh333那个,也可以用同一个脚本,只是要在脚本中做一下判断。如果是EFI启动就加载bootx64.efi,如果是BIOS就加载bootmgr(或bootmgr.exe,都可以。它是自动从bootmgr解压bootmgr.exe)
判断是否为EFI启动:
iPXE 启动后有个变量platform,判断一下这个变量是 efi 还是 pcbios 就行 了
iPXE> show platform
builtin/platform:string = efi
我是神仙 发表于 2014-9-10 12:52
现在新版的wimboot同时支持efi和bios启动了,理想的情况下 可以使用完全相同的脚本启动
理想的情况就是 ...
我想为启动项指定不同的BCD,如:initrd http://${next-server}/efi/microsoft/boot/b64 bcd
提示出错,必须为initrd http://${next-server}/efi/microsoft/boot/bcd bcd
这个算不算bug,用了kernel http://${next-server}/BOOT/wimboot rawbcd也没有用。 本帖最后由 我是神仙 于 2014-9-10 13:47 编辑
hhh333 发表于 2014-9-10 13:39
我想为启动项指定不同的BCD,如:initrd http://${next-server}/efi/microsoft/boot/b64 bcd
提示出错 ...
我自己用的是 initrd boot/bcf bcf
两个文件名要一致。bcf是在bootmgr.exe中修改
--
efi的话应该是修改bootx64.efi吧.efi文件这个倒没改过。不过我在其他地方好像看到你改过.efi文件的吧 我是神仙 发表于 2014-9-10 13:42
我自己用的是 initrd boot/bcf bcf
两个文件名要一致。bcf是在bootmgr.exe中修改
记得:initrd http://${next-server}/BOOT/H3_MGR16.BIN bootmgr
是可以的 hhh333 发表于 2014-9-10 13:47
记得:initrd http://${next-server}/BOOT/H3_MGR16.BIN bootmgr
是可以的
估计关键是要修改bootmgr(其实就是修改里面的bootmgr.exe)。bootx64.efi这个应该类似,拿个二进制工具修改 不过没改过。bootmgr.exe倒改过的,只改一个字节就把bcd改成bcf了 我是神仙 发表于 2014-9-10 13:50
估计关键是要修改bootmgr(其实就是修改里面的bootmgr.exe)。bootx64.efi这个应该类似,拿个二进制工具 ...
我改过bootx64.efi,没有问题,不想搞很多启动文件 hhh333 发表于 2014-9-10 13:58
我改过bootx64.efi,没有问题,不想搞很多启动文件
刚才我也试了下 查找5C 00 42 00 43 00 44 即\BCD 改为其他的如BCG 确实可以启动。 现在那个initrd好像确实要求文件名要一致。 pxe直接启动时好像有个DHCP选项(252)可以控制bcd文件名,wimboot倒不知道可不可以用到这个选项 hhh333 发表于 2014-9-10 13:47
记得:initrd http://${next-server}/BOOT/H3_MGR16.BIN bootmgr
是可以的
我试了下 现在新版的wimboot实际上简化了 initrd后面不用重复一次文件名了
即不用initrd boot/bcd bcd
而是直接 initrd boot/bcd 这样就行了。后面写的文件名没啥用了。
本身是简化了。不过想用这个来重命名文件却不行了。。。到底是好是坏呢... hhh333 发表于 2014-9-10 13:47
记得:initrd http://${next-server}/BOOT/H3_MGR16.BIN bootmgr
是可以的
其实是语法错误。正确的语法是initrd [--name <name>] [--timeout <timeout>] <uri> [<arguments>...]
ipxe.org/cmd/initrd. 即 改成 initrd --name bootmgr http://${next-server}/BOOT/H3_MGR16.BIN 就行了 我是神仙 发表于 2014-9-10 17:33
其实是语法错误。正确的语法是initrd [--name ] [--timeout ][...]
ipxe.org/cmd/initrd. 即 改 ...
从页面http://ipxe.org/wimboot的示例来看 作者自己也没有意识到这个语法变化。他可能没想到会有人把文件名改动这么大。。。 本帖最后由 hhh333 于 2014-9-11 09:46 编辑
我是神仙 发表于 2014-9-10 17:35
从页面http://ipxe.org/wimboot的示例来看 作者自己也没有意识到这个语法变化。他可能没想到会有人把文件 ...
现在用2.2.4版本的-n参数改名的问题解决了,最多7个字符的文件名问题还是存在,看作者什么时候修正。
这是菜单,可以为同一个启动文件启动不同的BCD了。
#!ipxe
#set menu-timeout 8000
set menu-default w8pe64
isset ${ip} || dhcp
isset ${next-server} || set next-server 192.168.7.100
:start
menu iPXE EFI Boot Menu
item --gap -- -------------------------------- H3 PE TOOL ---------------------------
item w8pe64 Win8 PE 64
item w81pe64 Win81 PE 64
item --gap -- -----------------------------------------------------------------------
choose --timeout ${menu-timeout} --default ${menu-default} selected
goto ${selected}
:failed
echo Booting failed, dropping to shell
goto shell
:w8pe64
kernel http://${next-server}/BOOT/wimboot
initrd http://${next-server}/efi/boot/bootx64.efi
initrd -n BCD http://${next-server}/efi/microsoft/boot/b64
initrd http://${next-server}/BOOT/boot.sdi
initrd http://${next-server}/BOOT/H3_864.WIM
boot || goto failed
goto start
:w81pe64
kernel http://${next-server}/BOOT/wimboot rawbcd
initrd http://${next-server}/efi/boot/bootx64.efi
initrd -n BCD http://${next-server}/efi/microsoft/boot/b16
initrd http://${next-server}/BOOT/boot.sdi
initrd http://${next-server}/BOOT/H3_8164.WIM
boot || goto failed
goto start
hhh333 发表于 2014-9-11 09:42
现在用2.2.4版本的-n参数改名的问题解决了,最多7个字符的文件名问题还是存在,看作者什么时候修正。
...
又试了下 好像这个--name或-n的语法只是针对efi情况的。在普通bios时还是要用initrd bcd bcd这种情况重复一下文件才行。同一个wimboot文件却有两种语法,应该不是故意为之,感觉算是bug吧 我是神仙 发表于 2014-9-8 12:21
我看那个snponly.efi不好用。一般都用的ipxe.efi.反正换着用 哪个行就用哪个
https://rom-o-matic.eu/...
忘了说 这个加了个内嵌脚本自动加载 default.ipxe 。免得DHCP循环