GRUBで次回起動カーネルを選択
次回どのカーネルを用いて起動するのかを,rebootする前に指定する. もちろんマシンが手元にあれば手で選ぶこともできるけど,これだとリモートからでもいける.
インストールされているカーネルのリストを取得
まず何がインストールされているか調べる. 汚いawkワンライナー.
awk -F\' -v l=-1 -v ll=-1 \ '/menuentry |submenu / { if ($1=="menuentry ") {l+=1; print l "\t" $2} else if ($1=="submenu ") {l+=1; ll=-1; print l "\t" $2} else {ll+=1; print "\t" l ">" ll "\t" $2} }' \ /boot/grub/grub.cfg
なお,以上のコマンドを冒頭にシバン!#/bin/sh
を付けて,/usr/sbinにgrub-listとでも名うっておいておくと楽.
出力例.
0 Ubuntu 1 Advanced options for Ubuntu 1>0 Ubuntu, with Linux 4.15.0-29-generic 1>1 Ubuntu, with Linux 4.15.0-29-generic (recovery mode) 1>2 Ubuntu, with Linux 4.15.0-23-generic 1>3 Ubuntu, with Linux 4.15.0-23-generic (recovery mode) 2 Memory test (memtest86+) 3 Memory test (memtest86+, serial console 115200) 4 Ubuntu 16.04.5 LTS (16.04) (on /dev/sdb2) 5 Advanced options for Ubuntu 16.04.5 LTS (16.04) (on /dev/sdb2) 5>0 Ubuntu (on /dev/sdb2) 5>1 Ubuntu, with Linux 4.4.0-134-generic (on /dev/sdb2) 5>2 Ubuntu, with Linux 4.4.0-134-generic (recovery mode) (on /dev/sdb2)
次回起動カーネルの指定
major番号のみ,もしくは>でminor番号を追加して指定する.エスケープに注意.
例えば上の例で Ubuntu, with Linux 4.15.0-23-generic を指定したければ '1>2' とする.
$ sudo grub-reboot '1>2'