无忧启动论坛

标题: 想在ESP分区放个PE,请问如何编辑BCD?——(已解决) [打印本页]

作者: ddianxing    时间: 2013-4-19 21:45
标题: 想在ESP分区放个PE,请问如何编辑BCD?——(已解决)
本帖最后由 ddianxing 于 2013-4-21 10:36 编辑

在ESP分区根目录上放了grldr.mbr, grldr, disk.wim 三个文件...

如图,我尝试在 BCD 里加 GRUB 和 PE 均不成功,不知错在哪里?请大侠指教!

sshot-1.png

sshot-2.png

------------------------------------

已解决!!!


其实除了GRUB启动项外在UEFI启动中不支持以外,我在BCD中添加的PE项目是没有问题的!但少了boot\boot.sdi这个文件,所以保证ESP分区的文件是这样的就行了:

根目录
├─boot目录
│  └─boot.sdi
├─efi目录
│  ├─boot目录
│  │    ├─zh-cn目录
│  │    │     └─bootx64.efi.mui
│  │    └─ bootx64.efi
│  └─microsoft目录
│        └─boot目录
│            ├─fonts目录
│            │        ├─ chs_boot.ttf
│            │        └─wgl4_boot.ttf
│            └─BCD
└─WINPE目录
    └─winpe_x64.wim


注意:如果bootmgfw.efi文件是win7里的,就无法启动win8PEx64,把bootmgfw.efi换成win8版本的后,就可以启动win7PEx64/win8PEx64了。


