liloで起動画像を変更する

最近のLinuxディストリビューションではboot loaderはGRUBが標準のようですが、GRUBでは起動画面の背景しか変えられないようなので、もっと柔軟な起動画面を表示するためにここでは liloの使用法を検討します。

このページは、Vine Linux 6.1で検証されています。
2013年5月20日 よしのぶ 
e-mail:yoshino@rita.karing.jp

  1. 概要
2. lilo
3. 画像
4. lilo.conf or lilo -E
5. 微調整
6. まとめ


1. 概要

まず、liloをインストールし、使用したい画像(640x480, 16 or 256 index color, BMP format)を用意します。次に起動までの時間を表示するタイマーの位置とOS選択メニューの位置を特定する設定をlilo.confに指定するか、ま たは画像自体にその設定を書き込みます。その後、liloを実行し、MBRを更新します。


2. lilo
現行のディストリビューションに用意されたliloであれば問題なく動作するはずです。もし、使用しているディストリビューションに用意されていない場合は、liloの最新ヴァージョンを~/rpm/SOURCE/lilo/にダウンロードし、このspecファイルを~/rpm/SPECS/にコピーし、「rpmbuild -bb ~/rpm/SPECS/lilo.spec」でRPMパッケージを生成、インストールしてください。

3. 画像

使用したい画像を、640x480, 16 or 256 index color, BMP formatにします。画像をインデックスカラーに変更するとき、16色もしくは256色ちょうどにはならない場合がありますが、その場合でも必ず16色 もしくは256色に調整してください。そうしないと画像の表示が崩れる場合があります。なお、liloの設定ではインデックスカラーのナンバーで色指定を するので画像のインデックカラーとそのナンバーを把握しておく必要があります。


4. lilo.conf or lilo -E

liloの起動画面では、起動までの残り時間を示すタイマーと起動するOSを選択するメニューの位置の指定および文字色の指定が可能です。 lilo.confの指定では以下のようになります。

bitmap=/boot/logo.bmp
bmp-colors=0,2,,0,3,
bmp-table=62,12,1,6
bmp-timer=63,16,0,2,

bitmapは画像ファイルのパスです。

bmp-colorsはOS選択メニューに使用される文字色の指定で数値は画像のインデックスナンバーです。「bmp-colors=文字色、文字の背景 色、文字の影、メニューで選択されたときの文字色、メニューで選択されたときの文字の背景色、メニューで選択されたときの文字の影」となります。

bmp-tableはOS選択メニューの位置とメニューの行と列の配置を指定します。メニューの基準点は左上で、座標の指定は数値のみの場合は文字数によ る位置、数値にpをつけるとピクセルによる位置になります。「bmp-table=x座標、y座標、コラム数、コラムの行数、コラム間の距離、1コラムに 表示させる選択肢数」となります。

bmp-timerは残り時間表示タイマーの位置と文字色を指定します。座標の指定は数値のみの場合は文字数によ る位置、数値にpをつけるとピクセルによる位置になります。文字色は画像のインデックスナンバーで指定します。「bmp-timer=x座標、y座標、タ イマーの文字色、タイマーの文字の背景色、タイマーの文字の影」となります。

lilo.confを適切に編集した後、liloを実行すれば設定値で調整された画像の起動画面が表示されます。

画像の設定はlilo.confで行う方法の他、画像自体に設定を書きこむ方法があります。「lilo -E example.bmp」のように画像ファイルを対象に「lilo -E」を実行すると対話的に設定を画像に書きこむことになります。また、画像ファイルのかわりに画像の設定ファイル(設定値は、bitmap,bmp-colors,bmp-table,bmp-timer、拡張子.dat)を指定して「lilo -E」を実行するとその設定値を対象の画像ファイルに書きこみます。

こうして設定を書き込まれた画像ファイルは、lilo.confにその設定値を記述しなくても、その画像ファイルをbitmapオプションで指定するだけでその設定が反映されます。


5. 微調整

ここまでの記述はおおよそマニュアルを要約したもので、単純に言えばこれだけでも完了なのですが、実際の設定作業時に起動画面確認・調整のため実機の再起動を繰り返すのはかなりの手間なので、ここではqemuを使用した効率的な起動画面確認・調整法を紹介します。一連の手順としては、まず、liloを仮想フロッピーにインストールし、qemuでその仮想フロッピーからブートし、起動画面を確認します。設定を調整し、再度ブートし、確認します。

