我有以下磁盘:
/dev/sda
/dev/sda1 EFI partition
/dev/sda2 Windows
/dev/sdb
/dev/sdb1 EFI partition
/dev/sdb2 Linux <-- currently mounted as /
并且我目前正在使用 Linux,因此/dev/sdb2
当前已安装为/
。
我的 BIOS 设置为默认在第二个 HDD 上启动,从而在 Linux 上启动。
问题:从 Linux 命令行,如何重新启动到 Windows,即/dev/sda2
?(引导加载程序位于 中/dev/sda1
,更准确地说位于 中/EFI/Boot/bootx64.efi
)
没有必须执行诸如F12在计算机启动时触发启动菜单之类的操作,以及没有在 Grub/启动菜单中选择一个选项。
TL;DR:有没有办法/dev/sda2
使用单个命令行命令重新启动?
答案1
首先,运行sudo efibootmgr -v
以显示当前的 UEFI 启动变量。引导条目的命名方式BootXXXX
为 XXXX=四位数字(可能是十六进制)。
如果有一个启动项的第二列显示“Windows Boot Manager”,那么它就是 Windows 的启动项。它应该类似于:
BootXXXX* Windows Boot Manager HD(2,GPT,12345678-90ab-cdef-0123-456789abcdef,0x109000,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{ <UTF-16 representation of an UUID here>
此处,12345678-90ab-cdef-0123-456789abcdef
将是 Windows 启动管理器所在的 ESP 分区的 PARTUUID \EFI\Microsoft\Boot\bootmgfw.efi
。对于您的情况,它应该是您磁盘的 PARTUUID /dev/sda1
。用于lsblk -o +PARTUUID
查看磁盘分区的 PARTUUID。
一旦您知道 Windows 启动项的 XXXX 编号,您就可以运行:
sudo efibootmgr --bootnext XXXX
这应该使系统使用指定的启动项启动(仅一次),即Windows。一旦您告诉 Windows 关闭或重新启动,下次启动时应该会自动再次启动 Linux。
使用该sudo efibootmgr --bootnext
命令后,系统准备启动进入 Windows,您可以使用任何常规命令来重新启动系统。
如果您想使用单个命令来完成此操作,您可以编写一个简单的脚本:
#!/bin/sh
sudo efibootmgr --bootnext XXXX
sudo reboot
答案2
systemctl reboot --firmware-setup
这将重新启动进入 BIOS 设置实用程序。