組み込みLinuxで際立つ「BusyBox」の魅力:BusyBoxって何ぞや?(2/2 ページ)
組み込みLinuxの世界で「万能コマンド」「コマンドの十徳ナイフ」と称されるオープンソース“BusyBox”とは? その概要と魅力について解説する。
BusyBoxを実際に使ってみよう
今回は、お手軽に試すことを重視してLinux PC上で実験することにします。
初めに、最新のソースコードをBusyBoxのサイトからダウンロードします。ちなみに、原稿執筆時点の最新版はBusyBox 1.9.0です。
以下のコマンドを参考に、ダウンロードしたファイルを展開し、展開先のディレクトリに移動します。
$ tar jxvf busybox-1.9.0.tar.bz2 $ cd busybox-1.9.0
次に、コンパイルの前に“どのようなアプレットを含めるのか”を設定します。以下のコマンドで設定画面を開きます。
$ make menuconfig
すると、以下のような画面が現れます(画面1)。
これは、Linuxカーネルのコンパイルと同様の画面です。これを使って、どのようなアプレットを含めるのかを設定していきます。例えば、「Coreutils」を選択すると、次のような画面が現れます(画面2)。
画面2を見ると、catやcpなどのコマンドが選択されていることが分かります。コマンドの一覧で[Y]キーを押すと選択され、[N]キーを押すと選択が解除されます。使いたいアプレットの選択が終わったら、[Exit]を選択します。すると、次のような画面が表示されます(画面3)。ここで[Yes]を選択し、選択内容の保存を行います。
ここまでの作業が完了したら、以下のコマンドを実行し、画面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 (省略)
先ほど説明したように、各コマンドが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に興味を持たれた方は、これを機にコミュニティへの貢献にも挑戦してみてはいかがでしょうか?
Copyright © ITmedia, Inc. All Rights Reserved.