无忧启动论坛

标题: iPXE wimboot 现在支持UEFI下的http/ftp启动了 [打印本页]

作者: 我是神仙    时间: 2014-9-8 11:53
标题: 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



ipxe.zip (652.66 KB, 下载次数: 566)
ipxeonly.zip (997.67 KB, 下载次数: 617)

作者: ljycslg    时间: 2014-9-8 12:10
有没有新版ipxe-snponly.efi,懒得去编译,分享下
试试新版兼容性怎么样
作者: 我是神仙    时间: 2014-9-8 12:21
本帖最后由 我是神仙 于 2014-9-25 09:38 编辑

我看那个snponly.efi不好用。一般都用的ipxe.efi.反正换着用 哪个行就用哪个

https://rom-o-matic.eu/ 这里可以编译。不过我也经常打不开这个网站

ipxe.zip

652.66 KB, 下载次数: 231, 下载积分: 无忧币 -2


作者: 我是神仙    时间: 2014-9-8 12:25
ljycslg 发表于 2014-9-8 12:10
有没有新版ipxe-snponly.efi,懒得去编译,分享下
试试新版兼容性怎么样

已上传 试试吧
作者: ljycslg    时间: 2014-9-8 13:13
我是神仙 发表于 2014-9-8 12:25
已上传 试试吧

不错,实机测试很给力
vmware上HTTP超给力,bootx64.efi的tftp基本龟速
遗憾的是hyper-V无论是http还是tftp都是龟速
作者: 我是神仙    时间: 2014-9-8 15:50
ljycslg 发表于 2014-9-8 13:13
不错,实机测试很给力
vmware上HTTP超给力,bootx64.efi的tftp基本龟速
遗憾的是hyper-V无论是http还是 ...

确实 见识过了wimboot的千兆威力之后 再也不能忍受tftp那个龟速了


hyperV那个确实要慢一些 搞不懂
作者: hhh333    时间: 2014-9-10 05:04
本帖最后由 hhh333 于 2014-9-10 05:38 编辑

没玩成功,启动出菜单,但提示错误,我的菜单如下:
  1. #!ipxe
  2.   #set menu-timeout 8000
  3.    set menu-default w8pe64
  4.    isset ${ip} || dhcp
  5.    isset ${next-server} || set next-server 192.168.7.100
  6. :start
  7.   menu iPXE EFI Boot Menu
  8.   item --gap --             -------------------------------- H3 PE TOOL ---------------------------
  9.   item w8pe64               Win8 PE 64
  10.   item w81pe64              Win81 PE 64
  11.   item --gap --             -----------------------------------------------------------------------
  12.   choose --timeout ${menu-timeout} --default ${menu-default} selected
  13.   goto ${selected}

  14. :failed
  15.   echo Booting failed, dropping to shell
  16.   goto shell

  17. :w8pe64
  18.   kernel http://${next-server}/BOOT/wimboot
  19.   initrd http://${next-server}/efi/boot/bootx64.efi bootx64.efi
  20.   initrd http://${next-server}/efi/microsoft/boot/bcd        bcd
  21.   initrd http://${next-server}/BOOT/boot.sdi        boot.sdi
  22.   initrd http://${next-server}/BOOT/H3_8PE64.WIM        H3_8PE64.WIM
  23.   boot || goto failed
  24.   goto start

  25. :w81pe64
  26.   kernel http://${next-server}/BOOT/wimboot
  27.   initrd http://${next-server}/efi/boot/bootx64.efi        bootx64.efi
  28.   initrd http://${next-server}/efi/microsoft/boot/bcd        bcd
  29.   initrd http://${next-server}/BOOT/boot.sdi        boot.sdi
  30.   initrd http://${next-server}/BOOT/H3_81P64.WIM        H3_81P64.WIM
  31.   boot || goto failed
  32.   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一下,好象也无问题:

