- デュアルブートしている状態だとWake-on-LANでPCを遠隔起動した場合はUEFIで設定されているOSが起動されてしまい任意のOSを起動できない。
- これはgrubなどで起動するOSを選択している場合でも変わらず、grubのデフォルトに設定されているOSが起動するだけで任意のOSを起動できない。
- しかしbcdeditで次回起動するOSを変更することができるのでこれを使用することでPCの前にいない状態であったとしても任意のOSを起動できる。
- 今回はWindowsとLinuxでデュアルブートした状態を例に紹介するがもちろんこれは3つ以上のOSであっても同様である。
#概要
- Wake-on-LANでWindowsを起動する
- teamviewerなどでWidows上で次回起動するOSをLinuxに変更するバッチファイルを実行し再起動する
- Linuxが起動する
#UEFIとgrubの設定
- UEFIのboot orderはWindows、Linux(grub)の順にする
- grubのデフォルトはLinuxにする
#バッチファイル
まず管理者権限で起動したコマンドプロンプトまたはパワーシェルで以下のコマンドを実行する
bcdedit /enum firmware
ここで起動したいLinuxのidentifierをコピーする
次にバッチファイルを作成する
Linux_boot.bat
@echo off
bcdedit /set {fwbootmgr} bootsequence {identifier}
shutdown /r /t 0
identifierには先ほどコピーしたものを入力する
あとはこのバッチファイルを管理者権限で実行すればLinuxが起動する
bootsequenceは次回起動するOSを指定するものなのでLinuxを起動した後に再起動したときには通常通りWindowsが起動する
管理者権限で実行するのを忘れるのを防ぐためにショートカットを作成しプロパティの詳細設定で管理者として実行にチェックを入れることをおすすめする
#シェルスクリプト
Linuxでも同様の機能をもったシェルスクリプトを作成できる
私は一度Windowsを起動すればLinuxを起動できるため必要を感じず試していないが紹介しておく
sudo efibootmgr
でエントリー番号を確認して
Windows_boot.sh
#!/bin/bash
efibootmgr --bootnext 0001 && systemctl reboot
0001のところには先ほど確認したLinuxのエントリー番号を入力する
こうすることでLinuxを再起動したときにもう一度Linuxを起動できる
#あとがき
- 今回はデフォルトでWindowsが起動する例で紹介したがもちろんLinuxが起動する場合でも同様にできる
- 記事を作成するにあたってこちらのブログを参考にさせて頂いた(というよりほとんどまるパクリになってしまった)https://ponu2.blogspot.com/2018/01/uefiwindowslinux.html