⚠この記事はブログ移転前のアーカイブです
Ubuntu Serverの問題じゃなくてgrubの問題ですけど。
うちのサーバーは格安と名高いHP ProLiant MicroServer N54Lです。円安がものすごいことになってきたのでHDDとNAS両方買うよりも、これ買ったほうが自由度も高くて遊べるしコスパ抜群だったので買ってしまいました。
本題ですが、うちのサーバーはパブリックな用途じゃないんで夜中は電源落としてたりします。ある日使おうと思って電源ONにしたんですが、なかなかリモートログイン出来ない。ルーターのネットワークマップにも出てこない。仕方がないのでディスプレイ接続してみたらgrub画面で止まっていた・・・
どうやら予期しないシャットダウンが発生するとgrub内パラメータ「recordfail」が1になる模様。recordfailが1の状態でgrubが起動すると自動起動が無視されてそのまま放置になる。
面倒なのでrecordfailが1になっても自動起動するように設定を変更する。
$sudo vi /etc/default/grub
grubの個人設定で下みたいなのがズラーっと書いてあるけど設定の最後に「GRUB_RECORDFAIL_TIMEOUT」パラメータを追加する。
GRUB_DEFAULT=0 #GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=2 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX="" GRUB_RECORDFAIL_TIMEOUT=10
これでrecordfailを記録しても10秒のタイムアウトが設定され自動起動してくれる。
最後にgrubの設定をgrub本体に反映させてやる
$sudo update-grub
grub自身は /boot/grub/grub.cfg を参照して設定を把握しているので/etc/default/grubみたいな個人設定はupdate-grubコマンドでその設定を /boot/grub/grub.cfgに書き込む必要がある。