无忧启动论坛

标题: 将PE放入ESP盘并创建开机双引导项 [打印本页]

作者: lhc0688    时间: 2022-4-3 11:23
标题: 将PE放入ESP盘并创建开机双引导项
本帖最后由 lhc0688 于 2022-5-19 21:10 编辑

5月19日:
重新写了下创建BCD引导项程序,在虚拟机、实机上测试都正常,故再发下,有兴趣的朋友可以下载使用、测试,也请高手指正;

重写的创建引导部分代码如下:
--------------------------------------------------------------
::挂载ESP盘为Z:盘;
mountvol Z: /s

::拷贝文件到ESP盘;
xcopy /S /Q /Y %~dp0ESP\*.* Z:\

::设置引导菜单等待时间为2秒
bcdedit.exe /timeout 2

::==== 以下新建一个名为“Boot from WIM”的WIM类型引导项,并默认BOOT.WIM文件为ESP盘根目录 =====

bcdedit /create  {20220520-0000-0000-0000-000000000001} /d "Boot from WIM" -application osloader
bcdedit /set {20220520-0000-0000-0000-000000000001} device ramdisk="[boot]\BOOT.WIM,{ramdiskoptions}"
bcdedit /set {20220520-0000-0000-0000-000000000001} osdevice ramdisk="[boot]\BOOT.WIM,{ramdiskoptions}"
bcdedit /set {20220520-0000-0000-0000-000000000001} locale zh-CN
bcdedit /set {20220520-0000-0000-0000-000000000001} winpe yes
bcdedit /set {20220520-0000-0000-0000-000000000001} Detecthal yes
bcdedit /set {20220520-0000-0000-0000-000000000001} systemroot \windows
bcdedit /displayorder {20220520-0000-0000-0000-000000000001} -addlast
bcdedit /create {ramdiskoptions}
bcdedit /set {ramdiskoptions} ramdisksdidevice "boot"
bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi

echo.
ECHO WIM引导项创建完成,请重启电脑检查新建项是否正常引导...
echo.
pause

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

以下是之前帖子探讨部分:

经过几天研究,已自己解决这一问题。

目的:将BOOT.WIM放入ESP分区上,并自动新建一个“Boot from WIM”的WIM类型引导项,实现开机双引导,方便后期新装、备份、恢复系统;

前提:

1、请先确认电脑为 EFI引导+GPT分区(存在ESP分区),且ESP分区至少大于300M;
2、自己已制作好的BOOT.WIM(必须小于235M)、和boot.sdi 两个文件,并存放在当前本批处理下的 ESP目录下,目录结构为:

                 ESP\BOOT.WIM
                 ESP\boot\boot.sdi

3、命令须在实机模式下执行,勿在PE模式下运行;

结果:会在开机时增加一个“Boot from WIM”引导项,并默认等待时间为2秒(可自行设置时间),选择后将进入你自己的PE系统;
菜单项截图:





作者: lhc0688    时间: 2022-4-3 11:27
高手有兴趣的,请帮忙指点、优化、除错下,在此感谢!
作者: lhc0688    时间: 2022-4-3 11:30
如果想用更大的 BOOT.WIM,则需要在分区时,手动选择ESP大小,比如500M。。。
作者: dony2006    时间: 2022-4-3 11:47
感谢分享
作者: 2012ccxbox    时间: 2022-4-3 11:48
esp的分区可以后期扩大么
作者: lhc0688    时间: 2022-4-3 12:08
这个是Win10下的,Win11 引导系统不知道是否一样,请慎用。
作者: szwp    时间: 2022-4-3 12:38
还在玩挂载啊,bcdboot多了解些,引导模式也不需限制
作者: hua_wuxin    时间: 2022-4-3 13:24
for /f "delims={,} ……
这里逗号是多余的,只保留{和}才是最符合你解析意图的
作者: oym2016    时间: 2022-4-3 13:26
{ramdiskoptions}的值呢?

作者: liuyanjun    时间: 2022-4-3 14:15
感谢分享
作者: lhc0688    时间: 2022-4-3 14:32
hua_wuxin 发表于 2022-4-3 13:24
for /f "delims={,} ……
这里逗号是多余的,只保留{和}才是最符合你解析意图的

试了下,去掉“,”确实正常,这个命令太深奥,我只是照抄,自己不理解。
作者: lhc0688    时间: 2022-4-3 14:36
oym2016 发表于 2022-4-3 13:26
{ramdiskoptions}的值呢?

{ramdiskoptions} 难道不是值吗?需要如何写?
作者: lhc0688    时间: 2022-4-3 14:46
本帖最后由 lhc0688 于 2022-4-3 14:47 编辑

