如何更改 Arch Linux 中的默认操作系统(适用于 UEFI 和 systemd-boot)
该指令适用于所有实现引导加载程序规范和/或引导加载程序接口的引导加载程序,例如 systemd-boot。
如果您有一台现代计算机(在撰写本文时不超过七年),那么它很可能使用 UEFI 而不是 BIOS,因此使用 systemd-boot 进行引导,这通常被提及在 Arch Linux 安装说明中(虽然可能有 grub)。
bootctl 程序可以检查 EFI 固件和引导加载程序状态,列出和管理可用的引导加载程序和引导加载程序条目,以及在当前系统上安装、更新或删除 systemd-boot。
要检查您的系统是否使用 systemd-boot,请运行以下命令:
bootctl is-installed
以下命令将显示实现引导加载程序规范的所有可用加载程序条目,以及由实现引导加载程序接口的加载程序找到或自动生成的任何其他条目。
bootctl list

- title 是条目名称。请注意,带有字符串“(default)”的条目被选择为默认加载
- id是一个标识符,在下面描述的命令中需要它来改变默认加载的操作系统
- source 是操作系统中的路径
- linux 是 Linux 内核
- initrd 是初始 RAM 文件系统。 initramfs 的目的是将系统引导到可以访问根文件系统的位置。
- options 是启动选项
以下命令设置默认引导加载程序条目。它采用一串引导加载程序条目 ID 作为参数。
sudo bootctl set-default ID
set-oneshot 命令将只为下次启动设置默认条目,set-default 将为所有未来的启动永久设置它。
sudo bootctl set-oneshot ID
可选地,bootloader entry ID 可以是以下之一:@default、@oneshot 或 @current,对应当前默认的 bootloader entry对于所有未来的下载,下一次引导的当前默认引导加载程序条目,以及当前加载的引导加载程序条目。这些特殊标识符被转换为 EFI 变量 LoaderEntryDefault、LoaderEntryOneShot 和 LoaderEntrySelected 的当前值。这些特殊标识符主要用作将当前加载的引导加载程序条目永久设置为默认选择的快速方法,或将下次引导的默认引导加载程序条目更新为所有未来引导的默认引导加载程序条目,但它们可用于其他操作以及。如果将空字符串() 指定为标识符,则不会设置相应的 EFI 变量。
引导管理器集成了systemctl命令,所以可以使用如下命令:
systemctl reboot --boot-loader-entry=ID
此命令会将计算机重新引导至指定的引导加载程序条目。
顺便说一句,要获得仅包含引导加载程序条目的非常紧凑的列表,请运行以下命令:
systemctl reboot --boot-loader-entry=help

以下命令将立即重新载入 EFI 启动菜单。此菜单将有指定秒数的超时:
systemctl reboot --boot-loader-menu=SECONDS