除了 Arch Linux 之外,我最近还在家用 PC 上安装了 Windows 11,但我的妻子直到考试结束后才准备好切换,所以我们暂时保留 Windows 10,导致启动情况非常复杂:
- 启动时,如果未手动选择任何内容,systemd 启动管理器将等待 3 秒(默认为 Windows 10)。当选择 Arch Linux 时,一切都很好并且它将启动它,但是当选择 Windows 时:
- 它将启动 Windows 11,然后显示 Windows 启动管理器,它将显示 Windows 10 和 11,但不显示 Arch Linux(否则可以直接使用),并等待 30 秒,然后启动最后启动的任何内容。如果选择 Windows 11,它将启动它,但是如果选择 Windows 10:
- 它将再次重新启动,并再次显示 systemd 启动管理器。现在如果选择Windows 10,它终于会启动它。
我的目标是在我的 systemd 启动菜单中只包含以下 3 个条目,我怎样才能实现这一目标?
- 架构Linux
- Windows 10(默认)
- 视窗11
选择任一 Windows 选项都会直接启动。我环顾/boot/efi/Microsoft/Boot
文件夹,但唯一的.efi
文件是bootmgfw.efi
和bootmgr.efi
。
$ bootctl 列表
Boot Loader Entries:
title: Arch Linux
id: arch.conf
source: /boot/loader/entries/arch.conf
linux: /vmlinuz-linux-ck-skylake
initrd: /intel-ucode.img
/initramfs-linux-ck-skylake.img
options: root=/dev/nvme0n1p5 rw nvidia-drm.modeset=1 systemd.unified_cgroup_hierarchy=false
title: MemTest86
id: memtest86-efi.conf
source: /boot/loader/entries/memtest86-efi.conf
title: Windows 10 (default)
id: windows.conf
source: /boot/loader/entries/windows.conf
title: Windows Boot Manager
id: auto-windows
source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
title: Reboot Into Firmware Interface
id: auto-reboot-to-firmware-setup
source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
/boot/loader/loader.conf
timeout 3
console-mode max
default windows.conf
/boot/loader/entries/windows.conf
title Windows 10
efi /EFI/Microsoft/Boot/bootmgfw.efi
答案1
编辑:一个想法 - 隐藏 grub 并仅在按下特定键时激活它
我建议使用grub2
而不是systemd-boot
which 应该给你更多的选择。此解决方案不会显示“linux”启动管理器 ( grub2
),直到ESC按下F4或SHIFT按住(您必须尝试哪个适合您)。
在 处进行以下配置/etc/default/grub
:
GRUB_TIMEOUT=3
(选择默认选项之前的秒数)
GRUB_TIMEOUT_STYLE=hidden
'GRUB_TIMEOUT_STYLE'
如果此选项未设置或设置为“menu”,则 GRUB 将显示菜单,然后等待“GRUB_TIMEOUT”设置的超时到期,然后再启动默认条目。按某个键会中断超时。
如果此选项设置为“倒计时”或“隐藏”,则在显示菜单之前,GRUB 将等待“GRUB_TIMEOUT”设置的超时到期。如果在此期间按下ESC或F4,或者按住SHIFT,则会显示菜单并等待输入。如果按下与菜单项关联的热键,它将立即启动关联的菜单项。如果超时在这两种情况发生之前到期,它将启动默认条目。在“倒计时”情况下,它将显示一行剩余时间指示。
我发现有时您需要编辑
/etc/grub.d/30_os_prober
并更改选项quick_boot="1"
才能quick_boot="0"
使其正常工作。
最后你必须运行update-grub
来更新你的配置。