連載
» 2008年11月10日 00時00分 公開

組み込み機器にBusyBoxとuClibcを導入しよう【後編】いますぐ使える! BusyBox活用術(5)(3/3 ページ)

[宍道 洋 busybox同好会,@IT MONOist]
前のページへ 1|2|3       

(3)テスト用のページとCGIの作成とWebサーバの実行

 それでは、次にコンテンツを作成して、Webサーバの動作確認をしてみましょう。

 以下のようなページとCGIを作成してください。ページ上に「Hello BusyBox!」という文字列を表示し、その文字列のリンクをクリックするとBusyBoxのUsageを表示するようにします。


<html>
<body>
<h1><a href="cgi-bin/busybox.cgi">Hello BusyBox!</a></h1>
</body>
</html> 
/var/www/index.html

#!/bin/sh
echo Content-type: text/plain
echo
busybox 
/var/www/cgi-bin/busybox.cgi

 HTMLとCGIが完成したら、以下のように“busybox.cgi”に実行権限を付け、その後、「httpd」を起動してください。これでWebサーバが起動します。

# chmod +x /var/www/cgi-bin/busybox.cgi
# httpd -h /var/www 

 それでは、ホスト側でブラウザを起動して、

http://OBS266のIPアドレス/

を表示してみましょう(画面1)。

BusyBoxのhttpdでのページ表示 画面1 BusyBoxのhttpdでのページ表示

 いかがですか、「Hello BusyBox!」が表示されましたか?

 この文字列のリンクをクリックすると、CGI中のbusyboxが動作してBusyBoxのUsageが表示されるはずです(画面2)。

BusyBoxのhttpdでのCGI表示 画面2 BusyBoxのhttpdでのCGI表示

 なお、このWebサーバをOBS266の起動時から動作させておくには、「/etc/init.d」ディレクトリの下に“S60httpd”のように名前の先頭が“S”で始まる以下の内容のスクリプトを用意するか、

#!/bin/sh
/usr/sbin/httpd -h /var/www 

 もしくは、“/etc/inittab”を以下のように編集する必要があります。

(中略)
# Startup the system
null::sysinit:/bin/mount -o remount,rw /
null::sysinit:/bin/mount -t proc proc /proc
null::sysinit:/bin/mount -a
null::sysinit:/bin/hostname -F /etc/hostname
null::sysinit:/sbin/ifconfig lo 127.0.0.1 up
null::sysinit:/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
null::sysinit:/usr/sbin/httpd -h /var/www ←追加
# now run any rc scripts
::sysinit:/etc/init.d/rcS
(中略) 

設定ファイルの保存

 ここまでの解説で設定・作成したファイルは、このままOBS266を終了すると消えてしまいます。本稿の締めくくりとして、Flash ROMの設定ファイル保存領域へこれらのファイルを保存する方法を紹介します。

 保存するファイルのリストは“/etc/flashcfg”に記述されており、これを「flashcfg」コマンドの引数として渡して実行し、保存します。まず、この“/etc/flashcfg”のリストに不足しているファイルを追加します(注6)。

/etc/flashcfg
/etc/fstab
/etc/group
/etc/hostname
/etc/hosts
/etc/inittab
/etc/network/interfaces
/etc/passwd
/etc/securetty
/etc/shadow
/etc/httpd.conf ←Webサーバの設定ファイル
/etc/init.d/S60httpd ←Webサーバの起動スクリプト
/var/www ←Webコンテンツ一式 
※注6:Webコンテンツ全体のサイズが大きく、設定ファイル保存領域に格納し切れない場合は、ファームウェア構築時にファイルシステムを作成するときに使うディレクトリ、「buildroot/project_build_powerpc/uclibc/root」以下にコンテンツを配置して、再度「make」を実行すると、Webコンテンツをファームウェアに含ませることができます。


 そして、以下のコマンドを実行すると、指定されたファイルが圧縮され、設定ファイル保存領域に格納されます。

# flashcfg -s /etc/flashcfg
tar: removing leading '/' from member names
var/www/
var/www/index.html
var/www/cgi-bin/
var/www/cgi-bin/busybox.cgi
etc/init.d/S60httpd
etc/httpd.conf
etc/shadow
etc/securetty
etc/passwd
etc/network/interfaces
etc/inittab
etc/hosts
etc/hostname
etc/group
etc/fstab
etc/flashcfg
Save files to FlashROM
#
done
# 

 これでOBS266を終了しても、起動時のファイルシステムマウント後に保存したファイルが展開・上書きされ、有効になります。



 前回と今回の2回にわたり、BusyBox+uClibcをOBS266に組み込んで、BusyBoxの「httpd」によるWebサーバを構築する方法を説明してきました。ほかにもBusyBoxでDNSサーバやDHCPサーバなども構築できますので、挑戦してみてください。

 次回は、BusyBoxに対して新規にアプレット(BusyBoxの個々のコマンド機能)を追加する方法などについて解説します。(次回に続く)

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.