見出し画像

解像度変更できん!カモーン!ブートローダー!(Arch Linux使いへの道3)

あれっ?これって・・・Loganの呪い?

 前回無事にArch Linuxの最小限のインストールを終え、意気揚々とシステムをリブートすると、ログインプロンプトが次のとおり表示されます。

サイズ感がわかりにくいですがフルHD解像度で表示されてます

 うんうn・・・字が小っさ!字が小っさ!(大事なことなので2回)
 これはろうがん・・・いや格好よく言おう。Loganの呪い特性持ちには結構キツイっす。画面解像度を下げる方向に設定すればよいんだろうと思い、設定方法をコパイロット先生に尋ねてみました。

Arch LinuxのCUI解像度の変更方法マニュアル(コパイロット先生作)

 コパイロット先生の言うことを前園さんレベルで言うとおりにしてみると、最初に表示されるメニュー(GRUBの起動画面)は文字が大きくなったのですが、その後画面が刷新されて現れるCUI画面は文字が小さいまま!GRUB設定ファイルのGRUB_GFXPAYLOAD_LINUXの項目を「keep(GRUB-GFXMODEの設定を引き継ぐ)」ではなく、解像度を直接指定すればよいかしらと変えてみてもダメダメ。うーん、詰まった。そもそもGRUBって何ぞ?ここから調べてみるか。

Linuxが起動するメカニズムとは

 コパイロット先生に「Arch Linux UEFIで入れたんだけど、起動からプロンプト出るまでにどんな処理がされているのか段階的に教えて」と質問して、更問をいろいろ重ねてわかったのは、Arch Linuxのマシンの電源オンから次の作業が順に処理されているとのことでした。
1.UEFIファームウェア実行
  電源投入後、UEFIが起動し、ハードウェア(CPU、RAM、ストレージ、USBなど)を初期化。ブートローダー(GRUB)を起動。
2.ブートローダー(GRUBのことをいうらしい)実行
  カーネルと初期RAMディスクをメモリにロード。 /etc/default/grubの GRUB_CMDLINE_LINUX_DEFAULTに従ってカーネルパラメータを渡す。
3.カーネル(Linuxの各処理の司令塔(エンジン))の初期化
  カーネルが起動し、CPU・メモリ・デバイスドライバを初期化。initramfsを展開し、ルートファイルシステムのマウント準備を行う。必要なモジュール(例:ファイルシステム)をロード。
4.initramfsによるルートファイルシステムのマウント
5.systemd起動
  CUI環境のログインシステム getty@tty1.service等を起動
6.gettyによる仮想CUI端末の起動
  /dev/tty1にログインプロンプトを表示し、ユーザーのログインが可能に

GRUB設定ファイルを弄びまくる

 GRUB設定ファイルからGRUB起動画面の解像度設定は正しく是正できたということは、状況証拠からの素人推理ですが、2の工程のブートローダーから3の工程であるカーネル初期化に行くときに解像度設定が正しく渡されていないのでは?と思いました。公式WikiのGRUBに関する解説記事を穴の開くほど見つめたところ、「うまく行かない場合、非推奨の vga= の方法があり、/etc/default/grub の "GRUB_CMDLINE_LINUX_DEFAULT=" という行に追加するだけ。例えば、"GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792" は解像度が 1024x768 になる」という記述に注目しました。要は正規の方法のGRUB設定ファイルのGRUB_GFXPAYLOAD_LINUXの項目ではなく、GRUB_CMDLINE_LINUX_DEFAULTの項目を弄ぶということ。ここを言われたとおりに変更したのですが、やっぱりダメでした・・・。コパイロット先生もこれまで行った対策しか教えてくれずこれは本気で詰んだか・・・と思ったのですが、諦めたらそこで試合終了なので、ジタバタ検索をしてみたところ、Arch Linuxではありませんが、Rocky Linux 9.3でGRUB2という別ディストリビューションの類似機構だと思いますが、そこで同じような悩みと解決策の記載を発見!どうやらGRUB_CMDLINE_LINUXの項目の末尾に「video=1024x768」と解像度を指定するみたいです。自分のGRUB_CMDLINE_LINUXの記述は空っぽ(「””」)だったので、恐る恐るその一行前のGRUB_CMDLINE_LINUX_DEFAULTの項目の末尾に「video=1024x768」と記載してみました。そうしたところ、ようやくログインプロンプト以降の解像度が指定のとおりになりました!ふうーーーーここだけで半日費やしました・・・。

今回わかったこと
・今回の事象の原因とメカニズムは結局わからず・・・
・最後のやり方が正解かどうかわからないので自己責任でお願いします

いいなと思ったら応援しよう!