无忧启动论坛

 找回密码
 注册
搜索

EFI启动及PXE/iPXE的BCD位置

查看数: 30236 | 评论数: 17 | 收藏 22
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-9-19 17:35

正文摘要:

本帖最后由 hhh333 于 2014-9-19 18:09 编辑 近期在调试EFI网启,BCD位置各有不同,笔记出来: 1、EFI本地启动与EFI网启BCD不一样 EFI本地启动:bootx64.efi-->efi\microsoft\boot\bcd-->pe.wim EFI网络 ...

回复

我是神仙 发表于 2014-9-19 22:22:00
EFI网启时PXE与iPXE的BCD不一样

这个其实是一样的,可以用同一位置的同一文件

因为wimboot对来源文件的路径不做任何要求 只要文件名对了就行。

点评

1、不知道什么原因,MS在EFI的本地启动与网络启动要使用不同的BCD 2、我之所以说iPXE与PXE不一样应该是有根据的: 因为我已经将bootx64.efi中的网启的BCD改成了boot\bxe,如果是网启它应该找BXE文件,也即wimboot  详情 回复 发表于 2014-9-20 07:20
我是神仙 发表于 2014-9-20 09:12:38
本帖最后由 我是神仙 于 2014-9-20 09:23 编辑
1、EFI本地启动与EFI网启BCD不一样
EFI本地启动:bootx64.efi-->efi\microsoft\boot\bcd-->pe.wim
EFI网络启动:bootx64.efi-->boot\bcd-->pe.wim

2、EFI网启时PXE与iPXE的BCD不一样
PXE过程:bootx64-->boot\bcd-->pe.wim
iPXE过程:snponly.efi-->wimboot-->bootx64.efi-->efi\microsoft\boot\bcd-->pe.wim



笼统的说 “EFI本地启动与EFI网启BCD不一样”  不大好,因为下面紧接着就说了“EFI网启”有两种。
而有一种网启是可以和本地启动使用同一位置的同一文件的,另一种网启位置不同但内容可以是复制的同样文件


这里实际有谈到三种EFI启动(还有光盘UEFI是另外一种)
1 EFI本地启动:\efi\boot\bootx64.efi--> \efi\microsoft\boot\bcd --> pe.wim
2 PXE EFI过程:bootx64.efi --> \boot\bcd --> pe.wim
3 iPXE EFI过程:snponly.efi --> wimboot --> bootx64.efi--> bcd-->pe.wim

前面有\开头的文件是绝对目录,不能改,其他文件可以是任意目录。

即 1EFI本地启动 和 2PXE EFI网启由于目录名使用了不同的绝对目录 不能使用同一BCD文件。而且目录名差异过大,主要是长度差异太大,无法通过修改的方式指向同一文件。
但 3 iPXE EFI过程这个全部使用的是任意目录,所以它可以和 1EFI本地启动使用同一文件, 也可以和 2PXE EFI网启使用同一文件。

均测试通过

initrd ${base}/efi/boot/bootx64.efi
initrd ${base}/efi/microsoft/boot/bcd
initrd ${base}/boot/boot.sdi     
initrd ${base}/sources/boot.wim  
这就和本地EFI启动使用同一BCD文件

改成
initrd ${base}/boot/bcd
这就和PXE的EFI启动使用同一BCD文件

都可以启动。






2、我之所以说iPXE与PXE不一样应该是有根据的:
因为我已经将bootx64.efi中的网启的BCD改成了boot\bxe,如果是网启它应该找BXE文件,也即wimboot应该要将你从服务器获得的BCD改成BXE,而现在还是使用BCD文件名。
当然,如果wimboot永远使用bcd作为bcd文件的文件名也有可能。


我记得在另一贴中回复过你的
http://bbs.wuyou.net/forum.php?m ... p;page=3#pid2966506

发表于 2014-9-10 14:08:11 | 只看该作者

    hhh333 发表于 2014-9-10 13:58
    我改过bootx64.efi,没有问题,不想搞很多启动文件


刚才我也试了下 查找5C 00 42 00 43 00 44 即\BCD 改为其他的如BCG 确实可以启动。


这是81update1中的bootx64.efi网启时的BCD位置:


好像不是这里吧。好像有两处
一处是\bcd
一处是\boot\bcd
都要改吧?反正我两处都改了,可以启动



kernel wimboot
initrd ${base}/efi/boot/bootx64.efi
initrd ${base}/efi/microsoft/boot/bxe
initrd ${base}/boot/boot.sdi     
initrd ${base}/sources/boot.wim  

完全可以启动


我使用的boot.wim其实就是你那个h3cdall.iso里面pe8164.wim


对这个bcd文件的重复使用 我前几天研究过怎么用最少的文件支持各种启动,还发了个帖子
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=337945
所以还是比较熟悉
不过这些启动方式也就这几天熟悉,过几天可能就忘了 总归是太复杂了

点评

