您尚未登录。

#16 2020-05-12 17:17:01

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,463
个人网站

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

我看到你更新了 fdisk -l 的信息。你怎么有两个 EFI 分区……虽然理论上 BIOS 应当不会出问题,但是这样有可能迷惑 os-prober,也许因此它没法给你生成正确的菜单。

不过即使 os-prober 没有发现另一个 EFI 分区,它还是会生成引导菜单的啊。除非你暗地里改了什么东西。

离线

#17 2020-05-12 17:27:21

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

依云 说:

我看到你更新了 fdisk -l 的信息。你怎么有两个 EFI 分区……虽然理论上 BIOS 应当不会出问题,但是这样有可能迷惑 os-prober,也许因此它没法给你生成正确的菜单。

不过即使 os-prober 没有发现另一个 EFI 分区,它还是会生成引导菜单的啊。除非你暗地里改了什么东西。

取决于固件是否 功能~强大!
知乎上看到有人实现了自己修改固件插入NTFS驱动从而抛弃ESP,理论上如果固件能识别1000种文件系统那么ESP这个概念是没有意义的,Boot Entry可以随便指定某分区的某文件(我们需要一个嵌入UEFI的grub)


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#18 2020-05-12 17:39:22

beginner
会员
注册时间: 2019-10-07
帖子: 256

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

依云 说:

我看到你更新了 fdisk -l 的信息。你怎么有两个 EFI 分区……虽然理论上 BIOS 应当不会出问题,但是这样有可能迷惑 os-prober,也许因此它没法给你生成正确的菜单。

不过即使 os-prober 没有发现另一个 EFI 分区,它还是会生成引导菜单的啊。除非你暗地里改了什么东西。

一个window的efi,一个grub的efi分区
我也不知道我暗地里改了什么,反正我在安装完系统后就没有编辑过任何文件(安装时编辑的也是wiki说的文件,需要我把安装过程贴出来吗),连用户都没有添加。
唯一编辑过的就是/etc/default/grub,这个你应该知道的,而且那个文件现在还没改回来,最后依然有那2个变量
安装完os-orober还需要什么操作吗?我是直接执行grub-mkconfig -o /etc/grub/grub.cfggrub-mkconfig -o /boot/grub/grub.cfg,也没有提示错误信息,因为还是可以进入linux(当时粗略的看了一眼,抱歉,不知道重要不)
window方面也只是用它的安装程序一路点击安装的。

最近编辑记录 beginner (2020-05-13 12:07:24)

离线

#19 2020-05-12 17:47:46

beginner
会员
注册时间: 2019-10-07
帖子: 256

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

依云 说:
beginner 说:

我就是因为不喜欢每次都这样才来问的。我看别人不知道怎么做的,可以直接在电脑启动的时候选择其他操作系统,而不需要进入bios设置

boot menu 就是在电脑启动的时候选择要进哪个系统啊。谁让你进 BIOS 设置了?

我的设备上也可以把 boot menu 设置为默认启动项,这样我不需要按键也能进入了。从你给出的 efibootmgr 输出来看,应该你是没给完整,所以我不知道……

给完整了...可能我的efibootmgr有什么问题,知识储备量少

离线

#20 2020-05-12 17:52:28

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

如果你的固件做不到依云那种每次自动显示boot menu那就用grub吧,让固件固定启动grub,然后设置grub menu的timeout,当然由于你的分区比较迷幻,你可能需要自己书写grub.cfg


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#21 2020-05-12 18:18:27

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

beginner 说:
xtricman 说:

如果你的固件做不到依云那种每次自动显示boot menu那就用grub吧,让固件固定启动grub,然后设置grub menu的timeout,当然由于你的分区比较迷幻,你可能需要自己书写grub.cfg

分区比较迷幻?指什么?2个efi分区吗?因为我不知道怎么合并2个efi分区,只能这么分了

efibootmgr -v查一下,你的grub项是指哪个文件


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#22 2020-05-12 19:07:52

beginner
会员
注册时间: 2019-10-07
帖子: 256

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

