Seed環境にbootsplashをセットアップしてみる。まず、initrdを作るために、カーネルパラメータにvga=0x305とかつけて、フレームバッファを有効にしてブート。menu.lstはこんな感じ。
title VineSeed (Current kernel) root (hd0,8) kernel /boot/vmlinuz ro root=/dev/hda9 splash=silent vga=0x305 initrd /boot/initrd.img savedefault 0
この時点ではまだinitrd.imgにbootsplashが含まれていないので、ただフレームバッファで立ち上がるだけ。
立ち上がったらmkinitrd。
# mv /boot/initrd-2.6.16-0vl37.img /boot/initrd-2.6.16-0vl37.img.ori # /sbin/mkinitrd -v /boot/initrd-2.6.16-0vl37.img 2.6.16-0vl37 Creating initramfs Looking for deps of module ide-disk Looking for deps of module ext3 Using modules: /sbin/nash -> /tmp/initrd.ZU2961/bin/nash /sbin/insmod.static -> /tmp/initrd.ZU2961/bin/insmod Adding bootsplash image into initramfs.
ふむ、bootsplashが入ったっぽい。/boot/initrd.imgは/boot/initrd-2.6.16-0vl37.imgへのシンボリックリンクなので、このままリブートすればbootsplashになるはず…だがならなかった。
"Welcome to Vine Linux"の直前に/etc/rc.d/rc.sysinitから/sbin/splash.shを呼んで、そこからbootsplashになるはずなのだが…
# assertions test -r /proc/splash || exit 0
この時点でなぜか/proc/splashがないので、/sbin/splash.shがbootsplashを立ち上げずに終了してしまう。ということらしい。だめじゃん。
なぜ/proc/splashが存在しないのかは不明。rc.sysinitの中では/procをマウントしているのは/sbin/splash.shを呼ぶより後なのだが、ブート後に見ても/proc/splashなんてファイルはないので、マウントが後とか先とかいう問題ではない模様。
というわけで、よくわからんので今日は挫折。
640x480で動いたが
vga=0x311(640x480, True Color)なら表示できた。どうもPseudocolorではダメな気配。あとでそのへん、ドキュメントを読んでみよう。
ところでsplash=silentにしているのにsilentにならない。なんでかなと思ってdmesg見てると、以下のようなメッセージが。
vesafb: framebuffer at 0xe8000000, mapped to 0xd0880000, using 832k, total 832k vesafb: mode is 640x480x16, linelength=1280, pages=0 vesafb: protected mode interface info at 00ff:44f0 vesafb: scrolling: redraw vesafb: Truecolor: size=0:5:6:5, shift=0:11:5:0 bootsplash 3.1.6-2004/03/31: looking for picture...<6> silentjpeg size 17037 bytes,<6> does not fit into framebuffer. ...found (640x480, 16720 bytes, v3). Console: switching to colour frame buffer device 78x25 fb0: VESA VGA frame buffer device
なんでdoes not fitなのか不明。今日はここまでで時間切れ。