如何從命令列重新啟動特定設備?

如何從命令列重新啟動特定設備?

我有以下磁碟:

/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 設定公用程式。

相關內容