作者: hhh333    时间: 2014-9-10 06:25
经反复测试,感觉到WIM文件不能改名,只有用boot.wim,否则歇菜。
作者: ljycslg    时间: 2014-9-10 08:10
hhh333 发表于 2014-9-10 06:25
经反复测试,感觉到WIM文件不能改名,只有用boot.wim,否则歇菜。

是有这个问题,wimboot新版也有bug,在vmware下bios启动蓝屏,暂时只能这样,bios用老版2.1.0版,efi用新版
作者: 我是神仙    时间: 2014-9-10 10:16
ljycslg 发表于 2014-9-10 08:10
是有这个问题,wimboot新版也有bug,在vmware下bios启动蓝屏,暂时只能这样,bios用老版2.1.0版,efi用新 ...

我都是用vmware呢 . 8.02,bios或uefi都没有蓝屏
作者: 我是神仙    时间: 2014-9-10 10:17
本帖最后由 我是神仙 于 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
作者: ljycslg    时间: 2014-9-10 10:48
我是神仙 发表于 2014-9-10 10:16
我都是用vmware呢 . 8.02,bios或uefi都没有蓝屏

我是最新版VM ,仔细测试了下,本机上的VM出现灵异现象,是用桥接模式出问题,host-only就可以,在其他机子上的VM桥接也可以,问题不大
作者: 我是神仙    时间: 2014-9-10 11:22
刚才看了一下 昨天wimboot的作者又发布了一个新版本2.2.4!

看来这几天作者正在频繁更新。可以再等下。有渠道的也可以把自己的测试结果告诉作者一下以便尽快修正吧


12 hours ago          Michael Brown        [release] Release version 2.2.4 master v2.2.4
12 hours ago          Michael Brown        [efi] Force correct DeviceHandle on loaded bootmgfw.efi
。。。

作者: 我是神仙    时间: 2014-9-10 11:43
本帖最后由 我是神仙 于 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 没搞懂
作者: 我是神仙    时间: 2014-9-10 12:02
hhh333 发表于 2014-9-10 06:25
经反复测试,感觉到WIM文件不能改名,只有用boot.wim,否则歇菜。


经过多次实验,确认它这个wim的文件名只能是7个字符以内。8个字符就会出错

作者: 我是神仙    时间: 2014-9-10 12:03
hhh333 发表于 2014-9-10 06:25
经反复测试,感觉到WIM文件不能改名,只有用boot.wim,否则歇菜。

7个字符以内
作者: hhh333    时间: 2014-9-10 12:25
我是神仙 发表于 2014-9-10 12:03
7个字符以内

竟然是这个样子的,我试一下,看来还有bug,不忙更新。先好好测试一下。
作者: 我是神仙    时间: 2014-9-10 12:52
现在新版的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



作者: hhh333    时间: 2014-9-10 13:39
我是神仙 发表于 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:42
本帖最后由 我是神仙 于 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文件的吧
作者: hhh333    时间: 2014-9-10 13:47
我是神仙 发表于 2014-9-10 13:42
我自己用的是 initrd boot/bcf bcf

两个文件名要一致。bcf是在bootmgr.exe中修改

记得:initrd http://${next-server}/BOOT/H3_MGR16.BIN        bootmgr
是可以的
作者: 我是神仙    时间: 2014-9-10 13:50
hhh333 发表于 2014-9-10 13:47
记得:initrd http://${next-server}/BOOT/H3_MGR16.BIN        bootmgr
是可以的

估计关键是要修改bootmgr(其实就是修改里面的bootmgr.exe)。bootx64.efi这个应该类似,拿个二进制工具修改 不过没改过。bootmgr.exe倒改过的,只改一个字节就把bcd改成bcf了
作者: hhh333    时间: 2014-9-10 13:58
我是神仙 发表于 2014-9-10 13:50
估计关键是要修改bootmgr(其实就是修改里面的bootmgr.exe)。bootx64.efi这个应该类似,拿个二进制工具 ...

我改过bootx64.efi,没有问题,不想搞很多启动文件
作者: 我是神仙    时间: 2014-9-10 14:08
hhh333 发表于 2014-9-10 13:58
我改过bootx64.efi,没有问题,不想搞很多启动文件

