体験!マイコンボードで組込みLinux

第5回 BusyBoxの活用[前編]

この記事を読むのに必要な時間:およそ 3 分

BusyBoxとは

LinuxのシステムではLinux本体であるカーネルがコンパクトであってもカーネル単体では動作をせず,多くのUNIXコマンド群を集約した大規模なLinuxディストリビューションでないとLinuxを利用することができません。PCの場合はハードディスク容量が潤沢であるので,Linuxディストリビューションが大規模であってもあまり問題が発生しません。

PCでは,贅肉満載の巨艦級のWindows VistaやWindows 7が無駄なメモリ容量とハードディスク容量を要求するため,それに対応するためのハードウェア資源がPCに要求されています。このため,Linuxディストリビューションが大規模であっても,相対的に贅肉満載の巨艦級のWindows VistaやWindows 7に比較すればたいした問題ではないのです。

しかし,Windowsを前提にしない組込みボードコンピュータでは,必ずしも潤沢なハードウェア資源があるとは限りません。むしろ組込みボードコンピュータでは資源が乏しいケースが多いので,そのような場合,大規模なLinuxディストリビューションの導入には問題があります。資源が乏しい組込みボードコンピュータでも多くのUNIXコマンド群を利用でき,かつ,大きな資源を要求しないのがBusyBoxです。

オリジナルのUNIXコマンドは1つのコマンドが1つの実行ファイルとなっていて,1つのコマンドの実行ファイルはさほど大きくなくとも,塵も積もれば山となるので,トータルとして大きな容量となってしまいます。BusyBoxでは複数のコマンドを1つの実行ファイルに納めることにより,ファイル容量を節約しています。

それだけでなく,オリジナルのUNIXコマンドは多くオプションがありますが,あまり活用されないオプションも多いので,BusyBoxではオリジナルのUNIXコマンドは多くオプションのうちよく利用されているもののみをオリジナルのUNIXコマンドのサブセットとして実装しています。そのことにより,さらにファイル容量を節約し,BusyBox-1.17ではデフォルト設定では約2Mバイト前後にファイル容量を節約することができます。

RAMベースの運用

Linuxファイルシステムを格納するメディアとしては,ハードディスクやメモリカード,RAMメモリなどがあります。PCでよく利用されるハードディスクの容量は1Tバイトを超えるものが珍しくなくなりました。組込みボードコンピュータでよく利用されるメモリカードでも4~32Gバイトの大きなディスク容量を使うことができます。ただし,組込みボードコンピュータでT-SH7706LSRのようにメモリカードが使える場合であっても,運用によってはRAMベースでファイルシステムを構築することもあります。

RAMの容量はハードディスクやメモリカードに比べて大きくはないので,RAMベースでファイルシステムを構築する場合はファイル群の内容を精選しないといけません。一般的なBusyboxの使いかたは,ファイルシステムのメインをBusyBoxで構築してからBusyBoxを補完する若干のコマンドとユーザ独自のアプリケーションプログラムを追加するというかたちです。

ここで問題となるのは,BusyBoxを補完する若干のコマンドとユーザ独自のアプリケーションプログラムのファイル本体のファイル容量が小さくとも,それに必要な共有ライブラリのファイル容量が大きくなるということです。BusyBoxのデフォルト設定では共有ライブラリを必要としますが,設定によっては共有ライブラリを不要にすることができます。

以前のBusyBoxではファイルシステムに関連するコマンドが欠落していたので,BusyBoxを補完する若干のコマンドを必要としていました,BusyBox-1.17では特殊な用途は別として,一般的な用途ではBusyBoxのみでLinuxファイルシステムを構築できるようになりました。

ただし,ユーザ独自のアプリケーションプログラムはBusyBoxでサポートされることはありえないので,BusyBoxの進化のみではファイル容量が大きな共有ライブラリを不要にすることはできません。幸いなことにBusyBoxはユーザ独自のアプリケーションプログラムを追加可能なしくみが備えられていますので,BusyBoxにユーザ独自のアプリケーションプログラムを組込むことにより,ファイル容量が大きな共有ライブラリを不要にすることができ,ごく小さなRAM容量でRAMベースのファイルシステムを実現することができます。

