无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 13206|回复: 20

求助各位高手关于UEFI模式下用bcdedit添加PE启动项目的问题

[复制链接]
发表于 2016-11-29 14:32:02 | 显示全部楼层 |阅读模式
本帖最后由 2013xiaokang 于 2016-11-29 14:33 编辑

各位大大门好,如题,求助一下是怎么回事,批处理代码如下:
@echo off
set RAMDISK_OPTIONS={e92b8e30-a6e5-41f6-a6b9-188230a23dd2}
set RAMDISK_OPTIONS2={e92b8e30-a6e5-41f6-a6b9-188230a23dd3}
set WINPE_GUID={54b4c01f-dce0-102a-a4e0-462c07a00c5e}
set WINPE_GUID2={54b4c01f-dce0-102a-a4e0-462c07a00c5f}
bcdedit /timeout 10
bcdedit /create %RAMDISK_OPTIONS% /d "启动 PE 32位" /device
bcdedit /set %RAMDISK_OPTIONS% ramdisksdidevice partition=D:
bcdedit /set %RAMDISK_OPTIONS% ramdisksdipath \Boot\boot.sdi
bcdedit /create %WINPE_GUID% /d "启动 PE 32位" /application OSLOADER
bcdedit /set %WINPE_GUID% device ramdisk=[D:]\Boot\PE32.wim,%RAMDISK_OPTIONS%
bcdedit /set %WINPE_GUID% path \windows\system32\winload.exe
bcdedit /set %WINPE_GUID% osdevice ramdisk=[D:]\Boot\PE32.wim,%RAMDISK_OPTIONS%
bcdedit /set %WINPE_GUID% systemroot \windows
bcdedit /set %WINPE_GUID% detecthal yes
bcdedit /set %WINPE_GUID% nx optin
bcdedit /set %WINPE_GUID% winpe yes
bcdedit /set %WINPE_GUID% locale "zh-CN"
bcdedit /displayorder %WINPE_GUID% /addlast
bcdedit /create %RAMDISK_OPTIONS2% /d "启动 PE 64位" /device
bcdedit /set %RAMDISK_OPTIONS2% ramdisksdidevice partition=D:
bcdedit /set %RAMDISK_OPTIONS2% ramdisksdipath \Boot\boot.sdi
bcdedit /create %WINPE_GUID2% /d "启动 PE 64位" /application OSLOADER
bcdedit /set %WINPE_GUID2% device ramdisk=[D:]\Boot\PE64.wim,%RAMDISK_OPTIONS2%
bcdedit /set %WINPE_GUID2% path \windows\system32\winload.exe
bcdedit /set %WINPE_GUID2% osdevice ramdisk=[D:]\Boot\PE64.wim,%RAMDISK_OPTIONS2%
bcdedit /set %WINPE_GUID2% systemroot \windows
bcdedit /set %WINPE_GUID2% detecthal yes
bcdedit /set %WINPE_GUID2% nx optin
bcdedit /set %WINPE_GUID2% winpe yes
bcdedit /set %WINPE_GUID2% locale "zh-CN"
bcdedit /displayorder %WINPE_GUID2% /addlast
exit
以上代码,在bios启动模式下一切正常,可在UEFI启动模式下,把加载项改成winload.efi就不能启动了,显示自动修复,请问各位高手,小弟错在哪儿了,文件肯定都有的,还望不吝赐教,谢谢。
发表于 2016-11-29 14:42:20 | 显示全部楼层
winload.exe
换成
winload.efi
前提是文件路径对
回复

使用道具 举报

 楼主| 发表于 2016-11-29 16:04:09 | 显示全部楼层
谢谢红毛大大的回复,用过您的作品,非常好用。
不过,我能保证路径是对的,bios是\windows\system32\winload.exe,uefi是\windows\system32\boot\winload.efi,不知道为什么就是启动不了,写到优盘上efi模式能顺利启动,证明efi文件没问题,可是写到硬盘上就是不能启动,就是那个windows未能启动,自动修复的对话框。
补充一点,我本机系统是win7x64,但是在win10上也通不过,我的pe是8.1的。

点评

不知道楼主这个问题最终找到原因没有,我也是前不久遇到了这个问题,但不一样的是,长期以来,同样的PE,同样是安装到UEFI的电脑上,成功居多,目前只遇到过两台电脑出现这样的情况,实在是郁闷  详情 回复 发表于 2019-9-29 10:00
回复

使用道具 举报

发表于 2016-11-29 16:05:23 | 显示全部楼层
win7的bootmgr或者bootmgr.efi类似文件是引导不了高版本的windows的
回复

使用道具 举报

 楼主| 发表于 2016-11-29 16:09:37 | 显示全部楼层