我感觉把BOOT.WIM放入ESP盘是很好的方式:
1、双引导做好后,可以不用再管,ESP分区也可以单独备份,单独恢复,这样比修复引导更保险,基本不需要修复,感觉有问题就恢复下;

2、即使系统(C:)盘损坏,比如格掉,分区被误写等等,ESP盘只要在。一样可以正常引导进入PE进行分区恢复(引导菜单式样须用传统Win7,Win8以上带GUI的好像不行,缺少图形支持起不来;

3、ESP盘平时不显示,可减少生手误操作;

以上理解,不知道对不对。

作者: oym2016    时间: 2022-4-3 15:55
lhc0688 发表于 2022-4-3 14:36
{ramdiskoptions} 难道不是值吗?需要如何写?

bcdedit /set %Guid% device ramdisk="[boot]\BOOT.WIM,{ramdiskoptions}"
{ramdiskoptions}的值是告诉BOOT.WIM 去那找 boot.sdi
一般只要设定一次就行了
bcdedit /create {ramdiskoptions}
bcdedit /set {ramdiskoptions} ramdisksdidevice "boot"
bcdedit /set {ramdiskoptions} ramdisksdipath \efi\boot.sdi
::(或 \boot\boot.sdi)
作者: szwp    时间: 2022-4-3 18:03
参考俺发的贴,没写完整版,是怕限制了抄者思路。
作者: wcs    时间: 2022-4-3 18:19
支持了
作者: lhc0688    时间: 2022-4-3 18:32
我看下的人也有30个,有没能反馈下,效果如何?
作者: szwp    时间: 2022-4-4 08:18
说过狠多次了,set  path不需要抄
作者: lhc0688    时间: 2022-4-4 11:26
szwp 发表于 2022-4-4 08:18
说过狠多次了,set  path不需要抄

不明白,我这样写不对吗?
bcdedit /set %Guid% path \Windows\system32\boot\winload.efi

我是按照BOOTICE自动生成的界面,一项一项对照写的,当然也是网上查的例句,这样不行吗?
作者: szwp    时间: 2022-4-4 14:37
lhc0688 发表于 2022-4-4 11:26
不明白,我这样写不对吗?
bcdedit /set %Guid% path \Windows\system32\boot\winload.efi

删了不行么?等你的反馈。
作者: lhc0688    时间: 2022-4-4 14:54
szwp 发表于 2022-4-4 14:37
删了不行么?等你的反馈。

关闭该语句,生成的启动文件部分是空白


作者: mrzhonghb    时间: 2022-4-4 15:16
lhc0688 发表于 2022-4-4 14:54
关闭该语句,生成的启动文件部分是空白

空白好啊,bios和uefi都能启动,楼主试试就知道了
作者: lhc0688    时间: 2022-4-4 15:24
mrzhonghb 发表于 2022-4-4 15:16
空白好啊,bios和uefi都能启动,楼主试试就知道了

惭愧,空白确实可以启动。但如果是新分区,不指定会不会有问题呢?
作者: lhc0688    时间: 2022-4-4 15:25
lhc0688 发表于 2022-4-4 15:24
惭愧,空白确实可以启动。但如果是新分区,不指定会不会有问题呢?

这样的话,
bcdedit /set {ramdiskoptions} ramdisksdidevice "boot"
bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
这两句是不是也可以不用写了?
作者: szwp    时间: 2022-4-4 15:26
lhc0688 发表于 2022-4-4 15:24
惭愧,空白确实可以启动。但如果是新分区,不指定会不会有问题呢?

肯反馈就好。不要死抄。哪条命令添加的EXE就删了它。
作者: szwp    时间: 2022-4-4 15:27
lhc0688 发表于 2022-4-4 15:24
惭愧,空白确实可以启动。但如果是新分区,不指定会不会有问题呢?

自己提的问题,能自己测试么?还是需要别人帮测?
作者: szwp    时间: 2022-4-4 15:35
lhc0688 发表于 2022-4-4 15:25
这样的话,
bcdedit /set {ramdiskoptions} ramdisksdidevice "boot"
bcdedit /set {ramdiskoptions} r ...

能自己试的尽量自己试。
http://bbs.wuyou.net/forum.php?m ... d=426313&extra=
尽快学会不挂截

作者: szwp    时间: 2022-4-4 15:37
每句命令产生什么效果,是需要自己去测的。
作者: szwp    时间: 2022-4-4 15:47
创建语句生成的是exe

能找到是哪条语句么?语句哪来的?
作者: lhc0688    时间: 2022-4-4 15:47
szwp 发表于 2022-4-4 15:35
能自己试的尽量自己试。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=426313&extra=
尽快学会 ...

我说的是如果电脑是“新建分区”,会不会找不到引导文件,问这个是因为不理解为何空白能引导,是不是原本有自动判断,还是因为前面产生过引导项,存在默认。

比如 set  "boot" 和 boot.sd,我自己测试不设置也正常启动,但会不会在新分区状态下就不行?

这样问只是想请教下原理,我不可能现在把电脑重新分区搞测试,更不可能要求别人把电脑分区删掉为我测试,我觉得我表达也不应该让人产生这样歧义,我不知道您为何有这么大的意见。
作者: szwp    时间: 2022-4-4 15:49
lhc0688 发表于 2022-4-4 15:47
我说的是如果电脑是“新建分区”,会不会找不到引导文件,问这个是因为不理解为何空白能引导,是不是原本 ...

因为不欢迎意见,所以反馈太少吧,88。
作者: lhc0688    时间: 2022-4-4 16:07
还有我一开始就说明是在求教、指点,我发的内容确实是网上学习来的,包括坛里朋友热心指教的,当然其中也包括您的指点,这些我都非常感谢!
我确实不懂,没有您如此高深的技术沉淀,所以只能上网查找、引用、请教、学习,大家发到网上不就是让人学习探究的吗?不是每个人都能像您一样是技术高手,不可能在每个领域都是专家。我不知道您为何这么在意我“抄”别人,如果我有未经您允许抄到您,惹到您生气,那您说下就是了,我马上删掉,折腾这个只是因为这几天疫情隔离在家闲的蛋疼打发时间,搞成开心下,搞不成也无所谓,没必要这么用气。
作者: lhc0688    时间: 2022-4-4 16:22
szwp 发表于 2022-4-4 15:49
因为不欢迎意见,所以反馈太少吧,88。

我从没,也不会对别人的热心指点表示不欢迎。我不知道您为何有这么大的不满,如果我有哪地方得罪到您而不自知,那我向您说声对不起。

您愿意传教解惑我肯定承情并感谢,如果是对我言行有不满地方,可直接指出,我一定改正。
作者: szwp    时间: 2022-4-4 16:32
lhc0688 发表于 2022-4-4 16:22
我从没,也不会对别人的热心指点表示不欢迎。我不知道您为何有这么大的不满,如果我有哪地方得罪到您而不 ...

哪里有不满啊?有些东西是可以自己测的,一条条去试,才能理解功能,找到需要和不需要。
譬如path,不是所有pe都指向boot\winload这个路径的,删了才能适应更多的pe,适应双启。
如果只是照抄,感觉没多大意思。
关于这个path,如果不理解可以说啊,在你另外的贴里也说过了path了。
至于删了后,能不能启动,有没出错,得你反馈了。
作者: szwp    时间: 2022-4-4 16:33
哪里认为俺说的是不满,那也没啥需要说的了。
作者: lhc0688    时间: 2022-4-4 16:41
szwp 发表于 2022-4-4 15:27
自己提的问题,能自己测试么?还是需要别人帮测?

我之前写的-copy语句,生成的是exe,所以就加了这条set;后面改create ,习惯以为也是同样,没想到会有不同。
作者: ddnflier    时间: 2022-4-4 16:44
谢谢分享啊,点赞~~~
作者: szwp    时间: 2022-4-4 16:46
lhc0688 发表于 2022-4-4 16:41
我之前写的-copy语句,生成的是exe,所以就加了这条set;后面改create ,习惯以为也是同样,没想到会有不 ...

copy时就让删了path的,结果放弃了,没继续,太可惜。
作者: lhc0688    时间: 2022-4-4 16:46
szwp 发表于 2022-4-4 16:32
哪里有不满啊?有些东西是可以自己测的,一条条去试,才能理解功能,找到需要和不需要。
譬如path,不是 ...

这个只有懂其原理,才会想到这样测试,我目前的水平仅能知其然,未达到知其所以然地步,只能在别人点拨后才知道哪些语句要测试。
作者: arbenmao    时间: 2022-4-4 16:57
感谢大神分享   一下省事很多。
作者: lhc0688    时间: 2022-4-4 16:59
lhc0688 发表于 2022-4-4 16:41
我之前写的-copy语句,生成的是exe,所以就加了这条set;后面改create ,习惯以为也是同样,没想到会有不 ...

用拷贝命令是想会不会能简单点,后面发现并非所想;
现在方式至少表面上有效,语句也不复杂,如果最终也非常复杂,那也只好放弃,毕竟这方面技术不是学两天皮毛就行,需要积累太多基础,作为一个业余爱好者,我自知很难达到这个要求。
作者: szwp    时间: 2022-4-4 17:12
copy法肯定能成,需要几条命令,待测
作者: szwp    时间: 2022-4-4 17:33
lhc0688 发表于 2022-4-4 16:59
用拷贝命令是想会不会能简单点,后面发现并非所想;
现在方式至少表面上有效,语句也不复杂,如果最终也 ...

以前复杂的地方,坛友都帮忙解决了吧。新的复杂之处不说出来,没法帮啊。
作者: lhc0688    时间: 2022-4-4 17:34
szwp 发表于 2022-4-4 17:12
copy法肯定能成,需要几条命令,待测

您说行,我想那肯定是能行。今天要不先歇歇,搞一天已经头晕的不行,先做饭,回头再继续研究。
作者: wxzh    时间: 2022-4-4 19:20
已删除“bcdedit /set %Guid% path \Windows\system32\boot\winload.efi”这行,测试能添加且能启动!!
作者: denverh    时间: 2022-4-4 20:19
ESP分区是不是就是EFI那个分区?这样的话重装系统就不需要u盘启动了~
作者: szwp    时间: 2022-4-5 08:18
wxzh 发表于 2022-4-4 19:20
已删除“bcdedit /set %Guid% path \Windows\system32\boot\winload.efi”这行,测试能添加且能启动!!

做这个测试并不难。
作者: jlshnlhj    时间: 2022-4-6 09:53
本帖最后由 jlshnlhj 于 2022-4-6 10:58 编辑

学习一下。
作者: cxincn    时间: 2022-4-6 11:08
感谢分享
作者: 9527sss    时间: 2022-5-8 19:48

谢谢分享
作者: lhc0688    时间: 2022-5-19 12:46
5月19日:
重新写了下创建BCD引导项程序,在虚拟机、实机上测试都正常,故再发下,有兴趣的朋友可以下载使用、测试,也请高手指正;
作者: lhc0688    时间: 2022-5-19 12:48
本帖最后由 lhc0688 于 2022-5-19 20:44 编辑

虚拟机里调试的,忘记复制出来,错发了原来的,重新发下。
作者: 2010anlish    时间: 2022-5-20 16:38
我是把PE的wim包灌入VHD,然后从VHD启动,一个原理,异曲同工
作者: qq2348227    时间: 2022-5-20 16:55
学习了…
作者: blank007    时间: 2022-5-20 16:55
mrzhonghb 发表于 2022-4-4 15:16
空白好啊,bios和uefi都能启动,楼主试试就知道了

这个确实是这样的。

BIOS/UEFI都能启动,省了一个BCD文件。同时也方便合盘。
作者: 银狼驰骋    时间: 2022-10-26 08:23
在哪下载呢?
作者: papachi    时间: 2022-10-26 08:30
非常感谢你的教学。
作者: 香国妙手    时间: 2022-10-28 21:21
给力给力
作者: maghreb    时间: 2022-10-29 04:13
我多年的习惯是在快速启动菜单里添加一个PE选项,这样更方便点
作者: sxft1978    时间: 2022-10-29 08:07

作者: sxft1978    时间: 2022-10-29 08:07

作者: 香国妙手    时间: 2022-10-30 07:45
给力给力给力
作者: lovessmm    时间: 2022-11-2 20:59
ESP分区既然还能装文件,学习了。
作者: ZMLoveLH    时间: 2022-11-6 16:36
看看这个教程,学习如何创建开机双引导项啊
作者: dengchao_a    时间: 2022-11-23 11:17
这个可以有
作者: 银狼驰骋    时间: 2023-2-21 13:02
楼主 没有成品吗?  是复制代码成bat文件吗? 然后执行bat文件即可?
作者: 518hl    时间: 2023-2-21 13:06
求成品  最好一键傻瓜式的
作者: wenbieba    时间: 2023-6-2 15:13
不放到esp分区,放到其它位置或放到某个文件夹下批处理如何改写,
另外批处理中20220520-0000-0000-0000-字样能否去除
往大师指点
作者: lhc0688    时间: 2023-6-2 16:34
518hl 发表于 2023-2-21 13:06
求成品  最好一键傻瓜式的

http://bbs.c3.wuyou.net/forum.ph ... d=435331&extra=

经实测非常完美稳定;
作者: lhc0688    时间: 2023-6-2 16:36
wenbieba 发表于 2023-6-2 15:13
不放到esp分区,放到其它位置或放到某个文件夹下批处理如何改写,
另外批处理中20220520-0000-0000-0000- ...

http://bbs.c3.wuyou.net/forum.ph ... d=435331&extra=

里面的PECMD版可查看原代码,我写的完全是小白瞎研究,这个是专业大佬作品;
作者: d634655401    时间: 2023-6-2 16:45
我想知道BIOS模式怎么引导gpt格式硬盘的?
作者: fengshangren    时间: 2025-1-20 16:06
看着不错
作者: 大多数    时间: 2025-1-20 16:07
顶顶
作者: fengshangren    时间: 2025-1-22 17:21
感谢楼主无私分享
作者: fengshangren    时间: 2025-1-24 11:21
楼主辛苦了




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