【原创】TP在UEFI固件下F11键或Vantage蓝键引导修复
本帖最后由 tlzsw 于 2022-10-28 12:05 编辑在支持或基于Legacy固件启动的设备(如X390、X220)中,F11键或Vantage蓝键使用官方定制的MBR,引导设备启动一键恢复机制。时代在进步,如今TP的很多设备仅支持UEFI固件启动,那么在自行安装Windows10系统后,该如何恢复F11键或Vantage蓝键的引导功能呢?下面,从原理和配置两个方面给大家做个抛砖引玉的介绍。
一、原理
(一)硬件恢复按钮机制
在设备开在Windows10或是更高版本的操作系统上支持硬件恢复按钮机制。在基于UEFI固件的设备上,可以配置硬件恢复按钮启动WinRE环境。
https://learn.microsoft.com/zh-c ... -re?view=windows-11
(二)LenovoBT.efi文件
在设备开机自检后按下F11按键,UEFI固件会绕过正常的引导顺序,执行 ESP分区下EFI\Boot\LenovoBT.efi文件。LenovoBT.efi文件将调用 ESP分区下EFI\Microsoft\Boot\bootmgfw.efi文件并加载ESP分区下EFI\Microsoft\Recovery\BCD文件,启动WinRE环境。
https://forums.lenovo.com/t5/Ent ... 9173?page=1#3729173
注:LenovoBT.efi文件提取自国行ThinkPad X390的OEM系统,将在文末以附件形式提供。
二、配置
(一)基础配置
挂载ESP分区,将LenovoBT.efi文件复制到ESP分区下EFI\Boot文件夹即可。如缺失WinRE环境,需要自行修复。
https://learn.microsoft.com/zh-c ... -re?view=windows-11
(二)高阶配置
知晓了LenovoBT.efi文件的工作原理,那么是不是可以利用LenovoBT.efi文件,开机按F11键或是Vantage蓝键直接启动一个WinPE(或是多系统)呢,答案是肯定的。利用BCDEdit 命令(第三方工具也有很多)编辑ESP分区下EFI\Microsoft\Recovery\BCD文件,以实现该意图。
https://learn.microsoft.com/zh-c ... ons?view=windows-11
说明:
1、因测试设备有限,LenovoBT.efi文件仅在X220、T430、E480、X390和X13 Gen3设备上完成测试,对于AMD处理器设备的兼容性未知。
2、LenovoBT.efi文件支持安全启动,其校验值如下:
MD5:
A7D2B5A20FF5098975BA4743F80FAF26
SHA1: 5063548D4C006E5F023128A71EA2BAADBADF127B
SHA256:
94284D82A1BC57830ECCB171DAFBC560514207D55C49E38EA2BF66E8F0B9571E
CRC32:
614F1CD7
有营养的技术贴 赞一个,这才是真正的技术贴 赞!早看到此贴,我就不用恢复系统了! tlzsw 发表于 2022-10-28 03:47
在支持或基于Legacy固件启动的设备(如X390、X220)中,F11键或Vantage蓝键使用官方定制的MBR,引导设备启动 ...
楼主为啥没有测试神机X230了? 问的好,因为手头没有该设备~{:1_257:} 使用f11代替插优盘按f12进51pe的功能吗? 本帖最后由 jackyd98 于 2022-10-28 15:38 编辑
太复杂了。我的方案是 GRUB4UEFI > GRUB2FILE. 比如可以制作成 F11一键启动51NBV3.0.(也可以其它任意支持UEFI的ISO/WIM镜像,没试过老的MBR/IMG)。
U盘的话直接刷VENTORY.
是这个意思吗? 开不了机的情况下,按THINKPAD VANTAGE蓝色按键,然后按F11 回复系统? 强!先回复再看,支持技术类文档 peacefeeling 发表于 2022-10-28 14:41
使用f11代替插优盘按f12进51pe的功能吗?
是的,编辑ESP分区下EFI\Microsoft\Recovery\BCD文件,添加wim文件即可。感觉直接按F11比插U盘按F12要方便。 本帖最后由 tlzsw 于 2022-10-28 16:16 编辑
jackyd98 发表于 2022-10-28 15:21
太复杂了。我的方案是 GRUB4UEFI > GRUB2FILE. 比如可以制作成 F11一键启动51NBV3.0.(也可以其它任意支持UE ...
殊途同归~之前一直用第三方案实现该功能,在看了"【贴图】保姆级ThinkPad原版系统下载方法,内容来自论坛学习和其他网站摘抄的工具https://www.ibmnb.com/forum.php?mod=viewthread&tid=2023698"后,感觉不用BIOS自带的F11功能有种可惜了的感觉~ bingo1224 发表于 2022-10-28 15:24
是这个意思吗? 开不了机的情况下,按THINKPAD VANTAGE蓝色按键,然后按F11 回复系统?
能不能恢复系统,取决于ESP分区必要文件存在,WinRE环境存在。我修改了ESP分区下EFI\Microsoft\Recovery\BCD文件,可以引导自己的PE、RE,甚至某个独立分区的操作系统。
我上次用的U盘恢复的无盘x1c 2018,盘是网上自己买的空盘,DELL的燃7000那台机机,是开机按f12开启的系统自带的恢复系统,非常的方便。^t^楼主介绍的这个不错,经常PE装系统,再装一些驱动,有时也有点疲惫,所以,这种恢复系统的方法,省去了很多的烦恼。感谢分享! wqnfs 发表于 2022-10-28 20:13
我上次用的U盘恢复的无盘x1c 2018,盘是网上自己买的空盘,DELL的燃7000那台机机,是开机按f12开启的系统自 ...
很多品牌机都有这种硬件按钮恢复机制,抛开U盘,不论恢复还是维护都很方便的。目前就研究过TP和华为的设备,TP的F11是依靠LenovoBT.efi文件,HW的F10是依靠一个卷标为“WinPE”的分区。 tlzsw 发表于 2022-10-28 20:25
很多品牌机都有这种硬件按钮恢复机制,抛开U盘,不论恢复还是维护都很方便的。目前就研究过TP和华为的设 ...
确实这种恢复贼方便,把你没想到的驱动都完美的给装好了。就像ATA的驱动,大多数人都会忽略这个驱动,包括显示器的驱动,这两个驱动有时是需要驱动解压后,再手动去添加上去的。如果是恢复的系统,这些驱动都完美的装好的。
DELL官网驱动最不喜欢,有了恢复按钮,天堑变通途。
本帖最后由 tlzsw 于 2022-10-29 16:20 编辑
wqnfs 发表于 2022-10-28 22:10
确实这种恢复贼方便,把你没想到的驱动都完美的给装好了。就像ATA的驱动,大多数人都会忽略这个驱动,包 ...
大佬好,出于好奇,借了一台Dell的笔记本,捣鼓了一下F12固件引导机制。
硬盘里有三个恢复属性的隐藏分区(de94bba4-06d1-4d40-a16a-bfd50179d6ac 0x8000000000000001),在ESP分区EFI文件夹下有个dell文件夹,其中包含了一整套Windows Boot Manager启动文件,通过阅读其中BCD文件,发现bootmgfw.efi加载一个sos.wim(sos.wim位于卷标为“DELLSUPPORT”的恢复分区的sources文件夹下),这个就应该是包含SupporAssist OS Recovery主程序的WinPE。
出厂镜像文件在卷标为“Image”的恢复分区里。
卷标为“WINRETOOLS”的恢复分区里的WinRE.wim也添加了SupporAssist OS Recovery恢复程序。
通过修改BCD或是出厂系统镜像,可以借用F12的固件引导,扩展很多功能,比如添加一个维护用的WinPE,替换成定制操作系统~
tlzsw 发表于 2022-10-29 16:17
大佬好,出于好奇,借了一台Dell的笔记本,捣鼓了一下F12固件引导机制。
硬盘里有三个恢复属性的隐藏分 ...
您太厉害了,透过现像看本质。牛呀。我只会用,看不深。{:1_323:} tlzsw 发表于 2022-10-28 16:04
是的,编辑ESP分区下EFI\Microsoft\Recovery\BCD文件,添加wim文件即可。感觉直接按F11比插U盘按F12要方便 ...
大佬可否发个教程,详细讲解一下,怎么在BCD文件中添加wim文件?
能用F11打开隐藏在硬盘中的pe,对于备份还原系统来说简直不要太方便了!可惜我技术水平不行,一直没能实现。
十分感谢! myccer 发表于 2022-10-29 18:22
大佬可否发个教程,详细讲解一下,怎么在BCD文件中添加wim文件?
能用F11打开隐藏在硬盘中的pe,对于备 ...
推荐您用BOOTICE这个app,下面以该app操作为例子,希望对您有帮助。
1、需要您先要挂载ESP分区。选择“物理磁盘”功能项,选择“目标磁盘”,选择“分区管理”。
选中择ESP分区(类型),点击“分配盘符”,选择盘符并确定。(示例为E:)
2、而后编辑BCD文件。选择“BCD编辑”功能项,选择“其他BCD文件”并定位到ESP分区EFI\Microsoft\Recovery\BCD文件,选择“智能编辑模式”。
点击“添加”,选择“新建WIM启动项”
依次设置“启动磁盘”(下拉菜单可以选取)、“启动分区”(下拉菜单可以选取)、“设备文件”(对应自己的PE文件)、“SDI文件”和“菜单标题”。
tlzsw 发表于 2022-10-29 22:11
推荐您用BOOTICE这个app,下面以该app操作为例子,希望对您有帮助。
太牛了!先感谢一下,再认真学习! 技术贴,其实我个人非常喜欢拯救者系统,WIN10之后就没有了,难受,感谢楼主 tlzsw 发表于 2022-10-29 22:11
推荐您用BOOTICE这个app,下面以该app操作为例子,希望对您有帮助。
终于搞定了!感谢大佬专门截了图并加了注释说明!!!
在您耐心又详细的解答下,成功用F11按出了选择菜单,并进入了硬盘上的PE系统!{:1_277:}
忧伤的坠天使 发表于 2022-10-30 15:40
技术贴,其实我个人非常喜欢拯救者系统,WIN10之后就没有了,难受,感谢楼主
我在一台Y9000P 2021和6代Y系列游戏本上测试过LenovoBT.efi,好像并不需要文件支持~但也是调用ESP分区下EFI\Microsoft\Recovery\BCD文件。
至于系统,个人还是觉得选择适合自己的就是最好的~
myccer 发表于 2022-10-30 16:18
终于搞定了!感谢大佬专门截了图并加了注释说明!!!
在您耐心又详细的解答下,成功用F11按出了选择菜 ...
最好把PE文件放到一个隐藏分区,这样恢复操作后就不至于需要再次修复~ tlzsw 发表于 2022-10-30 19:44
最好把PE文件放到一个隐藏分区,这样恢复操作后就不至于需要再次修复~
谢谢提醒!我目前就是按照您图片中的那样,在硬盘上专门划分了一个10G的隐藏分区(Fat32,Unknown类型)存放PE文件,在里面存放了2个不同的PE(WEPE和51NB的PE),按F11后可以选择进入哪个PE。这对于备份只有Type-C接口的X1 nano来说非常方便! myccer 发表于 2022-10-30 23:25
谢谢提醒!我目前就是按照您图片中的那样,在硬盘上专门划分了一个10G的隐藏分区(Fat32,Unknown类型) ...
我的截图给您误导了,隐藏分区GUID属性、分区格式都是不唯一的。我的操作是为了兼容F12启动添加的一个自定义的nvram启动项~这样ESP分区损坏独立分区依旧能够启动设备 tlzsw 发表于 2022-10-31 00:30
我的截图给您误导了,隐藏分区GUID属性、分区格式都是不唯一的。我的操作是为了兼容F12启动添加的一个自 ...
明白了,没有误导,现在已经完美实现了我心心念念许久的开机F11可进入PE的功能啦,非常感谢!!
下一步再研究研究NVRAM启动项,这样正好就不用再修改分区了嘛 myccer 发表于 2022-10-31 10:50
明白了,没有误导,现在已经完美实现了我心心念念许久的开机F11可进入PE的功能啦,非常感谢!!
下一步 ...
EFI NVRAM中的启动选择
微软官方对此有详细说明:https://learn.microsoft.com/zh-cn/windows-hardware/drivers/devtest/boot-options-in-efi-nvram
要实现隐藏分区启动,除了微软官方的启动器bootmgwf.efi,还有很多第三方启动器可以选择,但对应Windows操作系统考虑到安全启动等因素,选择bootmgwf.efi是兼容性最好的方案~
下面在虚拟机中简单介绍隐藏分区和启动项的添加
隐藏分区的设置(Windows操作系统环境下)
在UEFI固件引导的设备中,需要配置GPT分区表,即每个分区都被一组值唯一代表。在设置隐藏分区时需要注意分区的类型和属性两个内容,使用diskpart命令可以具体查看。
在Windows操作系统中有很多固化了的类型ID值,比如某个分区GPT类型中有{de94bba4-06d1-4d40-a16a-bfd50179d6ac},这就表示该分区类型属于Windows的恢复分区。很多和微软有着紧密联系的设备OEM制造商都有自己专属的GUID值,便于在Windows操作系统中识别和管理,比如联想的{bfbfafe7-a34f-448a-9a5b-6213eb736c22}表示Lenovo Recovery,仔细观察我们会发现在很多预装Windows操作系统的联想设备上都有该隐藏分区。为了个性化定义,我选择避开已有的GUID值并重新生成。
对应隐藏分区的属性,则依赖于0xC000000000000001标记分区“不显示盘符”和“隐藏”这两个属性,当然恢复分区对应的属性0x8000000000000001(隐藏)也适用。
具体官方详细说明:https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/configure-uefigpt-based-hard-drive-partitions?view=windows-11
如此设置有什么好处?不言而喻,保护分区数据!
添加启动项(Windows操作系统环境下)
UEFI组织的官网上有对Windows启动过程的详细解剖:http://www.uefi.org/sites/default/files/resources/UEFI-Plugfest-WindowsBootEnvironment.pdf
在此就不赘述了,但有一点需要再次明确,Windows操作系统下的BCDEdit工具不能对固件启动项修改!UEFI Shell或是其他操作系统环境下修改,不做讨论。
效果1:
效果2:
使用bcdedit /copy {bootmgr} /d "OEM Tools Partition"等命令行仅能实现效果1。如若要同时实现效果2,就我了解目前Windows操作系统下只能依赖第三方工具。
我还是推荐BOOTICE这个应用,在1.40版中添加了命令行方式添加启动项。
bootice添加uefi引导序列命令行
BOOTICEx64.exe /uefi /add /inspos=1 /file="I:\EFI\boot\grub2x64.efi" /title="\EFI\boot\grub2x64.efi"
inspos, insert position,插入位置,0-最大项;非法时放最后。Bootice引导序列里面的顺序可能和实际启动的时候有差别,因为有些引导项目是UEFI固件提供的,这些引导项windows是不能读取的。
/file=参数里面,盘符需要先挂载。
该命令多次运行会多次添加,如果不想重复添加,可以先删除原有的引导序列。
bootice删除uefi引导序列命令行
BOOTICEx64.exe /uefi /delete /file="I:\EFI\boot\grub2x64.efi"
/file=参数里面,盘符需要先挂载。
说明:隐藏分区如有EFI启动文件,务必格式化为Fat32以兼容UEFI启动规则。
tlzsw 发表于 2022-10-31 15:34
EFI NVRAM中的启动选择
微软官方对此有详细说明:https://learn.microsoft.com/zh-cn/windows-hardware/ ...
解读的非常详细!
这两天太忙了,等有空了专门研究,不明白的还得再向您请教!
页:
[1]
2