私の仕事PCはUbuntu MATEだが、一応Windowsもデュアルブートで入っている。
厳密に言えばWindowsのノートPCに、パーティションを切ってUbuntuを入れた状態。
仕事では基本的にはUbuntuしか使わないのだが、ごくたまにWindows環境で調査などの作業をすることがある。
しかも大抵そういうのは急ぎの仕事だ。
その時にWindowsを起動すると、何が起こるか。
永遠に終わらないWindows Updateである。
急ぎの仕事があるのに、平気で半日何もできない状態に陥る。
避けるためにはどうするか。
当然、たまに仕事の帰りにWindowsを起動して帰ればいい。それだけの話だ。
そうすれば、その夜中に勝手にアップデートを行い、勝手に再起動しやがってくれる。
…とは行かない。なぜなら私はUbuntuユーザーだからだ。
Windowsがアップデートを行い、再起動して、最後の仕上げをしようと目論んだところで、
起動するのはGRUBであり、Ubuntuだ。
勝手に再起動したWindowsに、自動的に自らを蘇らせる権利など与えられはしないのだ。ざまあみろ。
とも言ってられないので、一時的にGRUBのデフォルト起動カーソル位置をWindowsにして、
放置した状態でWindows Updateが最後まで終わるようにすることができるようにする。
まず、以下のコマンドを実行。
$ grep -e "^\(menuentry\)\|\(submenu\)" /boot/grub/grub.cfg
こんな結果が出る。
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --c(略)
submenu 'Advanced options for Ubuntu' $menuentry_id_option (略)
menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class(略)
menuentry 'System setup' $menuentry_id_option 'uefi-firmware' {
これは、GRUBの起動メニューに出る情報である。
ここから、Ubuntuは 0番目 、Windowsは 2番目 と読み取る。
まあ別に単純に一度再起動して、GRUBのメニュー画面を見てもいい。
コマンドで調べる方法を書いたのは、単にかっこいいからだ。
その2番目がデフォルトになるようにすればいい事がわかった。次はその設定だ。
昔は先程grepした/boot/の下のgrub.cfgを直接書き換えたりしたものだが
grub.cfgを直接いじろうと開くと DO NOT EDIT THIS FILE
と書かれている。
Ubuntuの作法はそうではない。
以下のファイルを編集する。
$ sudo vim /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0 👈ここ
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
#(以下略)
GRUB_DEFAULT
の値を0→2に変更し、保存する。
最後に、以下のコマンドを実行(先程のファイルの先頭のコメントにも書かれている)。
$ sudo update-grub
これで、/etc/default/grub
への変更が、実際にgrub.cfgに反映される。
再起動すると、GRUBの画面のカーソルはWindowsの行を示し、そのまま放っておけばWindowsが起動する。
あとはWindows Updateをつついて帰って、翌朝来たらログイン画面になっているWindowsを叩き落として再起動し、
GRUBでUbuntuを選んで起動し、
/boot/default/grub
のGRUB_DEFAULTを0に戻して、
sudo update-grub
すれば、元通りだ。