无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: hilsonma
打印 上一主题 下一主题

[分享] 快速修复UEFI引导(Windows)

  [复制链接]
跳转到指定楼层
1#
发表于 2019-6-10 23:09:45 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hilsonma 于 2019-11-21 15:44 编辑

1.下载附件 引导修复_Win.7z (1.23 MB, 下载次数: 1481)
2.解压后双击运行脚本 重建Win引导.cmd
    脚本会新建bcd文件到第一个Windows分区 \Windows\Boot\EFI\bcd

在efi引导菜单中指定引导 (Windows分区)\Windows\Boot\EFI\bootmgfw.efi,如:
        search -s -f \Windows\Boot\EFI\bootmgfw.efi
        chainloader \Windows\Boot\EFI\bootmgfw.efi

如果是使用windows 本身引导作为UEFI的主引导,就将Windows分区这两个文件
        \Windows\Boot\EFI\bootmgfw.efi
        \Windows\Boot\EFI\bcd
    复制到 efi分区
        \efi\boot\bootx64.efi
        \efi\boot\bcd
    注意bootmgfw.efi复制后改名为bootx64.efi。

如果是使用xorboot引导,建议系统类型不要使用 Windows NT 6+ , 直接使用 EFI应用程序,指定文件名为任意磁盘上的 \Windows\Boot\EFI\bootmgfw.efi

如果是通过引导 (Windows分区)\Windows\Boot\EFI\bootmgfw.efi 来启动windows,bootmgfw.efi会先找同分区下的 \Windows\Boot\EFI\bcd ,找不到再找同分区下的 \efi\microsoft\boot\bcd 。
这样每次重装系统只需重建 (Windows分区)\Windows\Boot\EFI\bcd,不需要更新efi分区。
u盘拿到另一台电脑启动windows也是只需在该电脑Windows分区建立 \Windows\Boot\EFI\bcd,不需要更改u盘efi区。

之前所见的uefi引导修复工具大多是针对windows引导,大多是基于bcdboot或bcdedit 。其实主要就是更新bcd文件,因为windows的uefi引导失败基本都是bcd文件与系统不匹配导致的。

附件已更新,如果是MBR硬盘会自动更新bios平台下的BCD,如果新安装的镜像缺少bootmgr会自动补上。

以上附件名可以看出,这是一个引导修复系列,相关的还有:
引导修复_WEE   ---------重建硬盘bios引导(wee)
引导修复_EFI     ---------重建硬盘uefi引导


评分

参与人数 6无忧币 +22 收起 理由
xiaojiejun + 1
kpw518 + 1 很给力!
sd3166 + 5 赞一个!
北冥有鱼 + 5
2012andyle113 + 5 很给力!
chishingchan + 5 赞一个!

查看全部评分

2#
 楼主| 发表于 2019-6-11 12:20:35 | 显示全部楼层
995070995 发表于 2019-6-11 12:02
大神都在请教一个问题?
MacBook Pro苹果笔记本安装了双系统,想分一个小区放pe系统(不是安装的)
1, ...

能不能分享一下把你的启动软件?
回复

使用道具 举报

3#
 楼主| 发表于 2019-6-11 12:59:26 | 显示全部楼层
本帖最后由 hilsonma 于 2019-6-11 13:01 编辑
995070995 发表于 2019-6-11 12:43
以前用个XorBootUx64
没有其他的启动软件


就你上传的那个图的,貌似还可以鼠标操作的。
如果你不清楚的话,就把efi分区打包上传,当然如果有镜像文件就不要,只要相关启动文件结构,或者先上传efi分区文件结构图
像我的:(cmd窗口切换到efi分区根目录,输入tree /f >a.txt 再把a.txt的内容贴上来)
文件夹 PATH 列表
卷序列号为 00000087 0C01:107A
F:.
│  wepe.wim
│  a.txt
│  
└─efi
    ├─boot
    │      bootx64.efi
    │      
    ├─grub
    │  │  grub.cfg
    │  │  grubfm.cfg
    │  │  
    │  └─wimboot
    │          bcd
    │          boot.efi
    │          boot.sdi
    │         
    └─microsoft
            bcd
            bootx64.efi
            
