我有以下磁碟:
/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 設定公用程式。