2013年6月7日金曜日

ブートスプラッシュ(plymouth)とuvesafbについて






現在、Ubuntuではplymouthというブートスプラッシュが採用されています。
本来のLinuxは起動中には各種メッセージがずらずらと流れていくのが一般的ですが、
最近のディストリビューションはWindowsで起動中にロゴのアニメーションが出るのと同じように
起動中にアニメーションを表示するものがほとんどになっています。

勿論、ArchLinuxでもplymouthは使用できます。しかし、いくつかの一筋縄でいきませんでした。
そこでいくつか覚え書きです。

プロプライエタリドライバを使用してたときの注意点も添えておきます。
まず第一にArchのAURで配布されているplymouthについてです。
これをインストールして、mkinitcpioコマンドでinitramfsをリビルドしてもplymouthがinitramfsにインストールされませんでした。

これはmkinitcpio用のスクリプトがおかしいようです。
plymouthをAURから普通にインストールした後、
/usr/lib/initcpio/install/plymouthの50行目をSCRIPT='plymouth'からadd_runscriptに変更しましょう。
言うまでもないですが、./etc/mkinitcpio.confのHOOKS arrayにplymouthを追加することを忘れぬように。

次はuvesafbについてです。私はThinkPad x121e (AMD)でプロプライエタリドライバを使用していました。ThinkPadに限らずプロプライエタリドライバを使用してた場合は基本的にコンソールフレームバッファが使用できません。
KMS(Kernel Mode Setting)をオフにしなければならないためです。また、この場合はカーネルコマンドラインにvga=791などを指定してやってvesaを使用すればいいかもしれません。
しかしvesaの場合は解像度が残念になる場合がほとんどでしょう。

そこでuvesafbを使用しましょう。uvesafbのuはusermodeのuです。
カーネルコマンドラインからvga=xxxを削除してvideo=uvesafb:1024x768-32@60といった風に指定します。書式はvideo=uvesafb:<hight>x<width>-<color>@<refresh rate>という具合です。

しかしこれだけではuvesaは使えません。v86dというユーザースペース用のツールをインストールする必要があります。幸いにもArchはこれを公式でパッケージ配布しています。

あとは/etc/mkinitcpio.confのHOOKS arrayにv86dを、FILESに/usr/lib/modprobe.d/uvesafb.confを追加しましょう。/usr/lib/modprobe.d/uvesafb.confの中身は適切に設定しておいてください。


そしてここからがハマりポイント。実は上記のuvesafbの使用方法はArchWikiでも見たらわかることですが、実際にこの手順を実行してもuvesafbはいつまでたっても使えません。

実はGentooWikiのuvesafbの項にあるように、
カーネルをリビルドしてそのリビルド時にmake menuconfigで
General setup  --->
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
    (/usr/share/v86d/initramfs) Initramfs source file(s)
 という風に設定を変更しないと、initramfsの中にいくつか必要なデバイスファイルが作成されず結果uvesafbも使用できないのです。
しかしArchが配布するv86dは/usr/share/v86d/initramfsが含まれておらず、
PKGBUILD等に記載されるv86dの配布元(Gentooのサイトです)はリンク切れとなっているため、
Debianのサイトからでもパクってきて解凍し、必要なものだけ取り出して/usr/share/v86dに置けばよさそうです。

さて、カーネルビルドは面倒なのでそういう人はinitramfsをmkinitcpioに頼らずbusyboxとか使用して自力で作ってしまうとか、/usr/lib/initcpioに/usr/share/v86d/initramfsの変わりになるようなスクリプトを自作して置いておくとかいう方法もあります。(試してないけどそれでもうまくいくとおもいます)


最後に/usr/share/v86d/initramfs以下に貼っておくので役立ててくださいな






追記
記事トップに貼った画像はAURで配布されている、arch-logoというplymouthのテーマでひらたく言うとUbuntuのブートスプラッシュテーマのパクりなのですが、使われているロゴ画像がとっても微妙クオリティです。
なので私は使用されているロゴをちょっと変更して使用してます。
その変更した画像を以下に貼っておきます。ぺたり。
透過してるし背景が白なのでパッと見はわからないですね……
これを/usr/share/plymouth/themes/arch-logo/arch-logo.pngをこの画像で置き変えると幸せになれるかも????