回复

使用道具 举报

4#
 楼主| 发表于 2019-6-11 13:24:48 | 显示全部楼层
放到百度网盘再分享链接
回复

使用道具 举报

5#
 楼主| 发表于 2019-6-11 13:33:09 | 显示全部楼层
995070995 发表于 2019-6-11 12:43
以前用个XorBootUx64
没有其他的启动软件

我听说有个CLOVER,没有去了解,不知道你的是不是,因为你的是MACBOOK,我想应该是clover,看了你的图片我感兴趣
回复

使用道具 举报

6#
 楼主| 发表于 2019-6-11 13:35:06 | 显示全部楼层
本帖最后由 hilsonma 于 2019-6-11 13:38 编辑
995070995 发表于 2019-6-11 13:26
cmd窗口切换到efi分区根目录,这个怎么操作?


输入 cd /d f:\
假如ESP是F盘的话。是哪个盘就输入哪个字母

既然打包了就上传到百度网盘分享出来吧,有了这两个压缩包我应该可以学到
回复

使用道具 举报

7#
 楼主| 发表于 2019-6-11 13:50:39 | 显示全部楼层

是的
回复

使用道具 举报

8#
 楼主| 发表于 2019-6-11 15:16:39 | 显示全部楼层
995070995 发表于 2019-6-11 14:05
你看一下我这个esp是什么盘,你给一个完整的命令路径

esp分区一般是隐藏的,没有盘符。需要运行showdrive.exe或mountesp.exe之类的挂载工具后才会分配盘符。
所以在分配盘符之前也没有完整的路径。
回复

使用道具 举报

9#
 楼主| 发表于 2019-6-12 10:06:31 | 显示全部楼层
本帖最后由 hilsonma 于 2019-6-12 10:18 编辑


看了,大概了解如下:

\EFI\APPLE\EXTENSIONS\Firmware.scap 这个是Clover引导生成的

其余的都是引导windows的相关文件,其实可以简化为这两个:
\EFI\Microsoft\Boot\bootmgfw.efi (这个可能需要复制改名存放一份为 \efi\boot\bootx64.efi)
\EFI\Microsoft\Boot\BCD

由于没有clover的实例,我也没有接触过mac os x ,所以没办法做到你要的引导效果。

我能想到的就是拿 \efi\microsoft\boot\bcd 修改,添加一个引导PE的菜单项。这样每次进windows需要多一次二级菜单等待所以并不令人满意,最好还是象你要求的修改clover添加PE引导,这个我现在做不到。
回复

使用道具 举报

10#
 楼主| 发表于 2019-6-12 14:10:27 | 显示全部楼层
wintoflash 发表于 2019-6-12 12:30
不是clover。那个是水果电脑uefi的设备选择界面。

哦,原来是水果的uefi 自身呀,没有见过,谢谢告知。
回复

使用道具 举报

11#
 楼主| 发表于 2019-6-12 14:18:10 | 显示全部楼层
995070995 发表于 2019-6-12 12:21
非常感谢,热心回答
但是用优盘pe系统时,在启动界面有U盘的启动项和图标

经过wintoflash 的提醒才清楚你的回答是什么情况。
你可以尝试bootice或xorboot之类的工具,用其中的uefi启动序列管理功能,添加uefi启动项。
当然,需要试先准备好启动文件放在esp分区
回复

使用道具 举报

12#
 楼主| 发表于 2019-6-13 12:59:15 | 显示全部楼层
本帖最后由 hilsonma 于 2019-6-13 13:02 编辑
995070995 发表于 2019-6-13 08:56
没那么复杂,搞定了。


分享一下你是怎么做的呀

象我的电脑,插个U盘当然会多个选项,如果不插U盘,好象esp区只认 efi\boot\bootx.efi,不知是不是多做一个fat分区就会多一个选项,我没有再试。
回复

使用道具 举报

13#
 楼主| 发表于 2019-6-13 15:10:31 | 显示全部楼层


