上川純
一
![]() |
qemubuilder は Debian パッケージをビルドするためのツールです。 debootstrap のクロスブートストラップ機能 を利用してベースイメージを作成した後、 qemu を利用して各アーキテクチャ用の仮想マシンを実行し、 そ の中でパッケージをビルドします。 ネイティブビルドと変わらない使用感でパッケージのビルドができるの で面倒なクロスビルドの設定が必要ありません。 特に Debian パッケージは buildd でネイティブビルドさ れ、 クロスビルドされない前提なので、 buildd でビルドできるようなパッケージの作成・デバッグに便利 です。
利用したいアーキテクチャ向けのカーネルと設定ファイルを用意します。 手元の設定では次のような設定になっています。
KERNEL_IMAGE=vmlinuz-2.6.24-1-versatile-armel
ARCH=armel BASEPATH=/home/dancer/tmp/base-armel.qemu INITRD= |
イメージをまず作成します。 これで、 BASEPATH に指定したファイル名に qemu の RAW ディスクイメージが作成され ます。
# qemubuilder --configfile arm.config --create
|
ディスクイメージをアップデートします。
# qemubuilder --configfile arm.config --update
|
パッケージをビルドするのには dsc ファイルを指定します。
# qemubuilder --configfile arm.config --build xxx.dsc
|
カーネルと設定ファイルの取得が今一番面倒なところです。 Debian の標準のカーネルと initrd でできた時期もあったのです が、 現在そういうようにはなっていません。
アーキテクチャの組み合わせがあまりにも多いため、 動く組み合わせを同定することや、 デバッグが困難です。 スクリプトで 自動化すること、 またテストの自動化が必要ではないかと考えています。
また、 qemu の-append コマンドでカーネルにブートパラメータを指定できることを装丁してい ますが、 実際にはそれができないアーキテクチャ (ppc など) があり、 そのままでは動きません。 *4
最近は kFreeBSD アーキテクチャなども登場してきていますが、 このままの設計ではそこまで手が回らなさそう です。
どうしましょうね。
第
59 回東京エリア Debian 勉強会 2009 年 12 月
____________________________________________________________________________________________