以下のディスクを持っています:
/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 ブート変数を表示するために実行します。ブート エントリの名前は、BootXXXX
XXXX が 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-456789abcdef
ESP パーティションの PARTUUID になります。この場合、ディスクの PARTUUID になります。 を使用して、ディスク パーティションの PARTUUID を表示します。\EFI\Microsoft\Boot\bootmgfw.efi
/dev/sda1
lsblk -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 セットアップ ユーティリティが再起動します。