ゆるりとものづくり

ゆるりとものづくり

夢見るおっさんの工作記録

さくらのVPSでコンソールからUbuntuのgrubが見えなくなってた件

さくらのVPSのコントロールパネルが2014年11月27日にリニューアルされていましたね。

この結果、GRUBの操作ができなくなってハマったのでメモっておきます。
ちなみに、Ubuntu 14.04 (12.04もかな?)のケースです。

バックアップのためにシングルユーザーモードに落とそうと思い、新コントロールパネルになって以来初めてコンソールを開いてみました。ところが、コンソールにはGRUBのメニューが表示されないため、Linuxの起動時オプションが変更できません。
それでは、と/etc/default/grubに「single」を追加してもos起動途中で画面が止まってしまい先に進めません。
結論としては/etc/default/grubの最後のあたりに追加されている

GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

この部分をコメントアウトするとgrubのメニューもシングルモードのプロンプトもどちらもVNCコンソールに表示されるようになります。
ただしOS起動時のkernelメッセージ類は表示されなくなります。(まぁ、普段は見る部分じゃないし、dmesgで見れるので問題無いかと思います(笑))

以下はここに至るまでの経緯と原因についての推測です。



トラブルに遭遇した時点でまず試した事は、さくらのサポートページ(https://help.sakura.ad.jp/app/answers/detail/a_id/2419/c/228)に従うこと。
でもEnterを押しても駄目ですし、grub2のメニュー呼び出しのためのShiftキー押しっぱなしでの起動も駄目。(そもそもVNCでshiftキーの状態が伝わってるのかな?)
大体、標準がCentOSなのでサポートページもCentOS向けですしね(笑)

そのままGRUB2の事を色々ググって調べたりさくらVPSのコンソール関係のトラブルを調べているうちにふと思い当たりました。
コントロールパネルの「カスタムOSインストール」でUbuntuをインストールすると/etc/default/grubに以下のような記述が追加されます。

GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

この設定があるおかげでLinuxのコンソール出力がシリアルコンソールに出力されて、そこにつながってるVNCにも表示されるわけです。
でもですね、grubの前のBIOSメッセージ的なものはシリアルではなくて直接コンソール(仮想マシンから見れば「画面」)に出てるのにVNCコンソールに表示されてるわけで…

そこで「GRUB_TERMINAL=serial」の部分を「GRUB_TERMINAL=console」に変えたらこれがビンゴで無事にgrubのメニューが表示されました。(GRUB_TERMINAL=consoleはgrubのデフォルトなのでコメントアウトしても同じ)
喜び勇んで、singleをkernelのオプションに追加して起動したものの、今度はシングルモードのプロンプトが表示されません。
なので、/etc/default/grubで追加されている「console=tty1 console=ttyS0,115200n8」も削除して起動したところ無事にシングルモードのプロンプトに辿りつけたわけです。

この状態や、冒頭の簡易な解決策(結論)ではkernelの出力メッセージが表示されませんが、「GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8"」この行のコメントアウトをしなければ表示されるようになります。
また、シングルモードではない場合は、この行があっても正常にログインプロンプトまでたどり着けます。
これはgettyが立ち上がっているかどうかでしょうね。

色々調べる過程で、過去のVNCコンソール関係のトラブルはこの設定を行わなかった事が原因だったようです。
ただ、その事例って旧コントロールパネルの時の話なんですよね。
また「設定」メニューで英語キーボードに切り替えられるようになったという、嬉しい機能強化もひっそりと行われています。

そこから推測するに、新しいコントロールパネルに変わった時点かHTML5版のコンソールが出た時点でサーバ側VNCのtty関連の設定が変えられたのではないかと思われます。
事実、

GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

この部分を

GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=1 --word=8 --parity=no --stop=1"

とtty1につなぐように変更すると「GRUB_TERMINAL=serial」でもgrubのメニューが正常に表示されるようになります。(あくまで憶測)
前述のようにシングルモード時の操作の問題があるので、これだけでは解決にならないんですよね…(汗)

ということで「誰も使っていない元旦こそサーバ落とすチャンス!」だったのですが、まぁ色々勉強になった元旦でした(笑)