いもあらい。

プログラミングや哲学などについてのメモ。

gensplashについて。

2006-03-20 21:31:00 |  Gentoo...
gensplashおよびfbsplashについて。
参考URL: http://gentoo-wiki.com/HOWTO_gensplash (英語)

前回のエントリで書いたとおり、ブートのときに画像を表示させる方法(+α)について。

以下、上記参考URLの内容をざっと意訳したもの。(訳せるところだけ訳したもの、とも言う。辞書はたまにしか引いていないので、ところどころテキトーです)



gensplash、およびfbsplashとは?
gensplash
Gentoo Linuxのブートプロセスを、メッセージやアニメーション、プロセスバーを表示することで、よりカッコよく(enrich)見せるようにするためのツール群(または、プロジェクト)。
各ツールは~splashと名づけられていて、お互いにかかわりあっている。

fbsplash
gensplashの一つで、ブート時やリブート時、シャットダウン時にコンソールの背景に画像を表示させたり、サイレントモードに切り替えたりするもの。
/dev/fbsplashというデバイスを通してアクセスするので、Frame Bufferデバイスが必要。

Frame Bufferデバイスとは?
(よく分からないけれど、抽象的な描画スペースとインターフェースを用意することで、ハードウェアの低レベル処理について知らなくてもいいようにしたもの、ってことなのかな?)

インストール
以下はvesafbの場合(といっても、大体はこれで大丈夫みたいですが)。必要なら、読み替えること。

カーネルの再構築
まず、splashutilsをマージ。
# emerge splashutils

欲しければ、テーマをマージ。
# emerge splash-themes-gentoo
# emerge splash-themes-livecd

そのあとは/usr/src/kernelの指すディレクトがカーネルソースのディレクトリであるかを確認して、カーネルの再構築。

必要なオプションは、以下(全部組み込むこと)。
Device Drivers->Graphics support以下、

 [*] Support for frame buffer devices
<*> VESA VGA graphics support
(VESA driver typeはvesafb-tng)
(HRESxVRES@FREQ) VESA default mode
(例えば、1024x768@72とか)
[*] Support for the framebuffer splash


Device Drivers->Graphics support->Console display driver support以下、

 [*] Video mode selection support
<*> Framebuffer Console support


もし、initramsfs image(後述)を読み出したいなら、以下のオプションも指定すること。
Device Drivers->Block devices以下、

 <*> RAM disk support
(4096) Default RAM disk size (kbytes) (NEW)
[*] Initial RAM disk (initrd) support


逆に、以下のオプションは指定しないこと。
Device Drivers->Graphics support

 [ ] Enable Tile Blitting Support


これでカーネルを再構築して、古いカーネルに置き換えること。

Initramfs Imageについて
ブートプロセスの早いうちから背景に画像を表示させるには、initramfsが必要となります。(必要がなければ「ブートローダーの設定」まで読み飛ばすこと。)

方法は2つありますが、推奨されている方、すなわち起動時に読み込む方法のみを取り上げます。
(参考までに。もうひとつの方法は、カーネルに組み込んでしまう、というものです。)

Initramfs Imageを起動時に読み込む方法
この方法の場合、Initramfs Imageを1つのファイルとして作る必要があります。
といってもやらなければならないことはただ1つで、splash_geninitramfsを使ってファイルをinitrdファイルに変換するだけです。
# cd /etc/splash
# splash_geninitramfs -g /boot/fbsplash-emergence-1024x768 -v -r 1024x768 emergence
/etc/splashはsplashのテーマが置かれているディレクトリです。
オプションの-gでinitrdファイルの名前を指定し、-rでサイズを指定します。-vは冗長出力の指定です。引数にはテーマを指定します。

(bootsplashのテーマをfbsplashのテーマに変換する方法は割愛)

ブートローダーの設定
カーネルオプションの設定
まず、Frame Bufferデバイスのオプションを指定する必要があります。
例えば、
video=vesafb:ywrap,mtrr,1024x768-16@85
1024x768-16@85のところは、適当な値にしてください。
(16のところでは色の深さ、85のところではリフレッシュレートを指定してください。)

次に、fbsplashのオプションを指定します。
例えば、
splash=verbose,theme:emergence
verboseのところではverboseまたはsilentが指定できます。
silentにした場合、ブート時の情報がすべて隠れます(と書いてあるけれど、隠れるどころか画像が表示されなくなる・・・バグ?※)。verboseとした場合は、すべて表示されます。
theme:の後ろにはテーマを指定します。

※どうやら、新しいバージョンのカーネルの場合は、ブート時の情報を隠すにはquietというオプションを書いてやる必要があるようです。すなわち、
splash=verbose,theme:emergence quiet
ってな感じで。
verboseをsilentにすると、どうもうまくいかない感じがします。
ただ、隠されるのはあくまでdmesgで表示されるメッセージのみで、デーモンの起動などは全部表示されるようです。

Initramfs Imageを使う場合
もしInitramfs Imageを使う場合には、initrdを指定します。(※これはカーネルのオプションではないので注意。)
例えば、
initrd /boot/fbsplash-emergence-1024x768
(※これはGRUBの場合。)
という風に、さっき変換したファイルを指定してください。

grub.confの例
例えば、自分の環境であれば次のようになります。
==> /boot/grub/grub.conf <==
title Gentoo Linux 2.6.15-r1
root (hd0,2)
kernel /boot/gen_kernek.2.6.15r1.fb root=/dev/hda3 video=vesafb:ywrap,mtrr,1024x768-32@72 splash=verbose,theme:emergence
initrd /boot/fbsplash_emergence_1024x768

本当は1280x1024なんですが、文字が小さすぎて目に悪いので、1024x768になってます(^^;

これを
# grub-install /dev/hda
として、書き込むわけです。

すべてのコンソールに背景を表示させる
もしすべてのコンソールにスプラッシュスクリーンを持たせたいのであれば、次のコマンドを実行します。
# rc-update add splash default
defaultだとブートの終わりあたりに表示されるので、もしすぐに表示させたいのであれば、defaultのかわりにbootを指定してください。

(あとは割愛)