inside BusyBox

組込み概要

BusyBoxソースファイルのトップフォルダには,BusyBoxコマンド群をカテゴリー分類されたフォルダがあります。BusyBoxのコマンド群の個別のソースファイルはカテゴリー分類されたフォルダの下に存在します。BusyBoxではカテゴリー分類されたフォルダの下に存在するコマンド群の個別のソースファイルを統制下に置いていますが,その統制系統は単系統ではなく,以下に挙げるような主に4つの統制系統があります。

  • コンパイル構成設定系統
  • コンパイル実行系統
  • リンク系統
  • ヘルプテキスト系統

BusyBoxに新たにユーザ独自のアプリケーションプログラムを組込むにはこれら4つの統制系統に登録しなければなりません。

ユーザ独自のアプリケーションプログラムを組込むといってもBusyBoxで実際に統制を実行するファイルに対して直接に登録をするわけではありません。基本的にBusyBoxで実際に統制を実行するファイルは書き換えや更新をしてはいけないようになっています。BusyBoxに新たにユーザ独自のアプリケーションプログラムを組込むには,間接的に統制系統に登録しなければなりません。

コンパイル構成設定系統

BusyBoxはLinuxカーネルに準拠したかたちでLinuxカーネル再構築の設定に相当するコンパイル構成設定ができ,その構成設定によってどのコマンドや機能を組込むか,外すかを決めます。

トップフォルダにあるConfig.inというファイルに構成設定のメニューを記述します。ただし,BusyBoxのコマンド群の個別のソースファイルはカテゴリー分類されたフォルダのなかにあるコマンドの構成設定は,フォルダ内の構成設定のメニューに任されていますので,トップフォルダにあるConfig.inではカテゴリー分類されたフォルダ内にあるConfig.inを指定するようになっていますリスト1)⁠

リスト1

〈前略〉
comment "Applets"

source archival/Config.in
source coreutils/Config.in
source console-tools/Config.in
source debianutils/Config.in
source editors/Config.in
source findutils/Config.in
source init/Config.in
source loginutils/Config.in
source e2fsprogs/Config.in
source modutils/Config.in
source util-linux/Config.in
source miscutils/Config.in
source networking/Config.in
source printutils/Config.in
source mailutils/Config.in
source procps/Config.in
source runit/Config.in
source selinux/Config.in
source shell/Config.in
source sysklogd/Config.in

コンパイル構成設定のメニューはカテゴリー分類されたフォルダ内で構成設定のメニューを記述します。

実際にコンパイル構成設定メニューを決定するファイルはカテゴリー分類されたフォルダ内の Config.in となりますが,このファイルは書き換えや更新が禁止されており,Config.src という別のファイルにカテゴリー分類されたフォルダ内コンパイル構成設定メニューを記述し,Config.in は自動生成させるようにします。

著者プロフィール

みついわゆきお

1986年日立製作所入所,その3年後に自社ワークステーションでの開発業務をきっかけにBSDを経てLinux利用を始める。

1991年日立を退社し,その後,ボランティアでLinux関連ツールの整備と開発しながらWindows否定運動およびLinux普及運動を開始し,Linuxディストリビューション草創期にはPlamoLinuxのメンテナンスにもかかわる。

2001年ごろより非営利ベースでボードコンピュータの開発を開始し,やがて,無償によりハードとソフトを開発したH8マイコンボードの販売を秋月電子にて開始した。

現在,ボードコンピュータ用基本ソフトMES2.5や,SHプロセッサ向けLinuxパッチおよびTOPPERS/JSPパッチを無償で一般に提供しながら,ティーエーシーやエムイーシステムより原価率100%を目標(ただし,販売店の営業・販売費用や開発・製造の際の差損を除く)としたSuperHボードコンピュータを販売中。

また,現在でも頑固にMS社否定及びWindows撲滅運動に邁進中。

コメント

コメントの記入