V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
serbean117
V2EX  ›  Windows

关于 uefi 和引导的疑惑

  •  
  •   serbean117 · 2017-04-06 10:28:38 +08:00 via Android · 330 次点击
    这是一个创建于 2770 天前的主题,其中的信息可能已经有所发展或是发生改变。
    系统是 uefi 引导的 win10 , bios 中 uefi 启动项目只能看到固态一个。今天用 easyuefi 的时候发现“ uefi 启动列表”里面,有四个项,查看了一下两个指向我现在这个系统的 esp 分区的“/efi/microsoft/bootmgfw.efi ”,有一个指向我没装系统的盘,一个指向哪儿记不得了。我就保留了一个指向 bootmgfw.efi 的项,其他 3 个删掉,结果进不了系统了,提示 bcd 出现问题需要修复,我就纳闷了,关 bcd 什么事呀?于是我在 pe 开 bootice 查看了一下 /efi/microsoft/bcd 发现里面之前的设置,启动项全都丢了,只好手动设置了一个才启动成功。

    我感觉很疑惑,这个“ uefi 启动列表”是什么东西?存在哪呢?为什么会和 bcd 有关系?为什么它有 4 个我的 bios 只有一个启动项?如果是 mbr 的话,活动分区只会有一个,但是 gpt 的话如果有多个 esp 分区怎么办?更何况 esp 分区与 fat16 分区没啥不同啊。
    5 条回复    2017-04-08 07:40:14 +08:00
    acess
        1
    acess  
       2017-04-08 07:25:39 +08:00
    据我所知…… UEFI 有个 NVRAM 可以保存设置,其中就有各种启动项,包括但不限于 Windows Boot Manager 、 grub2 、 PXE 、 U 盘等。
    每次开机时 UEFI 固件都会扫描一下硬件,更新这个列表。
    有些蛋疼的问题也出自这个特性,比如联想笔记本把 U 盘里的 grub2 识别成某 Linux 导致无法启动、手动添加的 UEFI 启动项重启完就消失等。
    至于 BCD 文件……应该是 Windows 启动时,就从 NVRAM 里拷了一份启动项列表,然后在使用 bcdedit 时和 NVRAM 保持同步。
    acess
        2
    acess  
       2017-04-08 07:27:54 +08:00
    BCD 数据库里有{fwbootmgr}和{bootmgr}两个对象,我觉得{fwbootmgr}应该是和 UEFI NVRAM 保持同步的,但你也可以通过 /store 参数指定某个 BCD 数据库,然后读取 /修改这个 BCD 里存储的{fwbootmgr}启动项。
    acess
        3
    acess  
       2017-04-08 07:33:43 +08:00
    ESP 分区和一般 FAT 分区还真不一样(而且我记得 ESP 应该用 FAT32 而不是 FAT16 ?)。 ESP 是有自己的分区类型 GUID 的,有时候还会设置 GPT Attribute ,设置隐藏、必须等,这俩属性用 diskpart 、 gdisk 可以查看、修改。
    至于两块硬盘都有 ESP 的情况……感觉列表里要列出几个、哪个排前面要看 UEFI 固件的心情吧。另外, UEFI 启动项可以设置隐藏属性( BOOTICE 中可见),可能是这个隐藏属性,结合了 UEFI 固件开机时自动扫描硬件的行为,最终导致了 LZ 看到的“四个启动项在 BIOS 里只看到一个”等怪现象。
    acess
        4
    acess  
       2017-04-08 07:36:34 +08:00
    BCD 实际上就是个 registry hive ,注册表编辑器可以加载它的。
    LZ 还可以看看这个:http://www.yiiyee.cn/Blog/bcd-1/#more-746
    acess
        5
    acess  
       2017-04-08 07:40:14 +08:00
    既然 LZ 提到“提示 bcd 出现问题需要修复”,那么我猜“四个启动项在 BIOS 里只看到一个”和“提示 bcd 出现问题需要修复”这两个现象也有可能是 LZ 使用 EasyUEFI 不当地修改了{bootmgr}中的某些值导致的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1062 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:29 · PVG 03:29 · LAX 11:29 · JFK 14:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.