[備忘録] Ubuntu 20.04.3 LTS でリモートからブート対象OSを切り替える (grub-reboot)

スポンサーリンク

はじめに

こんにちは、ILab-01です。今回は自分のための備忘録です。

リモート環境にあるデスクトップパソコンに2つのOSがデュアルブートで入っていたとします。
例えば、デフォルトのOSがUbuntuで、もう1個のOSがwindowsだとします。

リモートでWindowsを起動したい場合、ブートローダーの初期設定をWindowsにしてもいいのですが、この方法だとWindowsを再起動した際にUbuntuに戻ってこれなくなってしまいます。

そこで、Ubuntuを再起動したときに、一時的にWindowsの指定が有効になり、さらに起動できたWindowsをもう一回再起動するとUbuntuに戻ってこれるような仕組みがないかを探しました。

それを実現するのがgrub-reboot (またはgrub2-reboot) です。

設定方法

以下を実行します。

$ sudo emacs /etc/default/grub  # grubの設定を変更
→ GRUB_DEFAULT=0 となっているところを GRUB_DEFAULT=saved に変更する
$ sudo update-grub  # grubの設定の変更を反映する

# 起動可能なOSのIDと名称を確認する。以下のコマンドで抽出すると便利
# 結果の表示形式= OSのID: OS名 -> OSを指す文字列
$ awk -F\' '$1=="menuentry " {print i++ " : " $2 " -> " $4}' /boot/grub/grub.cfg 
0 : Ubuntu -> gnulinux-simple-XXXXXX
1 : Windows Boot Manager (on /dev/XXX) -> osprober-efi-XXXXX
2 : UEFI Firmware Settings -> uefi-firmware

# 起動したいOSの指定方法を確認する (IDで指定するのか、OSを指す文字列を指定するのか)
$ sudo grub-editenv list
next_entry=
saved_entry=gnulinux-XXXXX
# ここでは、saved_entryにOSを指す文字列が指定されているため、
# この環境では起動したいOSを「OSを指す文字列」によって指定することがわかる。
# (環境によってはOSのIDを指定することもある。どちらかというとIDを指定することの方が多い)

# 2つ目のOS (Windows) を起動する
$ sudo grub-reboot osprober-efi-XXXXX
$ sudo reboot  # または別の方法でのPCの再起動

# Windowsが起動する。さらに再起動するとUbuntuに戻る。

コメント

タイトルとURLをコピーしました