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

Windows 和 BIOS 正在合伙劫持我的 UEFI 启动项

  •  
  •   MiketsuSmasher · 2022-01-07 15:00:54 +08:00 · 5510 次点击
    这是一个创建于 1080 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在使用的是 Matebook 14 ,以下行为的触发条件:ESP 分区的 EFI 目录里面存在 Microsoft 目录

    • 如果把 UEFI 启动项里面的"Windows Boot Manager"删掉,等到下次进入 Windows 后,启动项里面又会多出来一个 Windows Boot Manager ,而且总是排在首位

    • 如果把 Windows Boot Manager 调整到靠后的位置(哪怕是第二位),再次进入 Windows 后,要么多出来一个 Windows Boot Manager ,要么 Windows Boot Manager 被排到首位

    • Windows (或者 BIOS ?)似乎还会判断 Windows Boot Manager 启动项是否被篡改,具体表现是:在你修改了启动项启动的 EFI 文件后,下次进入 Windows ,又会多出来一个排在首位的 Windows Boot Manager

    • 据说在一些机器上会有更恶劣的行为:哪怕进的是 Linux ,如果满足触发条件,启动项首位就会多出来一个 Windows Boot Manager

    以上的 UEFI 启动项变化是使用 booticex64 工具得到的,各位可以自行验证一下(不一定会出现,取决于你的电脑)

    第 1 条附言  ·  2022-01-07 15:48:17 +08:00
    补充:没有开启 Secure Boot ,BIOS 设有密码
    25 条回复    2022-01-10 10:59:51 +08:00
    gadfly3173
        1
    gadfly3173  
       2022-01-07 15:38:59 +08:00
    看起来像是因为 secure boot 的关系?
    MiketsuSmasher
        2
    MiketsuSmasher  
    OP
       2022-01-07 15:47:41 +08:00 via Android
    @gadfly3173 没有 secure boot
    haffner
        3
    haffner  
       2022-01-07 16:14:57 +08:00 via iPhone
    用 bcdedit 改,别在 BIOS 设置改。
    yousabuk
        4
    yousabuk  
       2022-01-07 16:27:34 +08:00 via iPhone
    那应该是笔记本厂商应 Microsoft 故意而为之

    降低预装正版 Windows 操作系统的成本价,达成的协议?
    ly841000
        5
    ly841000  
       2022-01-07 16:27:42 +08:00
    这是 bios 的功能,用于安装操作系统后自动重启进新的系统,而不是再次重启进安装盘
    yangzhaofeng
        6
    yangzhaofeng  
       2022-01-07 16:29:45 +08:00
    一般來說如果你用了 secure boot 並且用了 bitlocker 全盤加密且密鑰儲存在 TPM 中就不會發生這樣的事了
    ysc3839
        7
    ysc3839  
       2022-01-07 16:55:33 +08:00   ❤️ 1
    我认为是操作系统的行为,因为通过 EFI Variables 就能修改启动项列表,至于能否修改默认启动项我不确定。
    ziseyinzi
        8
    ziseyinzi  
       2022-01-07 17:18:25 +08:00
    diy 的台式从没遇到过这种情况,倾向于是笔记本 OEM 和微软有 py 。
    msg7086
        9
    msg7086  
       2022-01-07 17:37:24 +08:00
    我只知道有些 UEFI 会自动添加他搜索到的硬盘里 EFI 里面的启动程序。
    比如把一个装有 Windows 的硬盘查到一台船新的电脑上,很大可能 UEFI 开机后扫描到了 ESP 里的启动文件,然后自动添加项目,然后就可以正常启动 Windows 了。

    也有比较「古典」的 UEFT 不会自动添加,需要手动输入名称和分区目录地址的。
    kidonng
        10
    kidonng  
       2022-01-07 17:59:41 +08:00 via Android
    就是 Windows 干的
    另外你得搞清楚 BIOS 和 UEFI 是井水不犯河水的
    cccer
        11
    cccer  
       2022-01-07 18:36:23 +08:00
    Windows 是有权更新修改 UEFI 的,但某些主板有禁止系统写 UEFI 的选项。
    secretman
        12
    secretman  
       2022-01-07 18:59:46 +08:00
    重装系统,不用自带的 OEM 系统,可以考虑用 OC 引导
    kome
        13
    kome  
       2022-01-07 19:13:44 +08:00
    个人案例, 联想小新 700 曾经装过 windows 10 和 ubuntu 双系统, 先 windows 再 ubuntu, ubuntu 选择与 windows 共存的安装方式, 启动列表由 ubuntu 安装程序更改. 之后启动首项就是 ubuntu 了, 从未被自动修改过. 个人倾向是电脑厂商的相关软件干的.
    jim9606
        14
    jim9606  
       2022-01-07 19:33:56 +08:00   ❤️ 1
    除非 Windows 大版本更新,否则 Windows 正常启动流程不会主动修改 UEFI NVRAM 引导选项。
    有些品牌的 BIOS 会主动检测 Windows Boot Manager 是否存在并主动添加,例如 Acer Insyde 和 Intel VisualBIOS 就有这种行为。有些 BIOS 会有影子 NVRAM 导致 efibootmgr 、bootice 等工具的修改无效,Acer 就有这种设计。
    kkocdko
        15
    kkocdko  
       2022-01-07 20:04:35 +08:00 via Android
    大惊小怪,这点事情被你说成“劫持”。
    就如上面有人说的那样,大概率是 BIOS 自动检测并添加了项目。我这边 Fedora 也是一个情况,删了之后自动又添加回来。
    后来我手动把 efi 文件删了之后就不会添加了。如果你真的要删,就去引导分区把对应的文件直接删掉。
    KoMAsS121
        16
    KoMAsS121  
       2022-01-07 20:05:53 +08:00
    咱去年双系统(manjaro+win10/arcolinux +win10 ),用 grub 引导时,倒没发现这现象,他没动我的 UEFI,乖乖服 grub 的管,每次不管启动谁,都没填新东西,开机也直接进 grub 让我选。
    (至于为啥今年不用,因为咱 win10 自动更新重启后,忘记手动选进 win10 ,而自动进了 linux,直接把我 win10 系统给更新坏了。当然此前我也更新成功很多次,这是个概率事件,但咱还是不想接着赌了。这时技术菜的,纯根据谷歌内容去操作的,也千万别用 Win 自带的工具去修,直接重装了事吧,咱这菜鸟去修,直接把盘修到返厂走保修了,因为连到电脑上会直接卡住系统,盘咋也读不了)
    KoMAsS121
        17
    KoMAsS121  
       2022-01-07 20:09:16 +08:00
    @KoMAsS121 咱说的是关于第四点“更恶劣的行为”的发现,前三点,不知道,我用 grub 后就没动过 uefi 。当然我 uefi 里面也确实存在 windws 的直接启动项,至于顺序不记得了,反正开机必进 grub ,不管上次关机的是啥系统。
    nkcfc
        18
    nkcfc  
       2022-01-07 20:50:39 +08:00   ❤️ 1
    以前用过集采的联想一体机,每次启动 windows 就会把自己变成第一启动,而且其他启动项很难加进去。
    防止 windows 自动加入的解决方案如下:
    把 efi 分区中的 windows 启动文件全部删除,在 windows 下利用命令 bcdboot 生成一份 efi 启动文件到 C 盘。这样 efi 分区没有 windows 启动文件了,而 EFI 无法调用 NTFS 分区下的文件(其他机器也许具备读取 ntfs 的 efi 驱动)。
    然后使用 Grub 或者 Refind 引导 windows ,我一般用 refind ,这个可以自动搜素所有 efi 文件。
    qbqbqbqb
        19
    qbqbqbqb  
       2022-01-07 20:55:05 +08:00
    你把 Linux 的 efi 启动器拷到 ESP 分区里的 /EFI/boot/bootx64.efi 这个位置试试
    wsy2220
        20
    wsy2220  
       2022-01-07 20:58:03 +08:00
    禁止直接加载 windows 的 EFI ,只走 grub 的 chainloading 就可以了
    kwater
        21
    kwater  
       2022-01-07 21:49:31 +08:00
    想起 nn 年前 ms dell 在 bios 层面对 linux 不友好的一面
    whenov
        22
    whenov  
       2022-01-07 22:18:16 +08:00
    我这边 windows 有较小概率会修改启动项,记得大概一年会碰到一次
    f165af34d4830eeb
        23
    f165af34d4830eeb  
       2022-01-08 13:57:44 +08:00
    额,看了这么多楼好像都没说到点子上。。如果我没猜错,windows boot manager 被排到首位应该是 op 在 windows 电源选项中开启了“快速启动”,开启快速启动后 wbm 确实会被 windows 自动放在首位,关掉就好。如果还不行,就用 grub 的 efi 替换掉 windows 的 bootmgfw.efi
    f165af34d4830eeb
        24
    f165af34d4830eeb  
       2022-01-08 14:00:44 +08:00
    @MiketsuSmasher #23 中描述的 windows 行为应该是从 win 8.1 开始就有的,开了“快速启动”windows 就会很流氓的把自己启动项锁定在第一个,当时折腾黑苹果做双系统,简单粗暴的用 clover 的 efi 替换了 bootmgfw.efi ,问题暂时解决,但是 windows 更新后又得重新替换。后面机缘巧合下了解到是“快速启动”的锅,关闭后 windows 就不会强行把自己放第一位了。
    hanmo0893
        25
    hanmo0893  
       2022-01-10 10:59:51 +08:00
    windows boot manager 里面放的都是启动配置文件,禁止删除
    你开 uefi 快速启动了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2449 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:47 · PVG 23:47 · LAX 07:47 · JFK 10:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.