前置知识 一般来说,系统引导方式有 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 固件启动管理器 --------------------- 标识符 {fwbootmgr} displayorder {bootmgr} {77a0d197-59c5-11ee-b0be-c8cb9e630a73} {9dda157b-7ef3-11ee-b143-806e6f6e6963} {f0506e71-9c73-11ed-adf2-806e6f6e6963} Windows 启动管理器 -------------------- 标识符 {bootmgr} device partition=\Device\HarddiskVolume1 path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager 固件应用程序(101fffff) ------------------------------- 标识符 {77a0d197-59c5-11ee-b0be-c8cb9e630a73} device partition=\Device\HarddiskVolume1 path \EFI\systemd\systemd-bootx64.efi description Linux Boot Manager 固件应用程序(101fffff) ------------------------------- 标识符 {9dda157b-7ef3-11ee-b143-806e6f6e6963} device partition=\Device\HarddiskVolume6 path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager 固件应用程序(101fffff) ------------------------------- 标识符 {f0506e71-9c73-11ed-adf2-806e6f6e6963} description EFI USB Device Windows 启动加载器 ------------------- 标识符 {current} device partition=C: path \WINDOWS\system32\winload.efi description Windows 11 ……
记住你需要重启到的、形如 {77a0d197-59c5-11ee-b0be-c8cb9e630a73}
的 UUID,就可以编写脚本了。
重启到指定 EFI 启动项 reboot-to-xxxxx.bat 1 2 3 4 5 6 rem 使用管理员权限运行此脚本 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd","/c %~s0 ::","","runas",1)(window.close) && exit rem 将 Linux Boot Manager 设置为下次启动项 bcdedit /set "{fwbootmgr}" bootsequence "{77a0d197-59c5-11ee-b0be-c8cb9e630a73}" /addfirst rem 重启 shutdown -r -t 0
推荐将脚本放在用户文件夹下,因为这是终端启动、SSH连接时的默认目录,输入文件名即可运行。
在 Linux 下重启到其他系统 列出启动项
执行此命令后,会得到如下所示的 EFI 启动项列表:
1 2 3 4 5 6 BootCurrent: 0005 BootOrder: 0001,0005,0004,2001 Boot0001* Windows Boot Manager HD(1,GPT,04f43acd-5a75-4946-b8eb-8c2b4aa000c3,0x800,0x100000)/\EFI\Microsoft\Boot\bootmgfw.efi Boot0004* Windows Boot Manager HD(1,GPT,3f296803-1e98-4d7f-b76b-263785c2dcef,0x28,0x100000)/\EFI\Microsoft\Boot\bootmgfw.efi Boot0005* Linux Boot Manager HD(1,GPT,04f43acd-5a75-4946-b8eb-8c2b4aa000c3,0x800,0x100000)/\EFI\systemd\systemd-bootx64.efi Boot2001* EFI USB Device RC
重启到指定 EFI 启动项
修改 Linux Boot Manager 的下一次启动项/默认启动项
仅适用于使用 systemd-boot
启动的系统,如果你在使用 Grub,请参阅其他教程。
执行此命令后,可以列出如下所示的启动项列表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 type: Boot Loader Specification Type #1 (.conf) title: Arch Linux (default) (selected) id: 10-arch.conf source: /boot//loader/entries/10-arch.conf linux: /boot//vmlinuz-linux initrd: /boot//amd-ucode.img /boot//initramfs-linux.img options: root=PARTUUID=7227604a-aca1-034d-9bd3-e17d53548a62 rw rootfstype=btrfs type: Automatic title: Windows Boot Manager id: auto-windows source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f type: Automatic title: Reboot Into Firmware Interface id: auto-reboot-to-firmware-setup source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
使用此命令可以修改 Linux Boot Manager 的下一次启动项,若想修改默认启动项,请使用 set-dafault
选项。
1 sudo bootctl set-oneshot [ID]