コマンドラインから特定のデバイスを再起動するにはどうすればよいですか?

コマンドラインから特定のデバイスを再起動するにはどうすればよいですか?

以下のディスクを持っています:

/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 はデフォルトで 2 番目の HDD で起動するように設定されており、Linux で起動します。

質問: Linux のコマンドラインから、Windows を再起動するにはどうすればいいですか/dev/sda2?(ブートローダは にあります/dev/sda1。より正確には にあります/EFI/Boot/bootx64.efi)

それなしF12コンピュータの起動時にブートメニューを起動するための操作などを行う必要があるそれなしGrub / ブート メニューでオプションを選択します。TL ;DR:単一のコマンド ライン コマンドで
再起動する方法はありますか?/dev/sda2

答え1

まず、sudo efibootmgr -v現在の UEFI ブート変数を表示するために実行します。ブート エントリの名前は、BootXXXXXXXX が 4 桁の数字 (16 進数の場合あり) になります。

2 番目の列に「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>

ここで、 は、 Windows ブート マネージャーが配置される12345678-90ab-cdef-0123-456789abcdefESP パーティションの PARTUUID になります。この場合、ディスクの PARTUUID になります。 を使用して、ディスク パーティションの PARTUUID を表示します。\EFI\Microsoft\Boot\bootmgfw.efi/dev/sda1lsblk -o +PARTUUID

Windows ブート エントリの XXXX 番号がわかったら、次のコマンドを実行できます。

sudo efibootmgr --bootnext XXXX

これにより、指定されたブート エントリ (つまり Windows) を使用してシステムが (1 回のみ) 起動するようになります。Windows にシャットダウンまたは再起動を指示すると、次回の起動時に Linux が自動的に再起動されます。

このsudo efibootmgr --bootnextコマンドを使用した後、システムは Windows を起動する準備が整い、通常のコマンドのいずれかを使用してシステムを再起動できます。

1 つのコマンドで実行したい場合は、簡単なスクリプトを作成できます。

#!/bin/sh
sudo efibootmgr --bootnext XXXX
sudo reboot

答え2

systemctl reboot --firmware-setup

これにより、BIOS セットアップ ユーティリティが再起動します。

関連情報