連載
» 2008年10月10日 00時00分 UPDATE

いますぐ使える! BusyBox活用術(4):組み込み機器にBusyBoxとuClibcを導入しよう【前編】 (1/2)

BusyBox+uClibcの効能をさらに理解するために、ぷらっとホーム社の「OpenBlockS266」を用いて実際にWebサーバを構築する。

[宍道 洋 busybox同好会,@IT MONOist]

 前回「スリムな相棒『uClibc』をBusyBoxで使ってみよう」では、BusyBoxとセットで使われる組み込みCライブラリ「uClibc」について解説するとともに、デスクトップPC向けLinuxで使用われる標準Cライブラリ「glibc」との違いについて触れました。

 今回はBusyBox+uClibcの効能をさらに理解するために、“実際にBusyBoxとuClibcを組み込み機器に導入し、Webサーバを構築”していきたいと思います。なお、Webサーバの構築までの具体的な手順を解説していくと、かなりのボリュームになってしまいますので、前編・後編に分けて解説していくことにします(ご了承ください)。

 それでは前編の解説をはじめます。

BusyBoxを組み込む機器は?

 “BusyBoxとuClibcを組み込む”といっても、まずは実際に組み込む機器を選定しなければなりません。

 いろいろと候補はあると思いますが、今回は価格面と扱いやすさから、ぷらっとホーム社の「OpenBlockS266(以下、OBS266)」を採用することにします。

OpenBlockS266 参考画像 OpenBlockS266(出典:ぷらっとホーム社)

 このOBS266は、アプライアンス開発用途向けに2003年から販売されているロングセラーの「マイクロサーバ」です。現在の(注1)主なハードウェア仕様は以下のとおりです。

  • CPU:IBM PowerPC 405GPr 266MHz
  • メモリ:128MB
  • Flash ROM:16MB

※注1:発売開始当初はメモリ:64MB、Flash ROM:8MBでした。


 上記の仕様をよく見てください(お気付きですかね?)。連載第1回から第3回までの解説では、ARM用のクロスコンパイル環境を例にお話を進めてきたのですが、OBS266のCPUは意表をついて“PowerPC”です。ARMを期待していた方、スイマセン!

 OBS266は、HDDやCFカードなどをストレージとして搭載できますが、Flash ROMにファームウェアとして書き込まれているOSだけでもサーバとして十分動作させることが可能です。OBS266に搭載されているOSは、「SSD/Linux」というぷらっとホーム社オリジナルOSで、以下のような仕様になっています(原稿執筆時点)。

  • Linuxカーネル:2.6.16
  • ライブラリ:glibc 2.3.6

 このSSD/Linuxは、一般のディストリビューションで使われているようなそれぞれが独立したバイナリのコマンドを(厳しいサイズ制限をクリアするため)厳選して組み込んでいるので、本連載の主役であるBusyBoxは使われていません。

 これはつまり、これから実機にBusyBoxを導入してみたいという方にとっては、うってつけの環境だということです。というわけで(繰り返しになりますが)、この環境にBusyBoxとuClibcを導入し、Webサーバを構築してしまおうというのが今回の趣旨です。

 前編では、LinuxカーネルやBusyBoxの設定を中心に、ファームウェア構築までを紹介します。

関連リンク:
ぷらっとホーム
OpenBlockS266

OBS266用ファームウェアを作る準備

 Flash ROMには、Linuxカーネル+ファイルシステムイメージがファームウェアとしてあらかじめ書き込まれています。起動シーケンスは図1のようになっており、電源投入後、「ROM Monitor(注2)」によってこのLinuxカーネルがメモリ上に展開されて起動し、その後ファイルシステムイメージを読み込んでルートとしてマウントします。

OBS266の起動シーケンス 図1 OBS266の起動シーケンス
※注2:ROM Monitorとは、機器の初期化や設定、およびプログラムのロードや実行、デバッグなどをサポートするプログラムのことです。OBS266では通常ブートローダとして動作しますが、基板上のディップスイッチの設定を変更することで、ブートローダ以外の機能を利用することも可能です。


 連載第1回「BusyBoxをクロスコンパイルする環境を構築しよう」と、連載第3回「スリムな相棒『uClibc』をBusyBoxで使ってみよう」で使用したクロスコンパイル環境を構築する「Buildroot」は、ターゲットのLinuxカーネルやBusyBox、そのほかのツール・ライブラリを含んだファイルシステムイメージを構築できますが、オリジナルのBuildrootのままではOBS266用のファームウェアを構築できません。

 OBS266用のファームウェアを作成するためには、Buildrootが構築したLinuxカーネルとファイルシステムイメージを組み合わせて別途作成する必要があります。さらに、Linuxカーネル自体も「Vanillaカーネル(注3)」ではOBS266で動作しませんので、開発元のぷらっとホーム社が配布しているパッチを適用する必要があります。また、OBS266専用ツール(Flash ROMの読み書きで使用する「flashcfg」コマンドなど)もいくつか存在するため、これらもコンパイルして組み込む必要があります。

※注3:www.kernel.orgでソースコードが配布される公式のLinuxカーネルです。


 うーん。これらをいちいち個別に作業するのは非常に面倒です……。というわけで、今回は自動的にOBS266用カーネルパッチを適用して、OBS266専用ツールおよびファームウェアの構築まで行えるようにしたBuildrootのパッチ「buildroot-monoist.patch.gz」を筆者が用意しました。これを以下のリンクからダウンロードして利用してください。



 なお、筆者が用意したパッチ(buildroot-monoist.patch.gz)に対応するオリジナルのBuiildrootは、「buildroot-20080920.tar.bz2」です(注4)。こちらのオリジナルのソースコードも以下のリンクからダウンロードしてください。



※注4:将来、Buildrootのダウンロードサイトから削除されてしまうので、別サイトに保管しています。


 続いて、Linuxカーネル構築用の設定ファイルが必要になりますので、OBS266用のカーネル設定ファイル「dot.config.powerpc-obs266」をぷらっとホーム社のFTPサーバからダウンロードしてください。



 以上のファイルをすべてダウンロードしたら、作業用ディレクトリにオリジナルのBuiildrootのファイル「buildroot-20080920.tar.bz2」を展開し、展開したBuiildrootのディレクトリに移動してパッチ「buildroot-monoist.patch.gz」を当てます(注5)。

$ tar jxf buildroot-20080920.tar.bz2
$ cd buildroot
$ zcat ../buildroot-monoist.patch.gz | patch -p1 
※注5:すでに「buildroot」ディレクトリがある場合、ファイルの展開の際に上書きされてしまうため、古い方のディレクトリ名を変更するなど事前にご自身で対処しておいてください。


 これで、ファームウェアを構築する環境の準備が整いました。

       1|2 次のページへ

Copyright© 2018 ITmedia, Inc. All Rights Reserved.