起動中OSにて次に起動するディスク(OS)を選択したい
所持する自作PCに、Windows11ディスクとUbuntuディスクとが存在している。電源起動直後のUEFIにて起動ディスクOS)を選択せず、起動中OSにて、次に起動するディスクを選択する方法を記載。ChatGPTに問い合わせた結果をまとめたのみ。
背景
対象となる自作PCにはリモートアクセスすることが多く、状況により、Windows11かUbuntuかを使い分けたいことがある。電源起動直後のUEFIメニューにはリモートではアクセスできないため、本方法が有効となる。
準備(というか不具合解消)
Windowsの管理者コマンドプロンプトにて、”bcdedit /enum firmware”を実行すると、起動ディスクの状況が見えるとのこと。
>bcdedit /enum firmware
ブート構成のデータ ストアを開けませんでした。 指定されたファイルが見つかりません。
>bcdedit
ブート構成のデータ ストアを開けませんでした。 指定されたファイルが見つかりません。
現在のEFIパーティション上にBCDが存在していないらしい。修復を行う。まず、EFIを”S:”にマウント。
>mountvol S: /S
次に、Windowsのブートファイルを再生成する。
>bcdboot C:\Windows /s S: /f UEFI
ブート ファイルは正常に作成されました。
本番
Windowsにて
”bcdedit /enum firmware”を実行。
>bcdedit /enum firmware
ファームウェアのブート マネージャー
--------------------------------
identifier {fwbootmgr}
displayorder {9398da72-0e69-11f1-8075-806e6f6e6963}
{bootmgr}
{95c2ca56-0eb3-11f1-8074-701ab8e5e416}
{95c2ca59-0eb3-11f1-8074-701ab8e5e416}
{95c2ca58-0eb3-11f1-8074-701ab8e5e416}
{95c2ca57-0eb3-11f1-8074-701ab8e5e416}
timeout 1
Windows ブート マネージャー
--------------------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume3
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale en-us
inherit {globalsettings}
default {default}
resumeobject {95c2ca54-0eb3-11f1-8074-701ab8e5e416}
displayorder {default}
toolsdisplayorder {memdiag}
timeout 30
ファームウェア アプリケーション (101fffff
--------------------------------
identifier {9398da72-0e69-11f1-8075-806e6f6e6963}
device partition=D:
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
ファームウェア アプリケーション (101fffff
--------------------------------
identifier {95c2ca56-0eb3-11f1-8074-701ab8e5e416}
device partition=\Device\HarddiskVolume3
path \EFI\ubuntu\shimx64.efi
description ubuntu
...
”identifier”がポイント。
次にUbuntuで起動するには
Ubuntuのidentifierを用いて、下記を実行。
>bcdedit /set {fwbootmgr} bootsequence {95c2ca56-0eb3-11f1-8074-701ab8e5e416}
上記コマンドは、BootNext(bootsequence)という恒久的な設定ではないらしい。次の起動はUbuntuであるが、その次の移動はWindowsとなる。
ショートカットがベターと言われたので、作成する。
cmd /c bcdedit /set {fwbootmgr} bootsequence {95c2ca56-0eb3-11f1-8074-701ab8e5e416} && shutdown /r /t 0
恒久的(永続的)な設定
displayorder+addfirstにidentiferを指定することにより実施。
>bcdedit /set {fwbootmgr} displayorder {95c2ca56-0eb3-11f1-8074-701ab8e5e416} /addfirst
この操作を正しく終了しました。
Ubuntuにて
コマンド”efibootmgr”を使う。
次にWindowsで起動するには
$ sudo efibootmgr
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0005,0004,0002,0001,0000,0003
Boot0000* ipfire
Boot0001* Fedora
Boot0002* ubuntu
Boot0003 FreeBSD
Boot0004* Windows Boot Manager
Boot0005* Windows Boot Manager
現在は”0002”(ubuntu)で起動している。BootOrderの順番で起動する。この状態であれば、次は”0005”(Windows)から起動。
本題とは関係ないが、”-B”オプションにより、0000、0001、0003を削除(過去の別ディスクへのインストールの残骸)。
$ sudo efibootmgr -b 0000 -B
...
$ sudo efibootmgr -b 0001 -B
...
$ sudo efibootmgr -b 0003 -B
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0005,0004,0002
Boot0002* ubuntu
Boot0004* Windows Boot Manager
Boot0005* Windows Boot Manager
このままだと、次はWindowsで起動してしまうため、”-n”オプションにより、次の起動(BootNext)をubuntuに変更。
$ sudo efibootmgr -n 0002
BootNext: 0002
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0005,0004,0002
Boot0002* ubuntu
Boot0004* Windows Boot Manager
Boot0005* Windows Boot Manager
”BootNext”に見えるように、次もubuntu(0002)で起動する。ただし、BootOrderが変更されていないので、その次の次はWindowsで起動する。
恒久的(永続的)な設定
現在の状況。
$ sudo efibootmgr
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0005,0004,0002
Boot0002* ubuntu
Boot0004* Windows Boot Manager
Boot0005* Windows Boot Manager
”-o”オプションにより、BootOrderの変更。
$ sudo efibootmgr -o 0002,0005,0004
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002,0005,0004
Boot0002* ubuntu
Boot0004* Windows Boot Manager
Boot0005* Windows Boot Manager
これにより、ubuntu(0002)からの起動が恒久化される。
EOF