こんにちは。今回もRaspberry Piネタです。
Raspberry Pi起動時に下図のようなラズベリーのロゴがCPUコアの個数分表示されますが、これを任意の画像に変えてみたいと思います。
実はこのロゴですが、単純に画像ファイルを置き換えるだけではダメなのです。ロゴの画像ファイルはカーネルのビルド時に内部データとして取り込まれる為、データを用意した上でカーネルの再構築が必要です。
本来は新しいロゴを追加する場合、以下の手順が必要になります。
- 画像データの用意
- カーネルのソースコード入手
- 画像変換に必要なツールの準備
- 画像データの変換
- logo.cに用意した画像データを新しいロゴとして追加するようにコードを修正
- Kconfigに追加したロゴの項目を追加
- Makefileに追加したロゴの項目を追加
- menu configで新しいロゴを選択
- カーネルビルドに必要なツールチェーンをインストールする
- カーネルの再構築
- カーネルの置き換え
うーむ・・タカだかロゴの変更で、なかなか大変な作業ですね~。よし!面倒くさいので今回は上記の手順5~8を省いてしまいます。
まず、カーネルのソースコードを入手します。
git clone --depth=1 https://github.com/raspberrypi/linux
次に画像データの変換ですが、まず必要なツールをインストールします。
sudo apt-get install -y netpbm
画像データを変換→減色処理→既存のロゴデータと置き換え(今回の手抜き部分)
jpegtopnm karakuri.jpg > karakuri.ppm ppmquant 224 karakuri.ppm > karakuri_224.tmp
pnmnoraw karakuri_224.tmp > linux/drivers/video/logo/logo_linux_clut224.ppm
ビルドに必要なツールをインストールします。
sudo apt-get install bc
カーネルを再構築し、置き換えます。ビルド(セルフ)には非常に時間がかかります(約1時間半)。
cd linux KERNEL=kernel7 make bcm2709_defconfig make -j4 zImage modules dtbs sudo make modules_install sudo cp arch/arm/boot/dts/*.dtb /boot/ sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/ sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/ sudo scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img
再起動すると・・・
お疲れ様でした!
[…] 以前の投稿でRaspberry PiのKernelのビルドを行った事がありましたが、この時はRaspberry Pi上でのセルフコンパイルでしたので、ビルドに非常に時間がかかってしまいました。 […]