BusyBoxとは
BusyBoxは、
Linux環境において、`ls`や`cp`といった基本的な
UNIXコマンドを一つにまとめたユーティリティです。これは、多くのコマンドを個別のファイルとして持つ代わりに、単一の
実行ファイルに詰め込むことで、ディスク容量を大幅に節約する設計になっています。そのため、
組み込みシステムや、リソースが限られた環境で広く利用されています。BusyBoxは「組み込み
Linuxの十徳ナイフ」とも称され、その多機能性と効率性から多くの場面で重宝されています。
歴史
BusyBoxの起源は、1996年に
ブルース・ペレンズによって書かれた、Debianディストリビューション用のレスキューディスク兼インストーラとしての
ブート可能なシステムにあります。当初は
フロッピーディスク1枚に収まるように設計されました。その後、組み込み
Linuxや
Linuxディストリビューションのインストーラにおいて、事実上の標準となりました。これは、
Linuxの各
実行ファイルが持つ数キロバイトのオーバーヘッドを、BusyBoxが200以上のプログラムを1つにまとめることで削減できるためです。
1998年までEnrique Zanardiによって保守されていたBusyBoxは、その後Dave Cinegeによって
Linux Router Project (LRP) に引き継がれ、
組み込みシステム向けに改良されました。1999年からはErik Andersenが保守を引き継ぎ、2006年までその役割を担いました。この時期、組み込み
Linuxの需要増加と共に、BusyBoxの利用も拡大しました。
特筆すべきは、
2007年後半以降、BusyBoxのGPL違反が発覚し、複数の企業が訴えられたことです。この出来事は、BusyBoxの
ライセンスに対する意識を高めました。現在は、Denys VlasenkoがBusyBoxの保守を行っています。
機能
BusyBoxは、200以上のユーティリティを必要に応じてカスタマイズして実装できます。これらのユーティリティは、Single
UNIX Specificationに含まれるものや、他の
Linuxでよく使われるものが含まれます。具体的なユーティリティの一覧は、BusyBoxの公式サイトで確認できます。
Unixシェルとしては、ashが採用されています。BusyBoxの大きな特徴は、単一の
バイナリファイルに複数のアプリケーションが含まれている点です。これは、個々のアプリケーションを別々のファイルとして持つのではなく、1つのBusyBox
バイナリにまとめることで、ファイルシステム上のオーバーヘッドを削減し、コードの共有を可能にするためです。
各ルーチンは、サイズを最適化するように記述されており、代替となるユーティリティ群と比較して大幅な領域削減を実現しています。また、2004年の調査では、GNU実装と比較して、BusyBoxの方が実行速度が速い場合もあることが示されています。
コマンド
BusyBoxで利用できるコマンドとそのオプションは、公式ドキュメントに詳細に記載されています。BusyBox内のプログラムを実行するには、BusyBoxの引数としてコマンド名を指定します。通常は、使用したいコマンド名をBusyBoxの
実行ファイルへのリンクとして作成します。BusyBoxは、指定されたコマンド名をargv[0]から読み取り、適切なコマンドを実行します。
例えば、`/bin/ls`を`/bin/busybox`へのリンクとして作成した場合、`/bin/ls`を実行すると、BusyBoxが`/bin/ls`という名前で起動されたことを認識し、`ls`コマンドとして機能します。
BusyBoxの
インストールは、各コマンド名をBusyBox
実行ファイルにリンクすることで行われます。具体的には、
ハードリンクやシンボリックリンクが利用されます。コンパイル後の`make install`により、`/bin`、`/usr/bin`、`/sbin`などのディレクトリにシンボリックリンクが作成されます。また、
Linuxカーネルが最初に起動する`/sbin/init`もシンボリックリンクで作成されます。
さらに、`/tmp`ディレクトリの作成、`/proc`と`/sys`のマウント、`/dev`の生成を`/etc/init.d/rcS`に記述することで、基本的な
Linuxディストリビューションが構成されます。Debianなどのディストリビューションでは、パッケージマネージャを使用してBusyBoxを
インストールした後、`busybox --install -s DIR`コマンドで指定されたディレクトリにシンボリックリンクを作成できます。
利用している機器
BusyBoxは、多くの
Linuxベースの機器で利用されており、以下はその一部です。
DSLモデム/ルーター
Actiontec GT701, M1000, MI424WR
AZTECH 605EW
BT Home Hub
D-Link製品 (DSL-500B, DSL-504Tなど)
Freebox
Netcomm NB1
NTT RT-200-KI
Netgear DG834G
Open Networks iConnect612
Telindus 1130
TP-Link TD-88xx
無線ルーター
ASUS WL-500g, AM604G, RT-AC68U
その他
Amazon Kindle
Dreambox
Edimax EW-7206APg
Emprex ME1
Gamepark GP2X
HP Media Vault
IBM HMC
LaCie Ethernet Big Disk 1TB
LevelOne WBR-3460A
Linksys NSLU2, WRT54G
Motorola A780
Mvix MX-760HD
Neuros OSD
Nokia 770, N800, N810
OvisLink WL-5460AP, Evo-DSL04
OpenMoko
Picotux
QNAP NAS (TS-101, TS-201)
Qtopia Greenphone
ザウルス
Sonos Digital Music System
Sony DHG-HDD250 & DHG-HDD500
Synology NAS
Thecus NAS
Western Digital My Book
Zipit Wireless Messenger
より完全なリストは、BusyBoxの公式ウェブサイトに掲載されています。
GPL違反問題
BusyBoxのGPL違反は、複数の訴訟につながりました。2007年、SFLCは、Monsoon Multimedia Inc.、Xterasys、High-Gain Antennas、ベライゾン・コミュニケーションズなどを訴えました。これらの訴訟は、ライセンスに従うこと、賠償金の支払い、今後のライセンス遵守を監督する役員の指定などにより解決しました。
これらの訴訟は、GPLライセンスの重要性と、オープンソースソフトウェアの適切な利用を啓蒙する上で、重要な役割を果たしました。
外部リンク
公式ウェブサイト
*
busybox-w32 - Windows 版
BusyBoxは、
組み込みシステムだけでなく、
Linuxを学ぶ上でも重要なツールです。その効率性と多機能性を理解することで、
Linuxシステムの仕組みを深く理解することができます。