buildroot による initrd

uClibcとbusyboxによるBishop用initrdをbuildrootを使って作る手順です。

1. buildrootのダウンロード

Bishop用buildroot をダウンロードします。

2. buildroot の展開

# tar xjvf buildroot-svn20070629.tar.bz2
# cd buildroot-svn20070629

3. buildroot の修正

以下の修正をします。

Index: Makefile
===================================================================
--- Makefile	(revision 18968)
+++ Makefile	(working copy)
@@ -167,7 +167,7 @@
 all:   world
 
 # In this section, we need .config
-include .config.cmd
+include .config
 
 # We also need the various per-package makefiles, which also add
 # each selected package to TARGETS if that package was selected

4. 設定

buildroot-config-initrdをダウンロードして .config にリネームします。

$ curl http://downloads.pylone.jp/src/buildroot-config-initrd > .config

5. ビルド

ビルドします。

$ make oldconfig
$ make

makeの最中にいくつか質問されます。CPUはarm920tを選択します。その他はデフォルトでいいでしょう。

makeが終わるとrootfs.arm.cramfs が出来上がります。

ソースコードのダウンロードの失敗によりmakeが中断した場合は http://downloads.pylone.jp/src/buildroot-dl/からdl ディレクトリに手動でダウンロードしてみてください。

ビルドに必要とされるヘッダファイルがないため、make が中断することがあります。その場合は必要なヘッダを含むパッケージをインストールするなどして、再度makeを実行してください。

6. Bishop用の変更

busyboxへのシンボリックリンクであるbuild_arm/root/linuxrcを Bishop用スクリプト に置き換えます。

$ rm build_arm/root/linuxrc
$ curl http://downloads.pylone.jp/src/buildroot-linuxrc > build_arm/root/linuxrc

rootfs.arm.cramfsを作り直します。

$ make cramfsroot

U-Boot形式initrd.uimgに変換します。

# mkimage -n 'Ramdisk Image' -A arm -O linux -T ramdisk -d
# rootfs.arm.cramfs initrd.uimg
cc