问题所在:让grub创建启动菜单。
看了grub的wiki后发现以下信息

探测其他操作系统
想要让 grub-mkconfig 探测其他已经安装的系统并自动把他们添加到启动菜单中,安装 软件包 os-prober 并 挂载 包含其它系统的磁盘分区。然后重新运行 grub-mkconfig。 
MS Windows
os-prober 通常能自动发现包含 Windows 的分区。当然在载入默认的 Linux 驱动的情况下,NTFS 分区也不是总能够被探测到。如果 GRUB 没能发现它,尝试安装 ntfs-3g,然后重新挂载这个分区再试一次。 
加密的 Windows 分区需要在解密之后才能挂载。对于 BitLocker,可以使用 dislockerAUR。这足够 os-prober 来添加正确的启动条目了。 

但我不明白,挂载包含其他系统的磁盘分区,是挂载到哪里?
我安装了ntfs-3g了。


另外,以下是efibootmgr -v的输出

BootCurrent: 0002
Timeout: 2 seconds
BootOrder: 0002,0000,0001
Boot0000* Windows Boot Manager
Boot0001* UEFI: SysRecover Card
Boot0002* grub
BootCurrent: 0002
Timeout: 2 seconds
BootOrder: 0000,0002,0001
Boot0000* Windows Boot Manager	HD(2,GPT,44d1ee98-a716-4620-9e8d-d8485216eadd,0x109000,0x32000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...M................
Boot0001* UEFI: SysRecover Card	PciRoot(0x0)/Pci(0x1f,0x4)..BO
Boot0002* grub	HD(7,GPT,78568246-6364-0541-83e4-ba30fc40028c,0x1d9f3000,0x96000)/File(\EFI\grub\grubx64.efi)

最近编辑记录 beginner (2020-05-12 19:34:59)

离线

#23 2020-05-12 20:01:19

jy6c9w08
会员
注册时间: 2020-04-10
帖子: 26

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

beginner 说:

问题所在:让grub创建启动菜单。
看了grub的wiki后发现以下信息

探测其他操作系统
想要让 grub-mkconfig 探测其他已经安装的系统并自动把他们添加到启动菜单中,安装 软件包 os-prober 并 挂载 包含其它系统的磁盘分区。然后重新运行 grub-mkconfig。 
MS Windows
os-prober 通常能自动发现包含 Windows 的分区。当然在载入默认的 Linux 驱动的情况下,NTFS 分区也不是总能够被探测到。如果 GRUB 没能发现它,尝试安装 ntfs-3g,然后重新挂载这个分区再试一次。 
加密的 Windows 分区需要在解密之后才能挂载。对于 BitLocker,可以使用 dislockerAUR。这足够 os-prober 来添加正确的启动条目了。 

但我不明白,挂载包含其他系统的磁盘分区,是挂载到哪里?
我安装了ntfs-3g了。


另外,以下是efibootmgr -v的输出

BootCurrent: 0002
Timeout: 2 seconds
BootOrder: 0002,0000,0001
Boot0000* Windows Boot Manager
Boot0001* UEFI: SysRecover Card
Boot0002* grub
BootCurrent: 0002
Timeout: 2 seconds
BootOrder: 0000,0002,0001
Boot0000* Windows Boot Manager	HD(2,GPT,44d1ee98-a716-4620-9e8d-d8485216eadd,0x109000,0x32000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...M................
Boot0001* UEFI: SysRecover Card	PciRoot(0x0)/Pci(0x1f,0x4)..BO
Boot0002* grub	HD(7,GPT,78568246-6364-0541-83e4-ba30fc40028c,0x1d9f3000,0x96000)/File(\EFI\grub\grubx64.efi)

你可以将你的windows系统分区挂载到你想挂载的位置,我这里默认挂载的位置是/run/media/用户名/系统生成的文件夹,另外如果grub能够探测到windows,grub更新输出的信息一般包含Windows的boot

离线

#24 2020-05-12 20:04:02

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,463
个人网站

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

好吧,看起来你的固件就没有 boot menu……那你只能用 grub 的选单了。

大概是你设置了 GRUB_DEFAULT 所以菜单就不显示了?要不你把你生成的 grub.cfg 发一下吧。

离线

#25 2020-05-12 22:23:30

beginner
会员
注册时间: 2019-10-07
帖子: 256

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

jy6c9w08 说:
beginner 说:

问题所在:让grub创建启动菜单。
看了grub的wiki后发现以下信息

探测其他操作系统
想要让 grub-mkconfig 探测其他已经安装的系统并自动把他们添加到启动菜单中,安装 软件包 os-prober 并 挂载 包含其它系统的磁盘分区。然后重新运行 grub-mkconfig。 
MS Windows
os-prober 通常能自动发现包含 Windows 的分区。当然在载入默认的 Linux 驱动的情况下,NTFS 分区也不是总能够被探测到。如果 GRUB 没能发现它,尝试安装 ntfs-3g,然后重新挂载这个分区再试一次。 
加密的 Windows 分区需要在解密之后才能挂载。对于 BitLocker,可以使用 dislockerAUR。这足够 os-prober 来添加正确的启动条目了。 

但我不明白,挂载包含其他系统的磁盘分区,是挂载到哪里?
我安装了ntfs-3g了。


另外,以下是efibootmgr -v的输出

BootCurrent: 0002
Timeout: 2 seconds
BootOrder: 0002,0000,0001
Boot0000* Windows Boot Manager
Boot0001* UEFI: SysRecover Card
Boot0002* grub
BootCurrent: 0002
Timeout: 2 seconds
BootOrder: 0000,0002,0001
Boot0000* Windows Boot Manager	HD(2,GPT,44d1ee98-a716-4620-9e8d-d8485216eadd,0x109000,0x32000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...M................
Boot0001* UEFI: SysRecover Card	PciRoot(0x0)/Pci(0x1f,0x4)..BO
Boot0002* grub	HD(7,GPT,78568246-6364-0541-83e4-ba30fc40028c,0x1d9f3000,0x96000)/File(\EFI\grub\grubx64.efi)

你可以将你的windows系统分区挂载到你想挂载的位置,我这里默认挂载的位置是/run/media/用户名/系统生成的文件夹,另外如果grub能够探测到windows,grub更新输出的信息一般包含Windows的boot

我挂载了系统分区后,执行了grub-mkconfig后输出如下,不过还没有尝试是否可行,怕信息丢失,先放这里:

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
Found Windows Boot Manager on /dev/sda2@/efi/Microsoft/Boot/bootmgfw.efi
done

离线

#26 2020-05-12 22:28:12

beginner
会员
注册时间: 2019-10-07
帖子: 256

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

依云 说:

好吧,看起来你的固件就没有 boot menu……那你只能用 grub 的选单了。

大概是你设置了 GRUB_DEFAULT 所以菜单就不显示了?要不你把你生成的 grub.cfg 发一下吧。

多谢,问题解决了,我按照wiki的提示挂载并执行grub-mkconfig后,把grub的启动项设置在最前面。
这样就已经可以选择进入哪个系统了

离线

#27 2020-05-12 22:28:27

beginner
会员
注册时间: 2019-10-07
帖子: 256

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

jy6c9w08 说:
beginner 说:

问题所在:让grub创建启动菜单。
看了grub的wiki后发现以下信息

探测其他操作系统
想要让 grub-mkconfig 探测其他已经安装的系统并自动把他们添加到启动菜单中,安装 软件包 os-prober 并 挂载 包含其它系统的磁盘分区。然后重新运行 grub-mkconfig。 
MS Windows
os-prober 通常能自动发现包含 Windows 的分区。当然在载入默认的 Linux 驱动的情况下,NTFS 分区也不是总能够被探测到。如果 GRUB 没能发现它,尝试安装 ntfs-3g,然后重新挂载这个分区再试一次。 
加密的 Windows 分区需要在解密之后才能挂载。对于 BitLocker,可以使用 dislockerAUR。这足够 os-prober 来添加正确的启动条目了。 

但我不明白,挂载包含其他系统的磁盘分区,是挂载到哪里?
我安装了ntfs-3g了。


另外,以下是efibootmgr -v的输出

BootCurrent: 0002
Timeout: 2 seconds
BootOrder: 0002,0000,0001
Boot0000* Windows Boot Manager
Boot0001* UEFI: SysRecover Card
Boot0002* grub
BootCurrent: 0002
Timeout: 2 seconds
BootOrder: 0000,0002,0001
Boot0000* Windows Boot Manager	HD(2,GPT,44d1ee98-a716-4620-9e8d-d8485216eadd,0x109000,0x32000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...M................
Boot0001* UEFI: SysRecover Card	PciRoot(0x0)/Pci(0x1f,0x4)..BO
Boot0002* grub	HD(7,GPT,78568246-6364-0541-83e4-ba30fc40028c,0x1d9f3000,0x96000)/File(\EFI\grub\grubx64.efi)

你可以将你的windows系统分区挂载到你想挂载的位置,我这里默认挂载的位置是/run/media/用户名/系统生成的文件夹,另外如果grub能够探测到windows,grub更新输出的信息一般包含Windows的boot

多谢,问题解决了,挂载了分区后,执行grub-mkconfig,再把grub的启动项设置在最前面。
这样就已经可以选择进入哪个系统了
我之前想多了,以为必须挂载到指定的位置。
虽然我没有证实是否真的可以挂载到任何位置。
但我挂载的位置确实可以让grub识别

最近编辑记录 beginner (2020-05-12 22:37:05)

离线

#28 2020-05-12 22:31:24

beginner
会员
注册时间: 2019-10-07
帖子: 256

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

依云 说:

好吧,看起来你的固件就没有 boot menu……那你只能用 grub 的选单了。

大概是你设置了 GRUB_DEFAULT 所以菜单就不显示了?要不你把你生成的 grub.cfg 发一下吧。

请问,你是怎么看出来我的固件没有boot menu的

最近编辑记录 beginner (2020-05-12 22:32:19)

离线

#29 2020-05-12 23:09:05

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,463
个人网站

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

beginner 说:
依云 说:

好吧,看起来你的固件就没有 boot menu……那你只能用 grub 的选单了。

大概是你设置了 GRUB_DEFAULT 所以菜单就不显示了?要不你把你生成的 grub.cfg 发一下吧。

请问,你是怎么看出来我的固件没有boot menu的

猜的。因为我这里是这样:

BootCurrent: 0001
Timeout: 2 seconds
BootOrder: 0001,0000,001D,0017,0018,0019,001A,001B,001C,001E
Boot0000* Windows Boot Manager
Boot0001* arch
Boot0010  Setup
Boot0011  Boot Menu
Boot0012  Diagnostic Splash Screen
Boot0013  Lenovo Diagnostics
Boot0014  Startup Interrupt Menu
Boot0015  Rescue and Recovery
Boot0016  MEBx Hot Key
Boot0017* USB CD
Boot0018* USB FDD
Boot0019* NVMe0
Boot001A* NVMe1
Boot001B* ATA HDD1
Boot001C* ATA HDD0
Boot001D* USB HDD
Boot001E* PCI LAN
Boot001F* IDER BOOT CDROM
Boot0020* IDER BOOT Floppy
Boot0021* ATA HDD
Boot0022* ATAPI CD

Boot Menu 就是选启动项的,Setup 那个是 BIOS 设置。那些个设备名是直接从设备上找东西启动。

离线

#30 2020-05-13 00:09:22

anlao
会员
注册时间: 2016-08-24
帖子: 7

Re: [已解决]双系统如何做到能在电脑启动的时候选择进入哪个系统?

beginner 说:

安装完os-orober还需要什么操作吗?我是直接执行grub-mkconfig -o /etc/grub/grub.cfg,也没有提示错误信息,因为还是可以进入linux(当时粗略的看了一眼,抱歉,不知道重要不)

生成的配置地方不对,不是/etc/grub/grub.cfg,而是/boot/grub/grub.cfg

grub-mkconfig -o /boot/grub/grub.cfg

离线

页脚