刚才我也试了下 查找5C 00 42 00 43 00 44 即\BCD 改为其他的如BCG 确实可以启动。 现在那个initrd好像确实要求文件名要一致。 pxe直接启动时好像有个DHCP选项(252)可以控制bcd文件名,wimboot倒不知道可不可以用到这个选项
作者: 我是神仙    时间: 2014-9-10 14:16
hhh333 发表于 2014-9-10 13:47
记得:initrd http://${next-server}/BOOT/H3_MGR16.BIN        bootmgr
是可以的

我试了下 现在新版的wimboot实际上简化了 initrd后面不用重复一次文件名了

即不用initrd boot/bcd bcd
而是直接 initrd boot/bcd 这样就行了。后面写的文件名没啥用了。

本身是简化了。不过想用这个来重命名文件却不行了。。。到底是好是坏呢...
作者: 我是神仙    时间: 2014-9-10 17:33
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:35
我是神仙 发表于 2014-9-10 17:33
其实是语法错误。正确的语法是  initrd [--name ] [--timeout ]  [...]
ipxe.org/cmd/initrd  . 即 改 ...

从页面http://ipxe.org/wimboot的示例来看 作者自己也没有意识到这个语法变化。他可能没想到会有人把文件名改动这么大。。。
作者: hhh333    时间: 2014-9-11 09:42
本帖最后由 hhh333 于 2014-9-11 09:46 编辑
我是神仙 发表于 2014-9-10 17:35
从页面http://ipxe.org/wimboot的示例来看 作者自己也没有意识到这个语法变化。他可能没想到会有人把文件 ...


现在用2.2.4版本的-n参数改名的问题解决了,最多7个字符的文件名问题还是存在,看作者什么时候修正。
这是菜单,可以为同一个启动文件启动不同的BCD了。
  1. #!ipxe
  2.   #set menu-timeout 8000
  3.    set menu-default w8pe64
  4.    isset ${ip} || dhcp
  5.    isset ${next-server} || set next-server 192.168.7.100
  6. :start
  7.   menu iPXE EFI Boot Menu
  8.   item --gap --             -------------------------------- H3 PE TOOL ---------------------------
  9.   item w8pe64               Win8 PE 64
  10.   item w81pe64              Win81 PE 64
  11.   item --gap --             -----------------------------------------------------------------------
  12.   choose --timeout ${menu-timeout} --default ${menu-default} selected
  13.   goto ${selected}

  14. :failed
  15.   echo Booting failed, dropping to shell
  16.   goto shell

  17. :w8pe64
  18.   kernel http://${next-server}/BOOT/wimboot
  19.   initrd http://${next-server}/efi/boot/bootx64.efi
  20.   initrd -n BCD http://${next-server}/efi/microsoft/boot/b64
  21.   initrd http://${next-server}/BOOT/boot.sdi
  22.   initrd http://${next-server}/BOOT/H3_864.WIM
  23.   boot || goto failed
  24.   goto start

  25. :w81pe64
  26.   kernel http://${next-server}/BOOT/wimboot rawbcd
  27.   initrd http://${next-server}/efi/boot/bootx64.efi
  28.   initrd -n BCD http://${next-server}/efi/microsoft/boot/b16
  29.   initrd http://${next-server}/BOOT/boot.sdi
  30.   initrd http://${next-server}/BOOT/H3_8164.WIM
  31.   boot || goto failed
  32.   goto start

复制代码

作者: 我是神仙    时间: 2014-9-11 19:33
hhh333 发表于 2014-9-11 09:42
现在用2.2.4版本的-n参数改名的问题解决了,最多7个字符的文件名问题还是存在,看作者什么时候修正。
...

又试了下 好像这个--name或-n的语法只是针对efi情况的。在普通bios时还是要用initrd bcd bcd这种情况重复一下文件才行。同一个wimboot文件却有两种语法,应该不是故意为之,感觉算是bug吧
作者: 我是神仙    时间: 2014-9-12 13:03
我是神仙 发表于 2014-9-8 12:21
我看那个snponly.efi不好用。一般都用的ipxe.efi.反正换着用 哪个行就用哪个

