小 大サイズ変更 このページは印刷用バージョンが用意されていませんので 表示用ページをそのまま使用します 組み込み Linux で際立つ BusyBox の魅力 特集 :BusyBox って何ぞや? 組み込み Linux で際立つ BusyBox の魅力 中村雄一 2008/2/4 1 2 BusyBox を実際に使ってみよう 今回は お手軽に試すことを重視して Linux PC 上で実験することにします 初めに 最新のソースコードを BusyBox のサイトからダウンロードします ちなみに 原稿執筆時点の最新版は BusyBox 1.9.0 です 以下のコマンドを参考に ダウンロードしたファイルを展開し 展開先のディレクトリに移動します $ tar jxvf busybox-1.9.0.tar.bz2 $ cd busybox-1.9.0 次に コンパイルの前に どのようなアプレットを含めるのか を設定します 以下のコマンドで設定画面を開きます $ make menuconfig すると 以下のような画面が現れます ( 画面 1) 1 / 5 2008 年 02 月 21 日 12:34
画面 1 どのアプレットを含めるのかを設定する これは Linux カーネルのコンパイルと同様の画面です これを使って どのようなアプレットを含めるのかを設定していきます 例えば Coreutils を選択すると 次のような画面が現れます ( 画面 2) 画面 2 Coreutils を選択した様子 画面 2 を見ると cat や cp などのコマンドが選択されていることが分かります コマンドの一覧で [Y] キーを押すと選択され [N] キーを押すと選択が解除されます 使いたいアプレットの選択が終わったら [Exit] を選択します すると 次のような画面が表示されます ( 画面 3) ここで [Yes] を選択 し 選択内容の保存を行います 2 / 5 2008 年 02 月 21 日 12:34
画面 3 設定内容を保存する ここまでの作業が完了したら 以下のコマンドを実行し 画面 2 で選択したアプレットを含む BusyBox をコンパイルします $ make コンパイルが完了したら 以下のコマンドでインストールします $ make install デフォルトでは カレントディレクトリの下の _install ディレクトリにインストールされます ( ここではデフォルトのままにします ) _install/bin/busybox が BusyBox の実行ファイルです それでは _install/bin ディレクトリの中を見てみます ( リスト 2) $ ls -l _install/bin lrwxrwxrwx 1 ynakam ynakam 7 Jan 7 22:36 addgroup -> busybox lrwxrwxrwx 1 ynakam ynakam 7 Jan 7 22:36 adduser -> busybox lrwxrwxrwx 1 ynakam ynakam 7 Jan 7 22:36 ash -> busybox -rwxr-xr-x 1 ynakam ynakam 626080 Jan 7 22:36 busybox lrwxrwxrwx 1 ynakam ynakam 7 Jan 7 22:36 cat -> busybox rwxrwxrwx 1 ynakam ynakam 7 Jan 7 22:36 chgrp -> busybox lrwxrwxrwx 1 ynakam ynakam 7 Jan 7 22:36 chmod -> busybox lrwxrwxrwx 1 ynakam ynakam 7 Jan 7 22:36 chown -> busybox lrwxrwxrwx 1 ynakam ynakam 7 Jan 7 22:36 cp -> busybox ( 省略 ) リスト 2 BusyBox のディレクトリ構造 先ほど説明したように 各コマンドが busybox へのシンボリック リンクになっていることがお分かりいただけたかと思います 試しに以下のコマンドを実行してみましょう $./_install/bin/ls いかがですか? BusyBox が正しく動いていればファイル一覧が表示されるはずです このように make コマンド一発でさまざまなコマンドの機能を入れることができます 今回は PC 上で動作させましたが 実際は組み込み機器の CPU に合わせてコンパイルする必要があります ( これをクロスコンパイルといいます ) クロスコンパイルも簡単です make でコンパイルする際に gcc のプレフィックス ( クロスコンパイル用 gcc のファイル名から gcc を除いた文字列 ) を入力 3 / 5 2008 年 02 月 21 日 12:34
するだけです 例えば SH アーキテクチャの CPU 向け gcc の名称は sh-linux-gcc ですので 次のようにして SH 上で動作する BusyBox をコンパイルできます $ make CROSS_COMPILE=sh-linux- 後は make install で生成された _install ディレクトリ以下のファイルを実機に転送し インストールすればよいのです 以上で今回の実験は終了となります 実際に触ってみることで より理解や興味が深まったのではないでしょうか? ライセンスと開発コミュニティ では 最後に BusyBox のライセンスと開発コミュニティについて紹介します BusyBox は オープンソースのライセンス (GPL ライセンス ) で配布されています そのため BusyBox に改変を施し BusyBox を組み込んだ機器を販売した場合は 改変した BusyBox のソースコードを開示する義務が生じます BusyBox を実際の機器に使う際は GPL ライセンスに十分注意する必要があります 実際に BusyBox を組み込んだ機器で GPL ライセンスに違反し オープンソースの団体より訴訟を起こされたという事件が起きていますので くれぐれもご注意ください このように紹介してしまうと GPL ライセンスが怖いもののように思えてしまいますが GPL のおかげで BusyBox は日々進化を続けています BusyBox では ソースコードを中心としたコミュニティが形成され 開発が進んでいます 開発コミュニティの拠点となっているのは BusyBox の Web サイトです このサイトで議論が交わされるわけですが 現在 開発の中心である Denys Vlasenko 氏がメーリングリストに来たバグ修正や新機能の提案を取りまとめ BusyBox のソースコードに取り込んでいます ちなみに 開発途中のソースコードは subversion のレポジトリに公開されています また 日本からも sebusybox プロジェクト にて SELinux の関連のコマンドを中心に多くの機能が提案され BusyBox 本体に取り込まれています このような開発コミュニティへの貢献は 個人や企業の 名声アップ だけでなく メーリングリストでの議論を通じて 英語力や技術力の向上 にも役立ちます そりゃ技術者として魅力的に感じるけど 実際 敷居が高そうだよなぁ そんな声が聞こえてきそうですが 弱気になることはありません いきなり新機能の提案とはいかなくとも バグ報告や修正などでも気楽に貢献できますし 開発者である Vlasenko 氏も気さくにメールに返答をしてくれます 実際に参加してみれば きっとイメージしていたよりもフレンドリーな雰囲気だと感じてもらえると思います 本特集で BusyBox に興味を持たれた方は これを機にコミュニティへの貢献にも挑戦してみてはいかがでしょうか? 1 2 4 / 5 2008 年 02 月 21 日 12:34
関連記事 組み込み Linux で際立つ BusyBox の魅力連載記事 組み込み Linux 開発入門 ( 全 3 回 ) 連載記事 Linux による RTOS の実現 ( 全 3 回 ) MontaVista Linux は携帯から自動車情報系へアックスの組み込み Linux はほかと根本的に違う業界初の Linux 対応 ICE が成功した理由組み込み Linux 業界動向組み込み Linux 業界動向 2006 CE Linux Forum Plenary Meeting 2005 レポート プリンタ用ページ機能へのご意見 ご要望は会議室へ この記事のオリジナルは http://monoist.atmarkit.co.jp/fembedded/articles/busybox/busyboxb.html でご覧いただけます 不許複製 Copyright(c) 2000-2007 ITmedia Inc. 5 / 5 2008 年 02 月 21 日 12:34