Unix ベースのオペレーティング システムには、オペレーティング システムを正しく機能させるための基本的なユーティリティが多数あり、それらはすべてコマンド インタープリタからの使用を目的としています: cd、ls、mkdir、rm、mv、chown、find、mount、su、kill、 grep、cat、sed、awk …
これらは、いわゆる「coreutils」または GNU コア ユーティリティです。ただし、これらのツールは基本的なものではありますが、すべての Unix システムに存在するわけではありません。たとえディスクや RAM の占有量がどれほど少なくても、依然として全体として、組み込みシステムで使用するには重すぎるアプリケーションです。
BusyBox、組み込み Linux (およびその他のオペレーティング システム) のスイス アーミー ナイフ
そこで、 BusyBox が登場します。 1995 年、Bruce Perens (「オープン ソース ソフトウェア」の最初の公式定義の作成者) は、Debian Linux インストーラーおよびレスキュー ドライブとして機能できるように、1 枚のフロッピー ディスクに収まる完全なブート システムを作成することを決定しました。 ..
そこで彼らの解決策は、すべての coreutils (およびいくつかの追加ツール) の軽量バージョンを含む単一の実行可能ファイルを作成することでした。この「軽さ」は、次の 2 つの状況によってもたらされます。
*BusyBox は、特に低リソース システム向けに設計されたuCLibc ライブラリを使用してコンパイルされ、サイズとパフォーマンスが最適化されます。
*BusyBox に含まれるユーティリティには、元のバージョンのすべてのオプションが含まれているとは限りませんが、当然のことながら、最もよく使用されるオプションは含まれています。
BusyBox の使用と進化はすぐに、Debian にリンクされた元の機能から切り離され、ハードウェア制限のあるプロジェクトで使用され始めたり、 Unix ツールが利用できないシステムで Unix ツールの使用を容易にする方法としても使用され始めました。 WindowsやAndroidと同様、前者ではWSL の作成後に関連性が失われていますが、 Android では依然として GNU エコシステムの典型的なコマンド ライン ツールを使用することが最良の選択肢です。
時が経つにつれて、 BusyBox は「組み込み Linux のスイス アーミー ナイフ」であるという主張に応え、 テスラの自動運転車から多数のルーターに至るまで、あらゆる種類のプロジェクトのオペレーティング システムの基礎として使用されてきました。市場で入手可能です。これは、Alpine Linux ディストリビューションの基本コンポーネントでもあり、Docker コンテナーの作成に広く使用されています。

この多用途性は、その完全なモジュール設計によって助けられています。コンパイル時に、各開発者は、「make menuconfig」を使用して、作成するバイナリにどのユーティリティを組み込むか、またはバイナリから除外するかを選択できるため、プロジェクトごとにカスタマイズできます。
しかし、1 つの実行可能ファイルが約 200 の異なるユーティリティのタスクをどのようにして実行できるのでしょうか?それはユーザーにとってどのように機能するのでしょうか?まず、目的のユーティリティが引数として BusyBox アプリケーション自体に渡されるため、 ‘/bin/busybox ps’ は通常の ‘ps’ を実行するのと同等になります。
さらに、BusyBox には特殊な点があります。実行可能ファイルの名前を、それに含まれるユーティリティのいずれかの名前に変更すると、自動的にそのユーティリティとして機能し、ユーティリティの数と同じ数のシンボリック リンクを作成できます。が含まれているので、実行可能ファイルのパスを毎回入力する必要はありません。