https://rom-o-matic.eu/  ...

忘了说 这个加了个内嵌脚本自动加载 default.ipxe 。免得DHCP循环
作者: 我是神仙    时间: 2014-9-19 11:25
我是神仙 发表于 2014-9-8 12:21
我看那个snponly.efi不好用。一般都用的ipxe.efi.反正换着用 哪个行就用哪个

https://rom-o-matic.e ...

再加个重试机制
作者: hhh333    时间: 2014-9-21 07:33
我是神仙 发表于 2014-9-19 11:25
再加个重试机制

似乎不支持32位EFI,如下图,好象传输都是正常的。

作者: 我是神仙    时间: 2014-9-21 10:15
本帖最后由 我是神仙 于 2014-9-21 10:28 编辑




我看图片上加载了wim文件后马上就报错了 是马上就用了boot语句?出错了就要加上imgstat语句并且加上暂停语句prompt,再在wimboot的kenel命令后面也加上 pause参数以便查看具体的信息

后面还有个什么no such file 那个也是你指定了一个不存在的文件URL了吧
作者: hhh333    时间: 2014-9-21 10:41
本帖最后由 hhh333 于 2014-9-21 10:45 编辑
我是神仙 发表于 2014-9-21 10:15
我看图片上加载了wim文件后马上就报错了 是马上就用了boot语句?出错了就要加上imgstat语句并且加上 ...


确实是boot语句出错了,后面是脚本中没有shell标签的问题,不管它。
我大致是这样的,先去编译一个32位的ipxe32.efi,放一个脚本:
  1. #!ipxe
  2. dhcp
  3. set x32 32
  4. chain efi/H3_iPXEM.EFI
复制代码


编一个菜单,支持32与64的:
  1. #!ipxe
  2. set menu-timeout 8000
  3. set menu-default w8pe
  4. isset ${ip} || dhcp
  5. isset ${next-server} || set next-server 192.168.7.100
  6. cpuid --ext 29 && set x64 Y || set x32 Y
  7. :start
  8.   menu iPXE EFI Boot Menu
  9.   item --gap --             -------------------------------- H3 PE TOOL ---------------------------
  10.   item w8pe                   1-- Win8 PE
  11.   item w81pe                  2-- Win81 PE
  12.   item --gap --             -----------------------------------------------------------------------
  13.   choose --timeout ${menu-timeout} --default ${menu-default} selected
  14.   goto ${selected}

  15. :shell
  16.   echo Type 'exit' to get the back to the menu
  17.   shell
  18.   goto start

  19. :failed
  20.   echo Booting failed, dropping to shell
  21.   imgstat
  22.   goto shell

  23. :w8pe
  24.         set bootfile bootx64.efi && set tbcdfile BCD && set sbcdfile b64 && set pefile H3_864.WIM
  25.         isset ${x32} && set bootfile bootia32.efi && set tbcdfile B32 && set sbcdfile b832 && set pefile H3_8PE.WIM ||
  26.   goto wimbootpe

  27. :w81pe
  28.         set bootfile bootx64.efi && set tbcdfile BCD && set sbcdfile b16 && set pefile H3_8164.WIM
  29.         isset ${x32} && set bootfile bootia32.efi && set tbcdfile B32 && set sbcdfile b8132 && set pefile H3_81PE.WIM ||
  30.   goto wimbootpe

  31. :wimbootpe
  32.   kernel http://${next-server}/BOOT/wimboot
  33.   initrd http://${next-server}/efi/boot/${bootfile}
  34.   initrd -n ${tbcdfile} http://${next-server}/efi/microsoft/boot/${sbcdfile}
  35.   initrd http://${next-server}/BOOT/boot.sdi
  36.   initrd http://${next-server}/BOOT/${pefile}
  37.   boot || goto failed
  38.   goto start