再看一下Win10的启动项内容,就是UEFI启动序列第一项 Windows Boot Manger 的具体内容,再上个图给我看看。谢谢。

点评

好的!  详情 回复 发表于 2019-6-13 15:43
回复

使用道具 举报

14#
 楼主| 发表于 2019-6-13 19:47:16 | 显示全部楼层
本帖最后由 hilsonma 于 2019-6-13 20:06 编辑


果然,Win10是GPT0,WinPE是GPT3,我明白了,谢谢。

两个FAT32分区,GPT0启动Win10,GPT3启动WinPE. 这是一个使用UEFI启动序列菜单作为多系统选择的例子

点评

winpe直接FAT32分区就行了。UEFI也放在这个分区。  详情 回复 发表于 2019-6-13 20:12
回复

使用道具 举报

15#
 楼主| 发表于 2019-6-13 20:32:14 | 显示全部楼层
995070995 发表于 2019-6-13 20:12
winpe直接FAT32分区就行了。UEFI也放在这个分区。

这个我知道。我的都是这样,一个精简版的wim文件直接放fat分区连同相关uefi启动文件。
win10本身则是系统分区(NTFS)和启动分区(FAT32)分开的。

而Win10和WinPE的启动分区可以是同一个,也可以是各自独立每个系统一个。
你现在的做法就是Win10和WinPE各一个启动分区,通过UEFI启动设备选项选择
如果是同一个启动分区,就需要通过启动分区引导程序的菜单来选择,这个菜单可以是bootmgr菜单(bcd)或grub2菜单(grub.cfg)或xorboot菜单(xorboot.xor)或refind菜单(refind.conf)等等。
回复

使用道具 举报

16#
 楼主| 发表于 2019-6-16 06:52:17 | 显示全部楼层
本帖最后由 hilsonma 于 2019-6-16 07:03 编辑
maanu 发表于 2019-6-16 03:09
hi ,

sorry to jump in , but it seems you using BOOTCE v 1.4.0 x64  /  is it private version ? i ...


V1.4.0 could be found in 5810# by Pauly
http://bbs.wuyou.net/forum.php?m ... extra=&page=581
回复

使用道具 举报

17#
 楼主| 发表于 2019-6-16 11:16:33 | 显示全部楼层

目前1.4版是不完整版,因为作者源码丢失了。
要完整功能现在只能用1.3.4版

点评

Thank you Dear Hilson.  详情 回复 发表于 2019-6-16 22:21
哦!原来如此。  详情 回复 发表于 2019-6-16 15:39
回复

使用道具 举报

18#
 楼主| 发表于 2019-10-20 21:39:53 | 显示全部楼层
vm669 发表于 2019-10-20 18:43
怎么添加使支持ISo安装光盘启动

不明白
回复

使用道具 举报

19#
 楼主| 发表于 2019-10-20 22:22:40 | 显示全部楼层
本帖最后由 hilsonma 于 2019-10-20 22:26 编辑
vm669 发表于 2019-10-20 22:11
大侠,grub2引导xorboot的菜单那句要怎么写呢?需要文件放在哪里呢?


menuentry "Xorboot" "/xorbootx64.efi" {
        search --no-floppy --set --file $2
        chainloader $2
}

