找回密码
 立即注册
搜索
查看: 2005|回复: 25

[硬件] 多系统下的启动问题,以及如何干掉 Windows Boot 求教

[复制链接]
     
发表于 2021-9-17 12:14 | 显示全部楼层 |阅读模式
本帖最后由 浅仓透透 于 2021-9-17 12:17 编辑

因为以前用台式机的时候装系统我都是独立硬盘装,然后用F12直接选硬盘启动的。
最近装笔记本,在一个硬盘上装了多系统,有点疑问想来问问。

前提:
GPT 分区 + UEFI引导 关闭了安全启动
按照顺序安装了系统,Win10_A   Win10_B  Ubuntu 20.04

目前的启动状态为:
BIOS 里可以看到的启动信息为 1 Ubuntu ,2 Windows Boot ManagerGRUB 看到的也一样

Ubuntu 使用的是 GRUB 2.04 ,Boot文件夹挂载在根目录。Esp/efi/ubuntu 下是Ubuntu的引导文件,引导读取根目录boot下启动配置。
Windows Boot Manager 启动以后可以选择Win10_A,或者Win10_B。选择A直接启动,选择B要重启,进入GRUB选择Win Boot 再选择Win10_B才能启动。

我现在知道:   
efi\boot\bootx64.efi  是Win10在不使用多系统情况下,默认引导文件
efi\microsoft\boot\bootmgfw.efi  是在多系统情况下,进入windows Boot Manager 的引导文件

————————————分割线————————————————
我的目标是:
直接通过GRUB 有3个选项,Ubuntu  Win10_A Win10_B 可以让我直接启动
或者在主板Boot 启动选项里出现  Ubuntu Win10_A Win10_B,而不是 Windows Boot Manager

以此带来的疑问是:
GRUB 应该怎么修改……
主板Boot是怎么检测到有几个启动选项的,怎么干掉Windows Boot

——————————————
有点复杂也有点折腾,基本找不到相似的问题。
文档也看得头很大了。。来看看有没有高人教我



image.png
回复

使用道具 举报

     
 楼主| 发表于 2021-9-17 12:16 | 显示全部楼层
这哪冒出来的附件。。
回复

使用道具 举报

     
发表于 2021-9-17 12:19 | 显示全部楼层
本帖最后由 Damenly 于 2021-9-17 12:33 编辑
  1. $ grep -A 5 Windows /boot/grub/grub.cfg
  2. menuentry 'Windows 10' {
  3.     search --fs-uuid --no-floppy --set=root 1881-6DFB
  4.     chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
  5. }

  6. submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-6f96ecaf-a75d-4a9a-8695-b51f115da1a2' {
复制代码
  1. nvme1n1
  2. ├─nvme1n1p1 ntfs         Recovery 7C448075448033C4
  3. ├─nvme1n1p2 vfat   FAT32          1881-6DFB
  4. ├─nvme1n1p3
  5. └─nvme1n1p4 ntfs                  643082F23082CB0E
  6. $ mout /dev/nvme1n1p2 /mnt

  7. $ sudo mount /dev/nvme1n1p2 /mnt
  8. $ ls /mnt/EFI/Boot/bootx64.efi
  9. /mnt/EFI/Boot/bootx64.efi
复制代码


单windows是这样,多windows没试过
回复

使用道具 举报

头像被屏蔽
发表于 2021-9-17 12:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
发表于 2021-9-17 12:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2021-9-17 12:31 来自手机 | 显示全部楼层
2个或者3个boot分区不就行了。。。1个boot分区1个系统引导,然后BIOS里就能显示3个菜单,如果不显示,用bootice编辑uefi列表加三个菜单。
回复

使用道具 举报

     
发表于 2021-9-17 12:32 来自手机 | 显示全部楼层
win10的快速启动都要关掉,否则某个系统处于快速启动状态关机,此时进入另一个系统会出问题。
回复

使用道具 举报

     
发表于 2021-9-17 13:55 | 显示全部楼层
主板Boot是怎么检测到有几个启动选项的


是由用户层软件主动告知的
一个启动项的内容至少包括:

* .efi 文件的路径
* .efi 文件所处的硬盘分区
* 在 BIOS 里显示的人眼易读的名称(叫 label, 类似于硬盘分区的 label)

安装系统的时候会主动写入这些信息
也可以用另外的软件来增删改查
在 Ubuntu 里可以用 efibootmgr: https://wiki.debian.org/UEFI#efibootmgr_and_efivar
回复

使用道具 举报

     
 楼主| 发表于 2021-9-17 18:23 | 显示全部楼层
macos 发表于 2021-9-17 12:27
bcd菜单模式没选对,不要metro菜单,就不会不同win切换重启

可以用回老的启动菜单,但是还是需要从win boot 进去选一次
回复

使用道具 举报

     
 楼主| 发表于 2021-9-17 18:26 | 显示全部楼层
5long 发表于 2021-9-17 13:55
是由用户层软件主动告知的
一个启动项的内容至少包括:

研究了一下午。。
用 efibootmgr 新建了两个BIOS启动选项,A 和 B,分别对应 /mnt/EFI/Win10/ 下面两个新建的efi启动文件
然后根据  Windows Boot Manager 里面的信息,最终引用的是 \Windows\system32\winload.efi 文件

复制了过去,然后不得行。我太弱了
回复