可是10也不行啊
回复

使用道具 举报

发表于 2016-11-29 16:39:51 | 显示全部楼层
我的笔记本,也是遇到了怪事。
本来uefi+gpt正常安装和启动的,现在因故需要重新安装,突然无法安装了,复制windows文件时没有反应。
即使是部署映像到C分区,添加启动项到efi分区,也是无法启动。
换bios+mbr,一切正常。
大惑不解,百思不得其解。

评分

参与人数 1无忧币 +5 收起 理由
wanghh + 5

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-11-29 16:55:44 | 显示全部楼层
楼上重新用dg快分试试,用diskpart有时候设置gpt guid会有问题,另外,windows要求efi必须>=100M,且最好有128 MB的MSR分区。

点评

你好,刚刚重游此贴,看到了你的回复, 我用了diskpart,DG,以及Gparted,均失败了, 我建立的EFI分区有1536MB,MSR有512MB,也是失败了M, 谢谢  详情 回复 发表于 2016-12-27 13:20
回复

使用道具 举报

 楼主| 发表于 2016-11-29 17:08:36 | 显示全部楼层
我的问题有没有哪位高手知道的?我刚才按照红毛大大的指示,换了我pe里面的boot.efi还是不行,我现在无比郁闷。
回复

使用道具 举报

发表于 2016-11-29 17:14:16 | 显示全部楼层
朋友的一台 GigaByte NB (UEFI+GPT == 内定)
用着觉得怪怪的就Ghost回当初的系统备存档
试数回皆卡在第一个开机处,改安全模式同卡
重上新的问题照旧!?
后来改 BIOS+MBR 延用至今尚未发现异常
回复

使用道具 举报

发表于 2016-11-29 19:51:48 | 显示全部楼层
先用bootice改一下BCD,新建启动项,看能不能启动?
如果不能启动,可能是wim内核出了问题。
如果能启动,可能是所用的GUID与原来系统中recoveryd的启动项冲突了。换一个GUID.也不排除有其它的可能性,比如BOOT.SDI路径不对,系统默认的BCD储存与实际启动时的BCD储存不一致等。
回复

使用道具 举报

发表于 2016-11-29 21:49:26 | 显示全部楼层
WINPE_GUID={54b4c01f-dce0-102a-a4e0-462c07a00c5e}
WINPE_GUID2={54b4c01f-dce0-102a-a4e0-462c07a00c5f}
使用 bootice 檢查上面這兩個啟動項添加情形
回复

使用道具 举报

 楼主| 发表于 2016-11-30 02:00:33 | 显示全部楼层
谢谢楼上各位的回复,我的guid是没有问题的,因为都能成功创建,如果guid冲突是不能创建的,wim内核应该没问题,因为用优盘efi能启动,也就是用U+V2能启动。sdi文件路径应该是没问题的,都在分区boot文件夹下,一个是\boot\boot.sdi,另一个是\boot\pe32或64.wim,继续疑惑中。

点评

硬盘上的系统版本?是不是高于PE的版本。如果不是,试一下用PE的bootx64.EFI,bootia32.EFI替换硬盘上的引导文件。  详情 回复 发表于 2016-11-30 11:47
回复

使用道具 举报

发表于 2016-11-30 11:47:01 | 显示全部楼层
本帖最后由 不知 于 2016-11-30 11:51 编辑
2013xiaokang 发表于 2016-11-30 02:00
谢谢楼上各位的回复,我的guid是没有问题的,因为都能成功创建,如果guid冲突是不能创建的,wim内核应该没 ...


硬盘上的系统版本?是不是高于PE的版本?如果不是,试一下用PE的bootx64.EFI,bootia32.EFI,bootmgr.efi,bootmgfw.efi替换硬盘上的引导文件。
回复

使用道具 举报

发表于 2016-11-30 13:45:26 | 显示全部楼层
boot.sdi最好指定一下,我的就是默认的路径不知道怎么回事不能用,然后boot.sdi最好也换成pe上面的
回复

使用道具 举报

发表于 2016-12-27 13:20:29 | 显示全部楼层
2013xiaokang 发表于 2016-11-29 16:55
楼上重新用dg快分试试,用diskpart有时候设置gpt guid会有问题,另外,windows要求efi必须>=100M,且最好有 ...

你好,刚刚重游此贴,看到了你的回复,
我用了diskpart,DG,以及Gparted,均失败了,
我建立的EFI分区有1536MB,MSR有512MB,也是失败了M,
谢谢
回复

使用道具 举报

发表于 2019-9-29 10:00:47 | 显示全部楼层
2013xiaokang 发表于 2016-11-29 16:04
谢谢红毛大大的回复,用过您的作品,非常好用。
不过,我能保证路径是对的,bios是\windows\system32\winl ...

