前置知识
一般来说,系统引导方式有 Legacy 引导和 UEFI 引导。其中 Legacy 引导方式较为古老,不在本篇文章的讨论范围内。
UEFI 引导中,可以有多个启动项,比如 Windows Boot Manager、Linux Boot Manager、Grub、网络启动、USB设备启动等。
而在诸如 Windows Boot Manager、Linux Boot Manager、Grub 这些启动项管理器中,也可以设置多个启动项。如果安装了多个 Windows 系统,Windows Boot Manager 中会显示多个 Windows 启动项;如果安装了 Linux 系统, Grub 中会显示 Linux 系统、Linux 系统(高级启动),以及可能会有 Windows Boot Manager 的启动项。
Windows 下使用脚本重启到其他系统
列出 EFI 启动项
1 |
bcdedit /enum ALL |
执行此命令,你会看到类似以下内容:
1 |
固件启动管理器 |
记住你需要重启到的、形如 {77a0d197-59c5-11ee-b0be-c8cb9e630a73}
的 UUID,就可以编写脚本了。
重启到指定 EFI 启动项
1 |
rem 使用管理员权限运行此脚本 |
推荐将脚本放在用户文件夹下,因为这是终端启动、SSH连接时的默认目录,输入文件名即可运行。
在 Linux 下重启到其他系统
列出启动项
1 |
efibootmgr |
执行此命令后,会得到如下所示的 EFI 启动项列表:
1 |
BootCurrent: 0005 |
重启到指定 EFI 启动项
1 |
sudo efibootmgr -n XXXX # 例如 0005 |
修改 Linux Boot Manager 的下一次启动项/默认启动项
仅适用于使用
systemd-boot
启动的系统,如果你在使用 Grub,请参阅其他教程。
1 |
bootctl list |
执行此命令后,可以列出如下所示的启动项列表:
1 |
type: Boot Loader Specification Type #1 (.conf) |
使用此命令可以修改 Linux Boot Manager 的下一次启动项,若想修改默认启动项,请使用 set-dafault
选项。
1 |
sudo bootctl set-oneshot [ID] |