使用道具 举报

     
 楼主| 发表于 2021-9-17 18:29 | 显示全部楼层
现在想从F12直接从BIOS里启动跳过  Windows Boot Manager,但是不确定两个 Win10 用哪里的efi能进去。。

我再研究研究,还是没弄懂双系统的情况下 Windows Boot Manager 干了啥
回复

使用道具 举报

头像被屏蔽
发表于 2021-9-17 18:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
发表于 2021-9-17 18:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2021-9-17 18:51 | 显示全部楼层
macos 发表于 2021-9-17 18:36
多win,在bcd以外的层面,必须多esp

好吧,那还是只能跟我以前装两个盘一样了。。
我去拆一下分区
回复

使用道具 举报

     
发表于 2021-9-17 19:35 来自手机 | 显示全部楼层
要不直接新装一个rEFind,那个是会自动识别所有盘上的Windows和linux系统的

—— 来自 OnePlus KB2000, Android 11上的 S1Next-鹅版 v2.4.4.1
回复

使用道具 举报

     
 楼主| 发表于 2021-9-17 20:04 | 显示全部楼层
开起 发表于 2021-9-17 19:35
要不直接新装一个rEFind,那个是会自动识别所有盘上的Windows和linux系统的

—— 来自 OnePlus KB2000, An ...

不行的啦,只能识别到 windows boot manager
回复

使用道具 举报

     
 楼主| 发表于 2021-9-17 20:10 | 显示全部楼层
看了看,\EFI\Microsoft\Boot\bootmgfw.efi 引导会加载同目录的bcd,bcd 里写的两个系统路径,一个本系统相对路径,另外一个系统是绝对路径,所以要重启。

然后创建了个双esp分区,但是第二个分区接不到Win_B上。
一个硬盘只能有一个efi标记盘,其他的盘没有标记能识别到引导马。我用efibootmgr 写进去没用
回复

使用道具 举报

     
发表于 2021-9-17 20:40 | 显示全部楼层
浅仓透透 发表于 2021-9-17 20:10
看了看,\EFI\Microsoft\Boot\bootmgfw.efi 引导会加载同目录的bcd,bcd 里写的两个系统路径,一个 ...

这样,你把两个分区的efi swap以下,然后看看能不能chain boot到Win_B上。如果没有EFI flag的话,bios应该是识别不到的,用grub chain boot试下
回复

使用道具 举报

     
发表于 2021-9-18 00:25 | 显示全部楼层
用传统选择菜单试试?
BCDEDIT /SET {Current} BootMenuPolicy Legacy

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2021-9-18 01:57 | 显示全部楼层
EasyBCD
回复

使用道具 举报

头像被屏蔽
发表于 2021-9-18 08:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
发表于 2021-9-18 08:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2021-9-18 09:00 | 显示全部楼层
本帖最后由 浅仓透透 于 2021-9-18 09:01 编辑
macos 发表于 2021-9-18 08:06
另外bcd重启不是路径原因,你启用了metro菜单

metro 菜单一句  bcdedit /set {bootmgr} displaybootmenu Yes  就可以关掉了。
进入Windows Boot 选当然可以。但是进入BCD实际上就已经进入Win10了,bcd文件在\EFI\Microsoft\Boot\下面。

现在的想法是不进入 Windows Boot ,在BIOS的启动选择界面就直接可以开始确定引导。
所以创建了一个新的esp分区,用第二个esp分区独立引导Win10_B,
但是一个硬盘只能有一个efi flag,第二分区的esp bios是不识别的。失败。

那几个工具我都试过了,本质上依旧是修改BCD而已啊,自定义启动位置也而只是在读取了\EFI\Microsoft\Boot\bootmgfw.efi 确定有几个可启动项而已,然后根据BCD里写的windows/efi文件来启动对应系统。

现在就是在折腾怎么在主板的bios里直接看到双系统。
我以前是拆双硬盘装的,天生双efi分区。根据前面几楼的说法可能但硬盘的确没有办法,只能过Windows Boot。
回复

使用道具 举报

     
发表于 2021-9-18 09:08 | 显示全部楼层
本帖最后由 Damenly 于 2021-9-18 09:09 编辑
浅仓透透 发表于 2021-9-18 09:00
metro 菜单一句  bcdedit /set {bootmgr} displaybootmenu Yes  就可以关掉了。
进入Windows Boot 选当然 ...

“但是一个硬盘只能有一个efi flag,第二分区的esp bios是不识别的。失败。”
额。你都意识到这点了,为什么还再尝试bios界面。。试试grub啊。。搞两个指向不同路径的efi 然后分别创建menuentry
回复

使用道具 举报

     
 楼主| 发表于 2021-9-18 09:12 | 显示全部楼层
本帖最后由 浅仓透透 于 2021-9-18 09:24 编辑
Damenly 发表于 2021-9-18 09:08
“但是一个硬盘只能有一个efi flag,第二分区的esp bios是不识别的。失败。”
额。你都意识到这点了,为什 ...

就是想挑战一下微软的启动策略,看看有么有什么办法可以跳过去。
而且不是都说efi可以支持很多个系统嘛。。怎么到Win10这里反而自己又做了一层
回复

使用道具 举报

头像被屏蔽
发表于 2021-9-18 09:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-12 07:47 , Processed in 0.126792 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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