仮想ブートフロッピーディスクイメージ(bootdisk.img)の作成はrootで行います。ここでは、対象の画像ファイルはlogo.bmpです。

# dd if=/dev/zero of=bootdisk.img bs=512 count=$((18*2*80))
# mkfs.ext4 bootdisk.img
# mount bootdisk.img mnt
# mkdir mnt/boot
# mkdir mnt/etc
# mkdir mnt/dev
# cp -a /dev/loop0 mnt/dev
# cp -a /dev/sda2 mnt/dev
# dd if=/dev/zero of=mnt/boot/vmlinuz  bs=512  count=512
# cat >mnt/etc/lilo.conf <<EOF
boot=/dev/loop0
disk=/dev/loop0
bios=0x00
sectors=18
heads=2      
cylinders=80
bitmap=/boot/logo.bmp
prompt
image=/boot/vmlinuz
        label=linux
        root=/dev/sda2
EOF
# cp logo.bmp mnt/boot
# lilo -r mnt

このイメージは起動画面を表示するだけで別に本当にブートできなくてもいいので、/デバイスやkernelはそういう名前のファイルが存在するだけでかま いません(上記で作成されるbootdisk.img)。 出来上がったら、とりあえずbootし てみます。作成例のbootdisk.imgをダウンロードして使う場合は、カレントディレクトリ直下のmntにmountして作業して下さい。

# qemu -boot a -fda bootdisk.img

logo.bmpが起動画面として表示されたらひとまず成功です。ここから、前項を参考にしてメニューやタイマーの文字色や位置を調整していきます。

# ./mkliloimg.sh bmp-colors=0,2,,0,3, bmp-table=62,12,1,6 bmp-timer=63,16,0,2,

*** mkliloimg.sh ***
#! /bin/sh
echo bitmap=$PWD/mnt/boot/logo.bmp >/tmp/logo.dat
echo -e "$1\n$2\n$3" >>/tmp/logo.dat
lilo -E /tmp/logo.dat
lilo -r mnt
qemu -boot a -fda bootdisk.img
exit 0

mkliloimg.sh内の「lilo -E」が実行された時、本当に実行するかを聞いてくるのでyesで答えて下さい。また、ここで特定の設定を埋め込まれた画像は特に設定しなくてもその設定 がliloによる起動時に反映されますが、その画像を、一度、画像編集ソフトなどで編集してしまうとそれらの設定は消失します。

調整が完了したら、対象のシステムのlilo.confにこの画像を指定したbitmapオプションを付加し、liloを実行します。再起動後、正しく画 像が表示されたら終了です。


6. まとめ

Linuxはどうしても開発者・技術者の視点が優先され、ユーザーの利便性が蔑ろにされることがままありますが、個人的にその双璧はGRUBとLVMだと思っています。LVMはHDDの容量が10GB未満の時代ならそれなりの意味もあったと思いますが、TBが普通に流通する今の時代には少なくともユーザーにとっては複雑なだけでもはや無意味だと思います。GRUBはそれよりはマシではありますが、以前と比較し様々な制約が解消された現在のブート環境では無意味にオーバースペックなツールであることは否めないと思います。

実際問題、GRUBが活躍する場面に遭遇した人なんているのでしょうか?今なら何か問題が起きた場合はGRUBでブートするよりLive CDを使った方がはるかに便利だと思います。ちなみに私は、486機にVine 6.1をインストールする試行錯誤の際、GRUBには大変お世話になりました。なにせ昨今のkernelはフロッピーに収まらないし、486機はフロッピーとHDDからしかブートできないし、フロッピーに書きこんだGRUBからHDDのkernelを釣り上げる芸当には何度も助けられました。今時、こんな人が自分以外にいるのならオトモダチになりたいものです。

かつて、LILOが一般的だった頃は各ディストリビューションで起動画面に個性があり、それだけで楽しかったものですが、それがあのGRUBのブートメニューに退化してしまうのですから世の中わからないというか、なんというか…。理想を言えば、ディストリビューションが開発者・技術者とユーザー間の利益相反を調整する役割を担ってほしいのですが、実際はディストリビューション自体が技術崇拝の総本山だったりしてなかなか話が進みません。とにもかくにも、LILOが復権し、起動画面に多彩で豊かな表現が戻ってきてほしいものです。このページがその一助となれば幸いです。


 index.html 飛べ!ペンギン大王