Ubuntu Server 16.04でCUIの解像度を変更する

VirtualBox + Ubuntu Server 16.04 で、X (GUI) を使わない CUI 状態での解像度を変更する方法を調べたので備忘録。

各種ソフトのバージョンなど

手順

まず起動時に表示される GRUB のブートメニューで c を押してコンソールを表示させる。そこで videoinfo コマンドを実行し、その仮想マシンで使用可能な画面解像度を調べてメモしておく。

f:id:sgryjp:20171213232915p:plain
GRUB のコンソールでの videoinfo 実行例

解像度は「横幅x高さx色ビット数」の形式で表示されており、上の画面例でいうと1024x768x24 などが使用可能と分かる。使いたい画面解像度は、本当に使えるかどうかテストしておくと良い。テストするには、同じく GRUB のコンソールで videotest 1024x768x24 などと実行する。

f:id:sgryjp:20171213233318p:plain
GRUB のコンソールでの videotest 実行例

解像度が切り替わって表示されたなら、その解像度は確かに使用可能。なおこのテスト画面から元のブートメニューに戻る方法は無い(のかな?)ので、仮想マシンをリセットしてしまう。

続いて、OS にログインして解像度の設定を行う。具体的には、まず /etc/default/grub にて以下の設定行を追加する(解像度指定の部分は読み替えてください)。

GRUB_GFXMODE=1024x768x24
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"
GRUB_GFXPAYLOAD_LINUX=keep

上記の設定後、update-grub コマンドで GRUB を再設定して OS を再起動する。

sudo update-grub && sudo shutdown -r now

以上で画面解像度が期待通りに変更された。

f:id:sgryjp:20171213234047p:plain
画面解像度が変更された後のコンソール画面

参考情報

GRUB_GFXMODE だけを設定したところ、GRUB のブートメニュー画面の解像度が変わった。しかし OS を起動すると解像度がリセットされてしまった。続いて GRUB_GFXPAYLOAD_LINUX を設定したところ、OS 起動直後のリセットは発生しなくなったものの、起動途中(フォントが切り替わるあたり)でリセットされてしまった。最後に、GRUB_CMDLINE_LINUX_DEFAULT を設定したところ、ログイン画面まで解像度がリセットされなくかった。

どの設定が必要なのか、また上記だけで十分なのかは、ハードウェアやビデオドライバーなどに関わると思われ、各種フォーラムなどでも必要とされる設定は環境ごとに異なっているもよう。したがって上記の設定は、「あくまで一例」と思われる。

参考にしたサイトなど

askubuntu.com