Fbsplashのテーマを16:9に改造

make menuconfigを少しじっくりやっていたら、面白そうなオプションを発見。

Device Drivers ->
    Graphics support ->
        Framebuffer Console support
            Console display driver support  --->
                Support for the Framebuffer Console Decorations

コンソールの装飾ってなんだろうなあと思ってGentooWikiで検索するとこんなものが見つかりました。
http://en.gentoo-wiki.com/wiki/Fbsplash
Fbsplash?なにそれ、と思ったら、VineUbuntuでおなじみブートスプラッシュのことらしいです。
面白そうなんでやってみたんですが、16:9サイズのテーマが少ない!
仕方ないのでNewLinuxというテーマを1280x800pxに改造しました。

0.下準備

まず今回元にするNewLinuxはbootsplash-themesに含まれているので、これをemergeしておきます。

$ sudo emerge bootsplash-themes

これで各種テーマが/etc/splash/以下にインストールされますが、ここを直接触るとサンプルと自作とごっちゃになるわroot権限はいるわで面倒なので、作業はホームディレクトリ以下で行いました。

  • テーマ名 NewLinux→MyNewLinux
  • テーマディレクトリ /etc/splash/NewLinux→/etc/splash/MyNewLinux(/home/unarist/splash/MyNewLinux)
$ mkdir -p ~/splash/MyNewLinux
$ sudo ln -s ~/splash/MyNewLinux /etc/splash/MyNewLinux

テーマ名でフォルダ分けされているので、テーマ名を変えることで丸ごとリンクを張ってしまおうという作戦。

1.元ファイルをコピー

1280x1024px用のテーマを使いたいのでこれをコピーしてきます。

$ cd /etc/splash/MyNewLinux
$ cp /etc/NewLinux/1280x1024.cfg 1280x900.cfg
$ mkdir images
$ cp /etc/NewLinux/images/verbose-1280x1024.jpg verbose-1280x900.jpg
$ cp /etc/NewLinux/images/silent-1280x1024.jpg silent-1280x900.jpg

2.silent画像の編集

silentってのはドーンと画像だけ表示されて、プログレスバーなんかが動いてるモードですね。
最初にやったときは上下を切り取っただけでしたが、ちょっとプログレスバーが下すぎたので調節。

  1. GIMP召喚
  2. 画像→キャンバスサイズの変更で1280x800で上下をカット
  3. 「Press F2 for verbose mode」を上に50px移動(カット→選択範囲移動→ペーストでよかったのか)
  4. 上書き保存

このテーマの場合プログレスバーはPress〜のテキストの下に表示されるので、あとで切り取った上端+移動した50pxを直してやります。

3.verbose画像の編集

verboseはスプラッシュなしと同様にinitメッセージやらが流れるモード(の背景画像)です。
これもsilent同様に上下切り取ればいいやーと思っていたらペンギンさんが大きかったので縮小することに。

  1. GIMP(ry
  2. 画像→画像の拡大・縮小で1000x800に縮小
  3. 画像→キャンバスサイズの変更で左280pxオフセットして1280x800にする
  4. 左端が透明になっているので真っ黒に塗りつぶす(真っ黒レイヤーを下に配置でよかったのか)
  5. 上書き保存

4.cfgファイルの修正

このファイルにverbose時のテキスト枠だとか画像のパスだとかプログレスバーだとかについて書かれています。
まずth=1024(テキスト枠の高さ)となっているのを800に、pic, silentpicのパスを〜/MyNewLinux/〜に修正します。
その下にbox silent〜と並んでいるのが画像の上に描画するもの、プログレスバーなどです。正直このフォーマットはあまり理解していませんが、まあ#b77200とかはどうみてもカラーコードだし、その前の数字四つはx1, y1, x2, y2に違いないよね!
先ほどsilent画像を編集した際にプログレスバーを上にずらしているので、各要素のy1,y2から(切り取った上端+テキスト移動分)=162pxを引いてやります。でこんな感じ。

# background
box silent noover	255 701 1025 728 #00000050
box silent inter	255 701 255 727 #b77200 #b77200 #f2b700 #f2b700
box silent		255 701 1025 728 #b77200 #b77200 #f2b700 #f2b700

# black border
box silent		255 701 1025 701 #b5b5b5
box silent		255 728 1025 728 #b5b5b5
box silent		255 701 255 728 #b5b5b5
box silent		1025 701 1025 728 #b5b5b5

これで完成です。既にフレームバッファ1280x800で起動していればsplash_managerでテストできます。

$ splash_manager -c demo -t MyNewLinux --tty=2
$ splash_manager -c demo -t MyNewLinux -m s --tty=2

あとはWikiの通りにinitramfsを用意してブートオプション設定して再起動すれば、Tux君が出迎えてくれます!