另外有个问题没有解决,就是我我在开机时按F11,只能选择Windows Boot Manager 的方式启动,而没有UEFI的其它选项。也就是说不能通过 bootx64.efi来启动,而只能通过bootmgfw.efi 来启动。在我的机子上bootx64.efi这个文件删掉没有任何影响!(2011hiboy 版主的对此文件作用有说明,见:http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

我猜想可能由于我的主板比较老(两年前的微星H61M-E33 B3 BIOS版本 12.3),对UEFI的支持不是很好!

作者: 2011hiboy    时间: 2013-4-19 22:10
首先既然你说ESP分区,那么就是UEFI启动了,那么是不支持grub4dos的。可以支持grub2

再说WIM文件的添加,给你看图吧:
**截图20130419220952.png
作者: 2013柠檬精铃    时间: 2013-4-19 22:13
看看

作者: ddianxing    时间: 2013-4-19 22:38
2011hiboy 发表于 2013-4-19 22:10
首先既然你说ESP分区,那么就是UEFI启动了,那么是不支持grub4dos的。可以支持grub2

再说WIM文件的添加, ...


谢谢你,原来GRUB不能在ESP里用,我把它从BCD里删掉了。

但PE按你的说法设置了,但还是不能启动PE。。。这个 WIM 是天意的win8pe.iso里提取出来的,应该没有问题。。。

sshot-1.png


作者: 2011hiboy    时间: 2013-4-19 23:14
本帖最后由 2011hiboy 于 2013-4-19 23:18 编辑
ddianxing 发表于 2013-4-19 22:38
谢谢你,原来GRUB不能在ESP里用,我把它从BCD里删掉了。

但PE按你的说法设置了,但还是不能启动PE。 ...


错误信息怎么说?你看好了你的机器99%是X64构架的,Win8 x86的PE 在X64的机器上无法UEFI启动,你确保你下载的PE是X64的。

记得使用 BOOTICE 1.05 最新版
作者: 糊涂    时间: 2013-4-20 07:32
2011hiboy 发表于 2013-4-19 23:14
错误信息怎么说?你看好了你的机器99%是X64构架的,Win8 x86的PE 在X64的机器上无法UEFI启动,你确保你 ...

我以为WIN8X64和X86系统都支持UEFI启动呢!

原来只支持X64


作者: 糊涂    时间: 2013-4-20 07:36
2011hiboy 发表于 2013-4-19 22:10
首先既然你说ESP分区,那么就是UEFI启动了,那么是不支持grub4dos的。可以支持grub2

再说WIM文件的添加, ...


最近想重新YY一个UEFI/BIOS平台使用的PE(两栖PE)启动,菜单方面得好好充充电了。。。

支持版主!
作者: ddianxing    时间: 2013-4-20 09:32
2011hiboy 发表于 2013-4-19 23:14
错误信息怎么说?你看好了你的机器99%是X64构架的,Win8 x86的PE 在X64的机器上无法UEFI启动,你确保你 ...

原来如此,谢谢版主!—— 偶的机子的确是X64的,我用的那个PE的确是32-Bit的,现在我就去找个64的PE!
作者: ddianxing    时间: 2013-4-20 10:54
本帖最后由 ddianxing 于 2013-4-20 10:56 编辑

下载了64位的PE还是不行。。。把此PE放在C:盘和第二块硬盘也无法启动显示如下:
Windows failed to start. A recent hardware or software change might be the cause. To fix the problem:
1、Insert your windows installation...
2、Choose your language...
3、Click Repair your computer
status: 0xc000000f
Info: the boot selection failed because a required device is inaccessible.

另外我还发现一个问题,就是我的机子开机时按F11,选择 Windows Boot Manager 可以进入系统,但选择“从本地硬盘启动”却无法启动,显示找不到操作系统。。。也就是说无法从bootx64.efi这个引导启动。。。
作者: leonxis    时间: 2013-4-20 13:31
wim启动还需要boot文件跟里面的boot.sdi文件
作者: ddianxing    时间: 2013-4-20 13:47
leonxis 发表于 2013-4-20 13:31
wim启动还需要boot文件跟里面的boot.sdi文件

请问放在什么位置?
作者: leonxis    时间: 2013-4-20 14:54
boot文件夹放根目录
作者: ddianxing    时间: 2013-4-20 17:39
leonxis 发表于 2013-4-20 14:54
boot文件夹放根目录

谢谢你的指教!—— 这样做了之后,只能进入win7安装光盘里的boot.wim或recover文件夹里的wim文件,论坛上试了几个PE都不行,包括阿弥陀佛的纯64也不行...
作者: 2011hiboy    时间: 2013-4-20 17:53
本帖最后由 2011hiboy 于 2013-4-22 22:41 编辑
糊涂 发表于 2013-4-20 07:32
我以为WIN8X64和X86系统都支持UEFI启动呢!

原来只支持X64

正确的:
在CPU指令集支持的情况下(普遍支持),系统能否支持UEFI启动,主要看系统和UEFI的匹配情况,
就是说32bit的UEFI可以运行支持uefi启动的x86系统;64bit的UEFI可以运行支持uefi启动的x64系统。

作者: 拿铁不加糖    时间: 2013-4-21 14:41
2011hiboy 发表于 2013-4-20 17:53 对是有限制的,CPU的限制。 win8 PE x86想要UEFI启动,CPU必需是纯X86框架的,就是没有X86-64指令集的CP ...

win8pe x86支持从UEFI固件启动,但是前提是你的UEFI也是32bit的,这个和CPU是什么架构的没有啥直接关系。
作者: 2011hiboy    时间: 2013-4-21 14:54
本帖最后由 2011hiboy 于 2013-4-21 15:35 编辑
拿铁不加糖 发表于 2013-4-21 14:41
win8pe x86支持从UEFI固件启动,但是前提是你的UEFI也是32bit的,这个和CPU是什么架构的没有啥直接关系。

win8pe x86 支持从UEFI启动,那么该计算机构架就必须是IA32的,IA32构架就是纯X86的CPU构架,搭配32bit系统。


CPU的指令集不同决定了计算机运行的程序类型,CPU是纯X86的那么只能运行32位程序,UEFI固件类型是根据CPU支持的指令集来编译的,受CPU的制约。


注:
目前市场上大多数的PC的CPU指令集除了纯X86的指令集外还集成了X86-64指令集(AMD64;Intel64(EM64T)),可以支持64bit的系统和程序。
配备该类型的CPU的计算机的UEFI固件是X64的。





作者: fujianabc    时间: 2013-4-21 15:57
本帖最后由 2011hiboy 于 2013-4-21 18:57 编辑

这个和cpu架构没什么关系,是主板固件的事情。配32位UEFI的主板只能用32位系统,配64位UEFI的主板只能用64位系统..

作者: hhh333    时间: 2013-4-21 16:58
fujianabc 发表于 2013-4-21 15:57
这个和cpu架构没什么关系,是主板固件的事情。配32位UEFI的主板只能用32位系统,配64位UEFI的主板只能用6 ...

我觉得fujianabc老大的说法是正确的,64位能够来,32位应该更加不在话下,BIOS方式两者都可以就是证明。只是这些个无良商家想钱想疯了,弄的只支持64的UEFI,想强推64位,好象主要是intel主板在那里搞这些妖蛾子,如果两者都支持的话,可能大多数人就不会64位了,硬件软件厂商没得事做。
作者: 2011hiboy    时间: 2013-4-21 18:43
本帖最后由 2011hiboy 于 2013-4-21 19:02 编辑
hhh333 发表于 2013-4-21 16:58
我觉得fujianabc老大的说法是正确的,64位能够来,32位应该更加不在话下,BIOS方式两者都可以就是证明。只 ...


已经回复,那是我的分析。虽然有点长,我还是认真分段了...

PS:目前市面上的CPU包含X86和X86-64指令集,肯定可以支持32bit和64bit的系统,
然而我们BIOS可以双支持那是因为BIOS没有分32bit或者64bit,X86的指令集一直支持BIOS,而市面CPU能支持64bit的原因自然也是UEFI是64bit的,CPU能够执行其用到的指令。
不支持32bit的原因,自然是从发展的角度来说,X64比X86更具有潜力,厂家压根没有集成UEFI 32bit,所以不支持,我想加入能够在市面CPU的前提下,将UEFI 64bit 改为UEFI 32bit
那么肯定能支持X86的系统。

http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=305291&pid=2760920&fromuid=396698
作者: 2011hiboy    时间: 2013-4-21 18:44
本帖最后由 2011hiboy 于 2013-4-21 19:01 编辑
2011hiboy 发表于 2013-4-21 14:54
win8pe x86 支持从UEFI启动,那么该计算机构架就必须是IA32的,IA32构架就是纯X86的CPU构架,搭配32bit系 ...


#已经回复,那是我的分析。虽然有点长,我还是认真分段了...
http://bbs.wuyou.net/forum.php?m ... &fromuid=396698
作者: 2011hiboy    时间: 2013-4-21 18:55
本帖最后由 2011hiboy 于 2013-4-21 22:48 编辑

****我同意UEFI固件类型对PE启动的影响,也一直没有否认这点,但是我不同意这和CPU没有任何关系*****

首先我坚持认为 win8 x86的PE想要UEFI启动,必需要CPU的支持
我同意UEFI如果是32bit的能够支持win8 x86 pe的运行;但我认为这是只是看到了问题的表面
不管UEFI是32bit或者64bit这都需要CPU的指令来支持,否则,UEFI加载了一个efi文件,那么efi文件的运行呢?UEFI给它解释指令吗?还是efi自己给自己解释指令?
不,他们都没有指令集,那么肯定是CPU给efi文件解释它运行时发出的指令,那么CPU的指令集将是一切的核心,具有最终决定权。




理论及证据:
市面CPU=市面上普遍的CPU,包含有X86和X86-64指令集
------------------------------------------------------------------

首先计算机的运行最核心的就是CPU,程序最终解释并运行也是靠CPU里面的指令来完成的。UEFI固件主要是由c写的,
然而任何程序不管采用什么高级程序设计语言编写的,都需要通过高级语言编译程序或者解释程序先翻译成 x86指令才可以被CPU执行。
UEFI固件也不会例外,不信的网友,请拔掉CPU看看能否通过UEFI启动efi文件.....



>::纯X86的CPU能否运行Windows/UEFI  64bit ??【不可以
假设你在使用纯X86的CPU的计算机上使用Windows/UEFI 64bit或者运行含有x86不能识别的指令的程序,那么我想是不可能运行成功的,
正由于这点,才有了X86-64指令集的问世,这个指令集包含了一些可以识别64bit需要的指令。



>::市面CPU能否运行Windows/UEFI 32bit ??【可以
再说到目前的CPU,它包含X86和X86-64指令集,却不能在UEFI运行Win8 x86 PE的原因,原因就出在UEFI固件的问题上,是它不支持,
这也是我首先同意说UEFI版本能够影响到PE的运行。但是我想现如今的机器,如果将UEFI 64bit 换成 UEFI 32bit固件的话,那么肯定能够UEFI下运行Win8 x86 PE。
因为CPU指令集是包含该系统运行所需要的所有指令的。

例1:
VM虚拟机新建一个Windows 8,UEFI固件32bit,我们运行Win8 x86,
成立条件:市面CPU能支持+系统32bit+UEFI 32bit
结果:可以支持win8 x86pe的运行,进入系统里面可以看到虚拟机的CPU包含的指令集和我们实机的指令集一模一样。
          符合我们说的只要CPU支持,当UEFI时32bit 时候,可以支持win8 x86pe的运行。
而我们目前的机器都不集成UEFI 32bit,不支持Win8 x86PE的启动,
          恐怕是从X64未来的发展的角度考虑的,而非CPU不支持..


例2:IA64系统下的nvrboot.efi(仅适合于:纯X64CPU,UEFI 64bit)运行于:市面CPU 行+UEFI 64bit
已成立条件:UEFI 64bit支持,CPU不支持(本楼尾可以下载nvrboot.efi做一下测试)

结果:无法运行,理论:CPU指令集不支持,其他都是浮云,该efi需要的一些指令只有纯X64的CPU才具备的指令集....

有这么一种情况:
如果我找到一台纯X86的CPU的机器,内存加到1GB,运行VM9 x86绿色版(我目前用的),那么我运行虚拟机新建Windows 8 X64,UEFI是64bit,那么能否UEFI启动win8PE x64 呢?
答:我没有条件实验,但不妨碍我猜测:我想即使UEFI固件类型和系统类型一样,假如没有CPU指令集的支持,那么一切都是浮云...


我最终认为CPU不支持的你无论如何都不可能支持启动(除非换CPU),CPU支持的你肯定能通过其他手段启动。


如果耐心看完这么长的论述的话,还坚持说:
win8 x86的PE想要UEFI启动只需要UEFI固件支持,和CPU没有任何关系的话,那我无话可说了,因为我都说完了.....

nvrboot.zip (46.35 KB, 下载次数: 40)