将bootx64.efi用winhex查找\bcd,会找到两个,一个是\Boot\BCD--PXE启动时使用的BCD,另一个是\BCD--本地启动时BCD,而且前面有变量,实际指向\efi\microsoft\boot\bcd,因为将这个改一个名如B64,则会到这个地方去  详情 回复 发表于 2014-9-20 10:25
王彬784428960 发表于 2020-10-24 08:52:04
我的是群辉启动PXE 加载的文件是pxeboot.n12 但是在启动的时候提示File:\boot\bxd  Status:0xc000000f  这个文件出错 这个文件在tftp根目录下也是有的不知道为什么就是报错
王彬784428960 发表于 2020-10-24 08:43:51
感谢分析 好多看不懂 还在学习中
papago 发表于 2018-10-20 23:58:12
分析pxe的引导过程
papago 发表于 2018-10-20 23:57:41
EFI启动及PXE/iPXE的BCD位置      
su@xisrd.com 发表于 2018-4-6 20:19:08
謝謝分享
2012masterasia 发表于 2018-4-1 14:55:49
ipxe支持启动win10吗
510819776 发表于 2018-1-23 02:45:49
可惜现在情况变了,
本地启动efi   bootx64.efi和bcd同目录就行
新版wimboot更不限制bcd位置,一样与bootx64同目录就好
只不过非要用微软的bootx64.efi通过pxe启动,bcd只能是/boot/bcd 当然通过winhex可以改下
最后结果都放一起就好了
devilma 发表于 2016-3-6 20:32:28
不错参考价值太大了
zhaohj 发表于 2014-11-12 15:25:14
本帖最后由 zhaohj 于 2014-11-12 15:27 编辑

准备使用 iPXE测试看看,问大家:
原先的PXE启动的使用中文的,bcd中包含很多pe,如w8pe/w8pe.wim、w8pe/w8pe1.wim、w8pe/w8pe2.wim ......
现在用 iPXE,BCD怎么写?
我用普通的bios启动的,非efi
caocaofff 发表于 2014-10-18 23:04:06
怎么修改wimboot文件的boot路径呢?就是存放wim的,例如/boot/h3_864.wim。现在我wim放在其它地方,例如/1234/h3_864.wim,改名后的BCD已经指定了路径为/1234/h3_864.wim(这里先不讨论BCD),uefi ipxe时错误,路径都改为/boot/...就没问题。或者能给出委婉的解决办法?
我是神仙 发表于 2014-9-20 12:18:03
hhh333 发表于 2014-9-20 11:56
两个代表的意义不同好不好,你改两个地方,如果用这个来本地启动,你必须在efi\microsoft\boot下准备改名 ...

无所谓啊  正好  三者都用同一个bcd文件  252好像hanwin不支持
hhh333 发表于 2014-9-20 11:56:40
我是神仙 发表于 2014-9-20 11:31
总之都改了 wimboot就可以用改过名字的bcd 了

两个代表的意义不同好不好,你改两个地方,如果用这个来本地启动,你必须在efi\microsoft\boot下准备改名的BCD文件。
近期在与Tiny PXE Server 作者交流他这个软件,他有一种更方便的方式,用DHCP 252 option带@arch变量来指明BCD位置,感觉也不错。就是[arch]段的功能还没有很好地实现。

点评

无所谓啊 正好 三者都用同一个bcd文件 252好像hanwin不支持  详情 回复 发表于 2014-9-20 12:18
我是神仙 发表于 2014-9-20 11:31:24
hhh333 发表于 2014-9-20 10:25
如上面的图所示:
将bootx64.efi用winhex查找\bcd,会找到两个,一个是\Boot\BCD--PXE启动时使用的BCD ...

总之都改了 wimboot就可以用改过名字的bcd 了

点评

两个代表的意义不同好不好,你改两个地方,如果用这个来本地启动,你必须在efi\microsoft\boot下准备改名的BCD文件。 近期在与Tiny PXE Server 作者交流他这个软件,他有一种更方便的方式,用DHCP 252 option带@arc  详情 回复 发表于 2014-9-20 11:56
hhh333 发表于 2014-9-20 10:25:52
本帖最后由 hhh333 于 2014-9-20 10:31 编辑
我是神仙 发表于 2014-9-20 09:12
笼统的说 “EFI本地启动与EFI网启BCD不一样”  不大好,因为下面紧接着就说了“EFI网启”有两种。
...


如上面的图所示:
将bootx64.efi用winhex查找\bcd,会找到两个,一个是\Boot\BCD--PXE启动时使用的BCD(真正位置:${pxeserver root}\Boot\BCD),另一个是\BCD--本地启动时BCD,而且前面有变量,实际指向\efi\microsoft\boot\bcd,因为将这个改一个名如B64,则会到这个地方去找B64

32位与此相似,在我发布的盘中这两个地方都改成了B32,实际上是不同地方的B32。

点评

总之都改了 wimboot就可以用改过名字的bcd 了  详情 回复 发表于 2014-9-20 11:31

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-26 03:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表