UEFIのブートオーダーを一時的に変更する
UEFIにはブートマネージャー機能が内臓されている。
UEFI環境ではまず、UEFIのブートマネージャーがOSのブートマネージャーを起動し、OSを起動させている。
UEFIのブートマネージャには、次回起動時のブートオーダーを指定できるBootNextという機能がある。
Windows起動中、別のシステムで再起動したい場合、
設定→更新とセキュリティ→回復→PCの起動をカスタマイズ から起動したいシステムを指定して再起動することができる。
Windowsを優先的に起動する設定にしており、Linuxを起動したいときにこの段階を踏むのがめんどくさいので、バッチファイルを作ってみる。
Windowsのブートローダーを管理するBCDEditでUEFIもいじれるらしい。
まず、BCDEditでUEFIのブートエントリを表示してみる。コマンドプロンプトを管理者権限で起動し、以下のコマンドを入力。
ここで表示されているidentifierが重要になる。
UEFIのブートローダーが、{fwbootmgr}
現在起動しているWindowsのブートローダーが、{bootmgr}
Ubuntuのブートローダーが、{f745f75a-0195-11e8-84b8-806e6f6e6963}
となっている。
{fwbootmgr}に対して、bootsequenceオプションとidentifierを入力することで、BootNextを設定できる。次回起動時にUbuntuを起動したいなら、以下のように入力する。
以下のように、「ファームウェアのブート マネージャー」にbootsequenceの値が追加されていれば成功。
この状態で再起動するとUbuntuが起動する。
以上のコマンドを実行するバッチファイルを作れば、楽にシステムを行き来できる。
Linuxでも同様に設定が可能。
ブートエントリを表示
BootNextを設定
BootNextの値が設定されていれば成功。
シェルスクリプトを作る
UEFI環境ではまず、UEFIのブートマネージャーがOSのブートマネージャーを起動し、OSを起動させている。
UEFIのブートマネージャには、次回起動時のブートオーダーを指定できるBootNextという機能がある。
Windows起動中、別のシステムで再起動したい場合、
設定→更新とセキュリティ→回復→PCの起動をカスタマイズ から起動したいシステムを指定して再起動することができる。
Windowsを優先的に起動する設定にしており、Linuxを起動したいときにこの段階を踏むのがめんどくさいので、バッチファイルを作ってみる。
Windowsのブートローダーを管理するBCDEditでUEFIもいじれるらしい。
まず、BCDEditでUEFIのブートエントリを表示してみる。コマンドプロンプトを管理者権限で起動し、以下のコマンドを入力。
>bcdedit /enum firmware
ファームウェアのブート マネージャー
--------------------------------
identifier {fwbootmgr}
displayorder {bootmgr}
{f745f75a-0195-11e8-84b8-806e6f6e6963}
{32a8102e-da80-11e7-8406-ce8e5306cb4c}
{f745f759-0195-11e8-84b8-806e6f6e6963}
timeout 1
Windows ブート マネージャー
--------------------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
path \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description Windows Boot Manager
locale ja-JP
inherit {globalsettings}
default {current}
resumeobject {32a81030-da80-11e7-8406-ce8e5306cb4c}
displayorder {current}
bootsequence {f745f75a-0195-11e8-84b8-806e6f6e6963}
toolsdisplayorder {memdiag}
timeout 30
...
ファームウェア アプリケーション (101fffff
--------------------------------
identifier {f745f75a-0195-11e8-84b8-806e6f6e6963}
device partition=\Device\HarddiskVolume2
pathsp \EFI\UBUNTU\GRUBX64.EFI
description ubuntu
ここで表示されているidentifierが重要になる。
UEFIのブートローダーが、{fwbootmgr}
現在起動しているWindowsのブートローダーが、{bootmgr}
Ubuntuのブートローダーが、{f745f75a-0195-11e8-84b8-806e6f6e6963}
となっている。
{fwbootmgr}に対して、bootsequenceオプションとidentifierを入力することで、BootNextを設定できる。次回起動時にUbuntuを起動したいなら、以下のように入力する。
>bcdedit /set{fwbootmgr} bootsequence {f745f75a-0195-11e8-84b8-806e6f6e6963}
以下のように、「ファームウェアのブート マネージャー」にbootsequenceの値が追加されていれば成功。
>bcdedit /enum firmware
ファームウェアのブート マネージャー
--------------------------------
identifie {fwbootmgr}
displayorder {bootmgr}
{f745f75a-0195-11e8-84b8-806e6f6e6963}
{32a8102e-da80-11e7-8406-ce8e5306cb4c}
{f745f759-0195-11e8-84b8-806e6f6e6963}
bootsequence {f745f75a-0195-11e8-84b8-806e6f6e6963}
timeout 1
この状態で再起動するとUbuntuが起動する。
>shutdown /r /t 0
以上のコマンドを実行するバッチファイルを作れば、楽にシステムを行き来できる。
reboot_ubuntu.bat
echo off
bcdedit /set{fwbootmgr} bootsequence {f745f75a-0195-11e8-84b8-806e6f6e6963} && shutdown /r /t 0
Linuxでも同様に設定が可能。
ブートエントリを表示
$ sudo efibootmgr
BootCurrent: 000C
Timeout: 1 seconds
BootOrder: 0000,0001,0004
Boot0000* Windows Boot Manager
Boot0001* ubuntu
Boot0004* UEFI: Built-in EFI Shell
BootNextを設定
$ sudo efibootmgr --bootnext 0001
BootNextの値が設定されていれば成功。
$ sudo efibootmgr BootNext: 0001 BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0000,0001,0004 Boot0000* Windows Boot Manager Boot0001* ubuntu Boot0004* UEFI: Built-in EFI Shell
シェルスクリプトを作る
reboot_ubuntu.sh #!/bin/bash efibootmgr --bootnext 0001 && systemctl reboot
コメント
コメントを投稿