不知道楼主这个问题最终找到原因没有,我也是前不久遇到了这个问题,但不一样的是,长期以来,同样的PE,同样是安装到UEFI的电脑上,成功居多,目前只遇到过两台电脑出现这样的情况,实在是郁闷
回复

使用道具 举报

发表于 2019-11-25 16:42:39 | 显示全部楼层
学习了。
回复

使用道具 举报

发表于 2019-12-10 04:13:04 | 显示全部楼层
同问,正需要这个

点评

uefi模式下,64位的cpu必须使用64位的引导程序引导64位的操作系统,不能使用32位的引导程序,也不能引导32位的操作系统,这是跟传统模式不同的。 现在的电脑基本都是64位的cpu了,所以32位的PE是不能在uefi模式下引  详情 回复 发表于 2019-12-10 06:27
回复

使用道具 举报

发表于 2019-12-10 06:27:32 | 显示全部楼层
manageken 发表于 2019-12-10 04:13
同问,正需要这个

uefi模式下,64位的cpu必须使用64位的引导程序引导64位的操作系统,不能使用32位的引导程序,也不能引导32位的操作系统,这是跟传统模式不同的。
现在的电脑基本都是64位的cpu了,所以32位的PE是不能在uefi模式下引导成功的。除非个别的平板电脑,有可能是32位的cpu.

uefi模式下,添加pe启动项,先将 pe64.wim 和 boot.sdi 放在 c:\boot 文件夹,然后使用bcdedit 如下添加菜单项:

@echo off
for /f "tokens=2 delims={}" %%a in ('bcdedit /create /application osloader') do set Guid={%%a}
bcdedit /set %Guid% description "启动 PE 64位"
bcdedit /set %Guid% device ramdisk=[C:]\Boot\PE64.wim,{ramdiskoptions}
bcdedit /set %Guid% osdevice ramdisk=[C:]\Boot\PE64.wim,{ramdiskoptions}
bcdedit /set %Guid% systemroot \Windows
bcdedit /set %Guid% detecthal 1
bcdedit /set %Guid% winpe 1

bcdedit /displayorder %Guid% /addlast
bcdedit /timeout 10
bcdedit /set {bootmgr} nointegritychecks 1

bcdedit /create {ramdiskoptions}
bcdedit /set {ramdiskoptions} ramdisksdidevice partition=C:
bcdedit /set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi

要添加额外的PE,只需如下:
@echo off
for /f "tokens=2 delims={}" %%a in ('bcdedit /create /application osloader') do set Guid={%%a}
bcdedit /set %Guid% description "启动 PE2 64位"
bcdedit /set %Guid% device ramdisk=[C:]\Boot\PE64_2.wim,{ramdiskoptions}
bcdedit /set %Guid% osdevice ramdisk=[C:]\Boot\PE64_2.wim,{ramdiskoptions}
bcdedit /set %Guid% systemroot \Windows
bcdedit /set %Guid% detecthal 1
bcdedit /set %Guid% winpe 1
bcdedit /displayorder %Guid% /addlast

不管多少PE,都使用相同的boot.sdi,所以不需要额外设置。

开始要求将 pe64.wim 和 boot.sdi 放在 c:\boot 文件夹,是为了确保启动成功。成功后再尝试改放 d:\boot ,相应的也将以上批处理中的C: 改成 D:
不过在我的电脑上好象放逻辑分区不能成功启动,所以我建议放 c盘。

当然,最好的还是放在efi分区,这时批处理应该是这样:
@echo off
for /f "tokens=2 delims={}" %%a in ('bcdedit /create /application osloader') do set Guid={%%a}
bcdedit /set %Guid% description "启动 PE 64位"
bcdedit /set %Guid% device ramdisk=[boot]\Boot\PE64.wim,{ramdiskoptions}
bcdedit /set %Guid% osdevice ramdisk=[boot]\Boot\PE64.wim,{ramdiskoptions}
bcdedit /set %Guid% systemroot \Windows
bcdedit /set %Guid% detecthal 1
bcdedit /set %Guid% winpe 1

bcdedit /displayorder %Guid% /addlast
bcdedit /timeout 10
bcdedit /set {bootmgr} nointegritychecks 1

bcdedit /create {ramdiskoptions}
bcdedit /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
回复

使用道具 举报

发表于 2020-3-1 22:29:12 | 显示全部楼层
学习。回头试一下,除了c:\boot,PE是不是也可以放在ESP分区里?
回复

使用道具 举报

发表于 2020-8-31 11:13:14 | 显示全部楼层
遇到同样问题,按照红毛大大的提示改成winload.efi就好了,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 23:09

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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