复制代码


64位没有问题,32位的就如下:


另外要说的是,32位的EFI,只要在VM中建非64位的虚拟机,再加那一条命令就是32位EFI启动的。PXE启动EFI32没有问题,现在就在ipxe与wimboot配合时出错,不知是不是wimboot的问题。

作者: 我是神仙    时间: 2014-9-21 10:41
本帖最后由 我是神仙 于 2014-9-21 10:43 编辑
hhh333 发表于 2014-9-21 07:33
似乎不支持32位EFI,如下图,好象传输都是正常的。


以前只试了64位的ipxe. 不过我看虚拟机vmware 32位的不能用64位的ipxe.efi启动 而且32位的ipxe.efi我始终编译不成功. https://rom-o-matic.eu/也始终打不开

另外在32位的uefi vmware上试了一下syslinux,
64位的不能启动 pxelinux\efi64\syslinux.efi
32位的就可以启动 pxelinux\efi\syslinux.efi


32位的ipxe.efi我始终编译不成功. https://rom-o-matic.eu/也始终打不开
你能不能把32位的ipxe.efi共享一下呢


https://rom-o-matic.eu/那个网其实打得开 但是点了下拉菜单之后没有任何反应 不能实际编译
作者: hhh333    时间: 2014-9-21 10:50
本帖最后由 hhh333 于 2014-9-21 10:52 编辑
我是神仙 发表于 2014-9-21 10:41
以前只试了64位的ipxe. 不过我看虚拟机vmware 32位的不能用64位的ipxe.efi启动 而且32位的ipxe.efi我始 ...


我是翻墙后开的,否则有时开不了,选高级模式,有32位的EFI,这是编译好的: ipxe32.7z (295.1 KB, 下载次数: 12)
它会转到efi\H3_iPXEM.EFI脚本。

作者: 我是神仙    时间: 2014-9-21 11:26
hhh333 发表于 2014-9-21 10:50
我是翻墙后开的,否则有时开不了,选高级模式,有32位的EFI,这是编译好的:
它会转到efi\H3_iPXEM.EF ...

原来是被墙了?可能是用了google的服务 我怎么一直没想到这个。。。还以为是我的打开方式不对

32位的确实玩不转。不过我试了下直接用bootia32.efi为启动文件进行传统的pxe启动好像也不得行呢
作者: ljycslg    时间: 2014-9-21 11:45
32位efi网启没意义,win8平板外接usb网卡网启?那还不如用U盘
作者: 我是神仙    时间: 2014-9-21 11:54
ljycslg 发表于 2014-9-21 11:45
32位efi网启没意义,win8平板外接usb网卡网启?那还不如用U盘

32位EFI都是平板啊? 怪不得没听说过 没见过32位efi平板。


作者: 我是神仙    时间: 2014-9-21 11:56
我是神仙 发表于 2014-9-21 11:26
原来是被墙了?可能是用了google的服务 我怎么一直没想到这个。。。还以为是我的打开方式不对

32位的 ...

又试了下 直接用bootia32.efi为启动文件进行传统的pxe启动 还是可以启动的!

看了日志 是因为那个bcd中有个什么参数 tcpblocksize 20480 不支持。把那个参数删除了就可以启动了

bcd文件我都是从其他PE上直接复制下来的 以前没注意到有这个参数 可能在其他地方有用吧
作者: hhh333    时间: 2014-9-21 13:42
我是神仙 发表于 2014-9-21 11:56
又试了下 直接用bootia32.efi为启动文件进行传统的pxe启动 还是可以启动的!

看了日志 是因为那个bcd ...

bootia32.efi 可以启动,只要不特意去改变那个参数,特别是在VM中测试时。

作者: 我是神仙    时间: 2014-9-21 15:38
hhh333 发表于 2014-9-21 10:50
我是翻墙后开的,否则有时开不了,选高级模式,有32位的EFI,这是编译好的:
它会转到efi\H3_iPXEM.EF ...

