組み込み機器にBusyBoxとuClibcを導入しよう【後編】:いますぐ使える! BusyBox活用術(5)(3/3 ページ)
BusyBox+uClibcによるWebサーバを動かすためのファームウェアを実際にOpenBlockS266に書き込んでWebサーバを動作させる。
(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)。
いかがですか、「Hello BusyBox!」が表示されましたか?
この文字列のリンクをクリックすると、CGI中のbusyboxが動作してBusyBoxのUsageが表示されるはずです(画面2)。
なお、この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コンテンツ一式
そして、以下のコマンドを実行すると、指定されたファイルが圧縮され、設定ファイル保存領域に格納されます。
# 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の個々のコマンド機能)を追加する方法などについて解説します。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.