第一句是 menuentry "菜单标题" "xorbootx64.efi的除盘符外的完整存放路径“ {
例如 menuentry "Xorboot" "/efi/boot/xorbootx64.efi" {
又如 menuentry "Xorboot" "/efi/xorboot/bootx64.efi" {
再如 menuentry "Xorboot" "/pe/xorbootx64.efi" {
efi文件随意名称随意存放

菜单文件要放在xorbootx64.efi同一分区的 \efi\xorboot\ 文件夹,
例如 \efi\xorboot\xorboot.xor
菜单文件固定名称固定路径

点评

u盘启动,xorboot作为第一级启动时 u盘的xorboot启动时只有一个框,里面的菜单项目数字文字全部没有黑黑的是怎么回事?  详情 回复 发表于 2019-10-21 09:27
回复

使用道具 举报

20#
 楼主| 发表于 2019-10-20 22:35:18 | 显示全部楼层
本帖最后由 hilsonma 于 2019-10-20 22:37 编辑
vm669 发表于 2019-10-20 22:14
比如我16gu盘里放置win7和win10安装ISO文件,我要引导菜单选择项一级或二级的,启动ISO来安装,不用进去pe ...


ISO文件里其实是安装镜像,另外还有一个最简PE镜像用来支持安装程序,也就是说至少有两个wim文件或者一个wim加一个esd.

我的做法是直接将安装镜像提取出来,在自己的维护PE里运行一键安装脚本来安装。
比如主菜单只包含Windows和WinPE
在WinPE桌面放一键还原脚本,在WinPE开始菜单放一键安装win7和一键安装win10两个脚本。
不需要虚拟光驱的,直接展开安装镜像到系统盘,展开前加个格式化操作,展开后加个建立bcd的操作就可以了。
回复

使用道具 举报

21#
 楼主| 发表于 2019-10-21 13:11:13 | 显示全部楼层
本帖最后由 hilsonma 于 2019-10-21 13:17 编辑
vm669 发表于 2019-10-21 11:16
晕了硬盘XOR一级启动grub二级都好了,
U盘试验grub一级xor二级


menuentry "4.Xorboot" "/EFI/xorboot/bootx64.efi" --hotkey=4 {
        search --no-floppy --set --file $3
        chainloader $3
}

要改成
menuentry "4.Xorboot" "/EFI/xorboot/bootx64.efi" --hotkey=4 {
        search --no-floppy --set --file $2
        chainloader $2
}

menuentry "4.Xorboot" "/EFI/xorboot/bootx64.efi" --hotkey=4 {...}
这句第一个变量$1是"4.Xorboot" ,第二个变量$2是"/EFI/xorboot/bootx64.efi",没有第三个变量$3。
如果有第三个变量$3 应该是类似这样的:
menuentry "4.Xorboot" "/EFI/xorboot/bootx64.efi" "/efi/xorboot/xorboot.xor" --hotkey=4 {...}
总之紧跟menuentry 后面有几对引号就有几个变量,分别名为$1,$2,$3...


xorboot 0.25导出来的efi文件是随便你存放的,可以放硬盘也可以放u盘,默认文件名bootx64.efi也可以改为xorbootx64.efi等等,菜单文件就一定是 \efi\xorboot\xorboot.xor.

q:746173048 自打用了微信后很少上q了,手机没有装q的。偶尔有朋友预约远程才上一下q.

点评

晕死我了 是我自作聪明 以为有一个2了,不能重复,所以改成3,  详情 回复 发表于 2019-10-21 15:47
回复

使用道具 举报

22#
 楼主| 发表于 2019-10-21 13:20:44 | 显示全部楼层
vm669 发表于 2019-10-21 09:29
esp\efi\grub\wimboot\isoboot.efi

看到你的分享资料当中有一个isoboot,不知道是做什么的?^_^

据说是可以在uefi平台引导iso镜像的,可以用在grub2中,但我试了下,没有成功,可能我还不会用。现在新版本为imgboot.efi
回复

使用道具 举报

23#
 楼主| 发表于 2019-10-21 16:30:43 | 显示全部楼层
vm669 发表于 2019-10-21 15:53
可以进入xorboot,但是就是这样子

使用xorbootux64.exe重新生成efi文件及xor文件,全部用默认选项,现后将efi文件和xor文件放到正确的路径,确定能够正常显示菜单再修改菜单。

点评

奇怪了,全新的导出的bootx64.efi改名xorbootx64.efi放在xorboot,新建默认的xor菜单也放在里面。 启动了还是不行的,停留在grub2菜单选择里,这回连黑黑的xor菜单都没有了 另,要grub支持中文显示该增加哪几  详情 回复 发表于 2019-10-21 18:52
回复

使用道具 举报

24#
 楼主| 发表于 2019-10-22 05:25:32 | 显示全部楼层
vm669 发表于 2019-10-21 19:13
1、奇怪了,deepin和凤凰OS的启动菜单文字是复制本机的呀,怎么点了以后还是停留在这里?

模拟启动显示正常,实机启动显示不正常,这仲情况我也不懂了,你不妨改变一下分辨率及或背景色前景色试试,然后也可以去作者原贴反映这个情况。

点评

收到,谢谢你,按你的思路,单单grub也够用了,简洁也好 另,要grub支持中文显示该增加哪几个文件?  详情 回复 发表于 2019-10-22 09:18
回复

使用道具 举报

25#
 楼主| 发表于 2019-10-22 13:16:14 | 显示全部楼层
本帖最后由 hilsonma 于 2019-10-22 13:36 编辑
vm669 发表于 2019-10-22 09:18
收到,谢谢你,按你的思路,单单grub也够用了,简洁也好

另,要grub支持中文显示该增加哪几个文件?


grub2本身内部使用utf-i编码的,你只要将grub.cfg等自行编辑的文件都以utf-8编码保存就可以显示中文了。

必要时可以参考以下语句:
  set gfxterm_font=unicode
  set lang=zh_CN
  set locale_dir=$prefix/locale
  insmod gfxterm
  terminal_output  gfxterm
  loadfont unicode

或参考网上其他文章。我对这些也没有深入,我一向是越简越好。

关于凤凰os的引导,我大至了解了一下,好象凤凰os是bios平台的吧,不知我有没有搞错,如果是bios平台系统,uefi当然引导不了。

关于deepin的引导,之前我也约略了解了一下,但也不得其法。
我不记得我的grubx64.efi有没有加上ex2模块,你不妨将此模块(ext2.mod)放到\efi\grub,然后试试以下引导
insmod ext2
search --no-floppy --set --file /boot/grub/grub.cfg
set prefix=("${root}")/boot/grub
configfile "${prefix}"/grub.cfg
回复

使用道具 举报

26#
 楼主| 发表于 2019-10-23 14:03:14 | 显示全部楼层
本帖最后由 hilsonma 于 2019-10-23 14:12 编辑
vm669 发表于 2019-10-23 12:32
谢谢大神,这个grub2暂时停下折腾,O(∩_∩)O哈哈~

再来搞BCD


据我的理解,bcd仅支持wim,vhd(x). 不支持efi。
bios平台下bcd还支持bootsector从而支持g4d等,因此也能支持iso。但不直接支持iso.

可以说,xorboot包含bcd,具体原理我不懂,只知道xorboot内置了bcd.
如果你在xorboot菜单使用了系统类型windows nt 6+, 那么重装系统后必定要更新xor菜单,否则出现bcd错误,这证明了xor内置bcd。而且xor菜单有个外置bcd的选项,不过那应该是要求在xorboot同一分区的。
所以xor 系统类型我一般不使用windows nt 6+,而是使用efi应用程序,引导系统分区的\Windows\Boot\EFI\bootmgfw.efi ,这样就不是使用内置bcd而是使用外部bcd (跟bootmgfw.efi同分区)。重装系统也不必更新xor菜单。
回复

使用道具 举报

27#
 楼主| 发表于 2019-12-25 14:50:48 | 显示全部楼层
la111111 发表于 2019-12-25 11:57
装好的系统,只是修复uefi引导或mbr添加uefi引导话,随便找个win10安装好的efi文件夹复制到引导分区,用BOO ...

说得对。
我这个所谓的修复其实就是一个基于bcdedit 的脚本,新建一个引导到一个新的bcd文件,再用这个bcd文件引导。作用就跟你说的用bootice添加一个引导项差不多的。

windows的引导错误,大部分都是由于bcd出错引起的,而bcd设置中一般使用partition= 这样的方式表示分区,这种方式下,bcd实际记录的是磁盘签名和分区偏移量(mbr硬盘)或者磁盘和分区的guid。当磁盘签名和分区偏移量发生改变时就会出错。发生改变的情形例如使用克隆工具、安装多系统、调整分区等等。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-4 07:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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