buildrootインストール
buildrootのインストール
buildrootは組み込み用途のLinuxを簡単にビルドするためのツール
今回はこのツールを使って高機能なinitramfsを作る
説明
initramfsはディスクをルートにマウントする前の一時的なファイルシステムだと思うけど,
initramfsに必要なものをいろいろ突っ込んでしまえば,そこそこ使えるはず
別の使い方としてはkdump用に作っておけば,デバッグの時にいろいろできるだろう
インストール
以下からダウンロードしてファイルを解凍して適当なディレクトリに展開しましょう
[](http://buildroot.uclibc.org/)
自分は/usr/src以下に展開しました
$ cd /usr/src/buildroot/ $ make menuconfig $ make
使った計算機はx86_64なので,menuconfigではまずCPUのアーキテクチャをx86_64を選択した.
次にBusyBoxの設定を変更することでいろんなツール(NFS,sshdなど)をinitramfsにインストールできる.
入れるツールはお好みで.
あとはinitramfs(initrd)の圧縮形式の選択でcpio.gzにした.これも好みの問題?
Linuxカーネルをビルドする必要はない.(initramfsをカーネルに組み込む場合はこの限りではない)
makeが完了するとoutput/images/にinitramfsがrootfs.cpioとrootfs.cpio.gzという名前で作成されている
/bootにコピーして,GRUBのメニューを書き換える.
$ cp output/images/rootfs.cpio /boot $ sudo emacs /boot/grub/menu.lst
#(0) title buildroot root (hd0,0) kernel /vmlinuz-2.6.38.7-MK root=/dev/ram0 ro iommu=soft initrd /rootfs.cpio.gz
以上でとりあえず起動する.
この状態で以下の点が不満だった
- ログインシェルが表示されないこと
- 通信ができないこと
ログインシェルが出ないのでキーボードからユーザ名とパスワードを打ってログインすることできない.
そして通信ができないのでsshで接続することもできない.要するに使えない(シリアルケーブル経由ならいけるかも)
ログインシェルが表示されない問題は以下のページでよくある質問として扱われていた
()http://buildroot.uclibc.org/downloads/buildroot.html#custom_targetfs
make menuconfigにおいてSystem configuration->Port to run a getty (login prompt)を変更すればいいらしい
初期値はttyS0となっていたところをtty1に変更し,起動したところログイン可能になった
次に通信だが,これは通信の設定ファイルを書き換える必要がある.
initramfsに入れられるファイルはbuildroot/output/target以下にあるので,
それを編集してmakeを実行すればrootfs.cpio.*のファイルが書き換わる.
書き換えるファイルはbuildroot/output/target/etc/network/interfacesである.
以下のように設定すればethernetにIPアドレスが振られて通信できるようになる
auto lo eth0 iface lo inet loopback iface eth0 inet static address 123.45.67.890 network 123.45.67.0 netmask 255.255.255.0 broadcast 123.45.67.255 gateway 123.45.67.1 dns-nameservers 123.45.2.1
今日はここまで