- - PR -
BusyBoxを実際に使ってみよう
今回は、お手軽に試すことを重視してLinux PC上で実験することにします。
初めに、最新のソースコードをBusyBoxのサイトからダウンロードします。ちなみに、原稿執筆時点の最新版はBusyBox 1.9.0です。
以下のコマンドを参考に、ダウンロードしたファイルを展開し、展開先のディレクトリに移動します。
$ tar jxvf busybox-1.9.0.tar.bz2 |
次に、コンパイルの前に“どのようなアプレットを含めるのか”を設定します。以下のコマンドで設定画面を開きます。
$ make menuconfig |
すると、以下のような画面が現れます(画面1)。

画面1 どのアプレットを含めるのかを設定する
これは、Linuxカーネルのコンパイルと同様の画面です。これを使って、どのようなアプレットを含めるのかを設定していきます。例えば、「Coreutils」を選択すると、次のような画面が現れます(画面2)。

画面2 「Coreutils」を選択した様子
画面2を見ると、catやcpなどのコマンドが選択されていることが分かります。コマンドの一覧で[Y]キーを押すと選択され、[N]キーを押すと選択が解除されます。使いたいアプレットの選択が終わったら、[Exit]を選択します。すると、次のような画面が表示されます(画面3)。ここで[Yes]を選択し、選択内容の保存を行います。

画面3 設定内容を保存する
ここまでの作業が完了したら、以下のコマンドを実行し、画面2で選択したアプレットを含むBusyBoxをコンパイルします。
$ make |
コンパイルが完了したら、以下のコマンドでインストールします。
$ make install |
デフォルトでは、カレントディレクトリの下の「_install」ディレクトリにインストールされます(ここではデフォルトのままにします)。_install/bin/busyboxがBusyBoxの実行ファイルです。
それでは、_install/binディレクトリの中を見てみます(リスト2)。
$ ls -l _install/bin |
先ほど説明したように、各コマンドがbusyboxへのシンボリック・リンクになっていることがお分かりいただけたかと思います。試しに以下のコマンドを実行してみましょう。
$ ./_install/bin/ls |
いかがですか? BusyBoxが正しく動いていればファイル一覧が表示されるはずです。
このように、makeコマンド一発でさまざまなコマンドの機能を入れることができます。
今回は、PC上で動作させましたが、実際は組み込み機器のCPUに合わせてコンパイルする必要があります(これをクロスコンパイルといいます)。クロスコンパイルも簡単です。makeでコンパイルする際に、gccのプレフィックス(クロスコンパイル用gccのファイル名から、「gcc」を除いた文字列)を入力するだけです。
例えば、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に興味を持たれた方は、これを機にコミュニティへの貢献にも挑戦してみてはいかがでしょうか?
関連記事
組み込み開発フォーラム 新着記事
- フルスクラッチの“Hello World”を動かしてみよう(2011/3/31)
- FlexRayプロトコルの概要(その2)(2011/3/29)
- JASA、東北地域に拠点を置く会員企業を支援(2011/3/25)
- NEC、震災の影響を受けた4拠点の生産再開を発表(2011/3/23)
- 内部ブロック図の基礎と共通要素(2011/3/22)
- インテル、被災地におけるITインフラの復旧を支援(2011/3/22)
- Facts on AUTOSAR/AUTOSAR導入の現実(2011/3/18)
- 計測器・震災被害ホットラインを開設、テクトロニクス(2011/3/18)
- ZMP、地震の揺れを多角的に計測するアプリ無償配布(2011/3/16)
- メンター、3Dテレビ・マルチメディア検証プラットフォーム(2011/3/16)
- 【番外編】タチの良い計測値、悪い計測値とは?(2011/3/15)
- tarファイルシステムをAndroidに組み込む!!(2011/3/10)