看了下它那个网页rom-o-matic.eu 确实 是引用了 ajax.googleapis.com这个网站上的两个js文件。知道原因就好办了,把这两个js文件下载到本机就可以用了
作者: 我是神仙    时间: 2014-9-21 15:41
hhh333 发表于 2014-9-21 10:50
我是翻墙后开的,否则有时开不了,选高级模式,有32位的EFI,这是编译好的:
它会转到efi\H3_iPXEM.EF ...

可以加上一个ping命令,有时用来进入shell来测试网络是否连通 挺有用的。再加个console命令可以在ipxe菜单中显示背景图片。当然这些都是小儿科 能启动PE才是关键
作者: hhh333    时间: 2014-9-21 15:44
感觉到EFI32不能启动应该是wimboot的问题,前面都成了,就是boot不成,应该是没考虑32位的情况;

那个WIM文件名不能多于7个字符的问题也还没有发新版。
作者: 我是神仙    时间: 2014-9-21 22:41
hhh333 发表于 2014-9-21 15:44
感觉到EFI32不能启动应该是wimboot的问题,前面都成了,就是boot不成,应该是没考虑32位的情况;

那个WI ...

可以多于7个字符啊。可以是9个字符 10个字符。但是好像不能是8个字符
作者: 我是神仙    时间: 2014-9-24 12:37
hhh333 发表于 2014-9-21 15:44
感觉到EFI32不能启动应该是wimboot的问题,前面都成了,就是boot不成,应该是没考虑32位的情况;

那个WI ...

WIM文件名不能多于7个字符的问题在昨天的新版2.2.5中已经解决了。 efi32据说在wimboot.zip中有个文件wimboot.i386,可以试一下。
作者: 我是神仙    时间: 2014-9-24 13:06
[attach]199983[/attach]
[attach]199984[/attach]
test
作者: 我是神仙    时间: 2014-9-25 08:56
hhh333 发表于 2014-9-21 15:44
感觉到EFI32不能启动应该是wimboot的问题,前面都成了,就是boot不成,应该是没考虑32位的情况;

那个WI ...

EFI32这个问题昨天又发了个新版2.3.0已经解决了。和作者说了一下,他说这是因为一个编译选项忘了设置。结果代码一行没改,加了个编译选项就可以了。测试过了,确认没问题了。
https://git.ipxe.org/release/wimboot/wimboot-latest.zip
作者: hhh333    时间: 2014-9-25 10:36
本帖最后由 hhh333 于 2014-9-25 10:59 编辑
我是神仙 发表于 2014-9-25 08:56
EFI32这个问题昨天又发了个新版2.3.0已经解决了。和作者说了一下,他说这是因为一个编译选项忘了设置。结 ...


要用wimboot.i386这个文件吗?

试了,用这个文件可以了
作者: 我是神仙    时间: 2014-9-26 10:40
本帖最后由 我是神仙 于 2014-9-29 12:25 编辑

普通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作为条件就行了


作者: 我是神仙    时间: 2014-9-29 12:28
本帖最后由 我是神仙 于 2014-9-29 12:30 编辑

启动基本过程:

1 dhcp discover: 此为client开始DHCP过程中的第一个请求报文 arch:00007

2 dhcp offer   : 此为server 对dhcpdiscover 报文的响应

3 dhcp request  : 此为client 对dihcpoffer 报文的响应

4 dhcp ack     : server对 dhcprequest 报文的响应,client收到此报文后才真正获得了IP地址和相关配置信息。

5 检测是否有proxcy dhcp server

6 加载ipxe

7 dhcp discover: 此为client开始DHCP过程中的第一个请求报文  arch:00009

8 dhcp offer   : 此为server 对dhcpdiscover 报文的响应

9 dhcp request  : 此为client 对dihcpoffer 报文的响应

10 dhcp ack     : server对 dhcprequest 报文的响应,client收到此报文后才真正获得了IP地址和相关配置信息。

11 检测是否有proxcy dhcp server, 有的话再从proxcy dhcp server得到启动的文件名

12 开始启动脚本

