Windows 和 BIOS 正在合伙劫持我的 UEFI 启动项 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MiketsuSmasher
V2EX    Windows

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

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

    我现在使用的是 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     Solana     5331 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 07:03 PVG 15:03 LAX 00:03 JFK 03:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86