Ubuntu 16.04 LTS & Windows10デュアルブートでのOS切り替え

やりたいこと

デュアルブート(Ubuntu 16.04 LTSとWindows10)のOSをリモート接続している状態で切り替えたい.

仮定

  • Ubuntu 16.04 LTSとWindows10でデュアルブートを構築
  • ブートローダはgrubを利用

Ubuntu16.04 LST → Windows10

grub-rebootコマンドを使う.

sudo grub-reboot [num]
sudo shutdown -r now

[num]は/boot/grub/grub.cfgのエントリー番号. 対象がsubmenuの中に存在する場合は

sudo grub-reboot '[num:submenu]>[num:menu]'

のようにsubmenuを指定する番号とその内部でカーネルを指定するエントリー番号を>で繋いで入力する.

エントリー番号の確認

カーネルを更新するとエントリーが増えていくため,起動したいOSのエントリー番号が変わることがある(最近のUbuntuではsubmenu以下に古いカーネルが追加されるため,エントリー番号は通常変化しない). 以下のコマンドを使い,エントリー番号を確認すると良い.

grep -e "menuentry " -e "^submenu" /boot/grub/grub.cfg|sed "s|\$menuentry_id_option .*$||g"|sed "s|--class .*$||g"|nl -n ln -v 0 -b p"^[	]"|nl -v 0 -b p"^[^0-9]"

Windows10 → Ubuntu16.04 LST

/boot/grub/grubenvを書き換え,次回起動時のOSを指定する. これはgrub-rebootコマンドがやっていることと同じこと.

システム領域をマウントする

/bootが存在するパーティションをマウントする. Windows側からLinuxパーティション(今回はext4)をマウントするためにExt2 Volume Managerを利用する.

EXT2VolumeManager

利用していないドライブキャラクタ(例えば,Eドライブ)を適当に設定しマウントする.

grubenv

マウントしたドライブに/boot/grub/grubenvを確認.

/boot/grub/grubenvを書き換える

適当なテキストエディタで/boot/grub/grubenvを以下のように書き換える. [num]は同様にエントリー番号.

# GRUB Environment Block
next_entry=[num]
###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################

この状態はsudo grub-reboot [num]を実行した状況と同じなので,再起動すると指定したOSが起動する.

参考