LoginSignup
18
13

More than 3 years have passed since last update.

デュアルブートしたPCでデフォルトでないOSを遠隔起動する方法

Posted at
  • デュアルブートしている状態だとWake-on-LANでPCを遠隔起動した場合はUEFIで設定されているOSが起動されてしまい任意のOSを起動できない。
  • これはgrubなどで起動するOSを選択している場合でも変わらず、grubのデフォルトに設定されているOSが起動するだけで任意のOSを起動できない。
  • しかしbcdeditで次回起動するOSを変更することができるのでこれを使用することでPCの前にいない状態であったとしても任意のOSを起動できる。
  • 今回はWindowsとLinuxでデュアルブートした状態を例に紹介するがもちろんこれは3つ以上のOSであっても同様である。

概要

  1. Wake-on-LANでWindowsを起動する
  2. teamviewerなどでWidows上で次回起動するOSをLinuxに変更するバッチファイルを実行し再起動する
  3. 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
18
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
13