Ubuntu 12.04.1 の nvidia-173 により boot splash がバーコードに

バーコード症状は GRUB2 の設定 /etc/default/grub を変更して、GRUB_GFXMODE を有効にして、ブートローダをアップデートすると治りました。

Ubuntu 12.04.1 にシステム設定で、「推奨」とある nvidia-173 プロプライエタリな追加ドライバをインストールしすると、リブート途中でカーネルへ制御が移り、ubuntu の splash が表示されるタイミングで、幅の広い白い縦帯が画面を占めるバーコード状の表示になってしまいました。それだけで済まず、Ctrl-Alt-F2 で tty2 へ切り替えると真っ黒画面になり、テキストでログインできなくなってしまっていて、いざというときに手の施しようがない困ったことになっていました。

原因は、たぶん、nvidia ドライバがディスプレイの周波数を正常に取得できてないためでしょう。ならば、GRUB2 から VBE のフレームバッファの解像度をカーネルに渡せば治りそうです。

$ sudo cp /etc/default/grub /etc/default/grub.orig
$ sudo ex /etc/default/grub
:/GFXMODE/
#GRUB_GFXMODE=640x480
:s/^#//
GRUB_GFXMODE=640x480
:wq
$ sudo update-grub2

期待通りに、640x480 のスプラッシュが正常に表示され、Ctrl-Alt-F2 で tty2 にも login 表示が現れるようになりました。

試しに、フレームバッファの解像度をディスプレイの最高の値である 1280x1024 に書き換えてみました。このとき、不要なはずですが、念をいれて initramfs も作り直してからリブートしてみました。

$ sudo ex /etc/default/grub
:/GFXMODE/
GRUB_GFXMODE=640x480
:s/640x480/1280x1024/
GRUB_GFXMODE=1280x1024
:wq
$ sudo update-grub2
$ sudo update-initramfs -u

この設定で、ちゃんと高解像度のスプラッシュが表示され、tty2 の表示も 1280x1024 になりました。