テクニカルプア

備忘録と若干の補足

KMSのearly modeでブート時にTuxを鎮座させる

(2015-03-05 追記:以下に示す方法であっても、特に私自身の環境ではTuxが出てこなくなってしまった。原因はいまだわからない)

 Linuxカーネルコンパイルを知って以来、ずっとブートシーケンス中にTuxを鎮座させる事を夢見ていた。Arch Linuxが配布するカーネルではブートロゴが表示される設定になっていないので、Tuxは鎮座しない。
f:id:aaodsn:20141128225921j:plain
 基本的には Gentoo Forums :: View topic - Tux at top of screen during boot? に従えばいいんだけど、KMSを利用する環境でearly modeになっている場合*1カーネルパラメータをいじくる手間がいらなくなるかわりにもう一手間増えて、グラフィックスに関するドライバをビルトインにしないといけなくなる。つまり、Intel製のグラフィックスの場合、

CONFIG_DRM_I915=y
CONFIG_DRM_I915_KMS=y
CONFIG_DRM_I915_FBDEV=y

という設定にしなければならない。上のリンクに沿って言えば、

Device Drivers --> Graphics support --> Direct Rendering Manager --> Intel 8xx/9xx/G3x/G4x/HD Graphics

の箇所をモジュール("M")ではなくビルトイン("*")にする必要がある。

理屈

 正しい理解をしている確証もなく、一次資料に目を通したわけでもないので参考情報として解釈してほしい。

KMSとは

 kernel mode settingの頭字語。Linuxカーネルからグラフィックスあたりを操作する為の仕組み。

initramfsとKMS
  • Arch Linuxでmkinitcpioはinitramfs(カーネルイメージとかいわれる)を生成するためのスクリプト
  • mkinitcpioは /etc/mkinitcpio.conf の内容を読み込む
  • KMSがearly modeになっている場合、KMSに必要なモジュールはシステム起動時の早い段階でカーネルに読み込まれる
  • 早い段階でモジュールが読み込まれるとはいうものの、その際あるいはその前にドライバが読み込まれるとは限らない
    • 実際、ドライバをビルトインにしなかった時はTux鎮座しなかった
  • カーネルにグラフィックスのドライバを組み込んでおけばモジュール読み込み後すぐグラフィックスが利用できる

おまけ

 /proc/config.gz をzcatしたやつを晒す。AUR (en) - linux-ckThinkPad X201sで利用することを前提としている。4000行くらいあって、ページを無駄に重くするだけだと思われるので、晒すとは書いたがリンクを貼るにとどめておくことにする:zcat /proc/config.gz
 configの行数がかさむのは修行が足らない証だ。

*1:/etc/mkinitcpio 内の"MODULES"にグラフィック関連のモジュールを加えている場合が該当する。MODULES=i915 みたいな記述があるなど。