如果把第7步开始的后续的二次DHCP过程省略了 可以加快启动
如果把第11步检测proxcy dhcp server的过程省略了的话 也可以加快启动

不过 过快了也不好 特别是要连接iscsi等的时候 即使加快了 也往往需要人为的等待几秒钟 加个sleep 3秒命令才能成功连接。所以太快也不一定好。一般就用默认的dhcp过程就好了
作者: chlsh    时间: 2014-9-30 18:05
前来学习一下
作者: zhang288    时间: 2014-10-31 13:15
学习下,谢谢楼主高人分享!!!!
作者: wln    时间: 2014-11-26 21:16
IPXE在 cONFIG网卡的时候出错,提示No more network devices是啥问题?
作者: tianjinwlyt    时间: 2015-1-10 18:26

来支持一下楼主,辛苦啦~~~
作者: wln    时间: 2015-1-13 11:45
这个速度是很快,但有个问题,就是不论TFTP还是HTTP,一次一个文件只能被一台客户机器读取。
tiny pxe server提示: 另一个程序正在使用此文件,进程无法访问。
客户端提示:no sunch file或者file no found
这样就相当与单线程了,效率不高。
不知道是否可以请作者改一下呢?
作者: 北斗    时间: 2015-2-28 15:36
本帖最后由 北斗 于 2015-2-28 15:38 编辑

请教大家一下,技嘉H61M-DS2实机,瑞昱8111F网卡,用hanewin加载顶楼附件的64位ipxe.efi或snponly.efi的时候,卡在ipxe initialising devices无响应,是什么原因?

是ipxe.efi不支持8111F,还是其他的什么原因呢?

另外ipxe.efi的默认菜单路径是ipxe/default.ipxe,我想指定自定义的菜单脚本,菜单的路径应该在哪里指定?

谢谢~
作者: 2011xiongdeyuan    时间: 2015-4-10 20:59
好东西,谢谢
作者: 一笑随缘    时间: 2015-6-7 00:09
谢谢楼主分享
作者: lujun8739    时间: 2015-6-7 12:27
我也出现过,后来发现将它设置为第一启动就不会。原先,是将其它启动设在前面,然后进入启动菜单,再选择网启。
作者: putiji    时间: 2019-3-1 20:01
谢谢。非常感谢。
作者: KM_Tirpitz    时间: 2019-11-13 11:01
shishi
作者: liquanyi    时间: 2019-12-21 22:42
vmware 2核以上启动蓝屏。加上onecpu才行
作者: tjxachina    时间: 2020-5-18 12:16
谢谢分享
作者: wang20124    时间: 2020-6-15 17:30
通过http下载boot.wim失败,提示找不到文件,但是把boot.wim放在服务器本地是可以启动的,求大佬解答
作者: saiz    时间: 2022-10-29 21:51
本帖最后由 saiz 于 2022-10-30 22:03 编辑

請問下 BOOT.SDI無法使用其它名稱嗎?
我要啟動EXFAT的X:\,要使用特別BOOT.SDI
但如果檔案名用EXFAT.SDI 或其它都無法成功
啟動後X:\都是NTFS
只有把此檔改名為BOOT.SDI
啟動後X:\是EXFAT

自己做成功了
原來指令參數中有
我還以為原本的指令就是會改名了
initrd %path%\boot_exfat.sdi boot.sdi
結果還有特別參數啊@@
initrd -n boot.sdi  %path%\boot_exfat.sdi boot.sdi
作者: ZMLoveLH    时间: 2022-11-6 19:12
多谢楼主分享 iPXE wimboot 的小知识啊,学习了
作者: zhjimx    时间: 2022-12-8 14:30
感谢分享,学习了。
作者: bfgxp    时间: 2022-12-8 15:51
我是神仙 发表于 2014-9-11 19:33
又试了下 好像这个--name或-n的语法只是针对efi情况的。在普通bios时还是要用initrd bcd bcd这种情况重复 ...

然而到现在都还是这种格式
不知道为什么?




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