2012年5月22日火曜日

uhttpd option index_pageの複数のファイル名への対応

最初は/etc/config/uhttpdの設定ファイルを変更してrestartさせたり、/etc/init.d/uhttpdの起動スクリプトを変更してみたり右往左往していましたが、根本的な原因がわかってからコンパイルができるようになるまでにかなりの時間を要しましたが、実際に修正して対応するまでには約1日程度。
動作確認できるようになるまでに数時間という感じで手間はかかりましたがようやく満足できる内容になりました。

そもそもwebサーバーのインデックスページの指定が内部だと4つ持っているのに指定は1つとかかなり作りはマニアックな雰囲気なサーバーですね(笑)

修正方針としては
・暫定的なテストプログラムでc言語の動作確認。
・実際に作ったコードを組み込む作業。
・コンパイル/テスト
の3段階。

意外とネックなのが最後の段階で、現状VMからどうやってファイルを転送すればよいかということ。

最初は単純にVM側でftpサーバーなりwebサーバーを動かせばいいかなとおもったのですが、VirtualBoxでこれを行おうとするとそれなりに面倒なことになってそうでした。
ifconfigで見てみるとIPアドレスが10. で始まっているという。
びっくりしたのですが、どうやらViurtualBoxがルータとなってVMにはその内部LANで動作するという形になっているようです。いくつか設定方法があるのですがよくわからず。
ブリッジとかならうまく表に出てくるのかな?(→普通のPCと同じようにIPアドレスを取得して振舞うようになりました(笑))

コンパイル/テストは実際に動作させてるのですが。最初は出来上がった実行ファイルだけ入れればいいかなと思ってたんですが、実行ファイルがどこに作成されるのかがわからないという(笑)

結果 make で全部をコンパイルして
siriuth@ubntu-VirtualBox:~/dev/openwrt/backfire_10.03.1$ make
 make[1] world
 make[2] target/compile
 make[3] -C target/linux compile
 make[2] package/cleanup
 make[2] package/compile
 make[3] -C package/iproute2 compile
 make[3] -C package/6in4 compile
 make[3] -C package/6to4 compile
 make[3] -C package/wireless-tools compile
 make[3] -C package/acx compile
 make[3] -C package/arptables compile
 make[3] -C package/opkg host-compile
 make[3] -C package/base-files compile
 make[3] -C package/hotplug2 compile
 make[3] -C package/block-mount compile
 make[3] -C package/block-extroot compile
 make[3] -C package/linux-atm compile
 make[3] -C package/br2684ctl compile
 make[3] -C package/bridge-utils compile
 make[3] -C package/busybox compile
 make[3] -C package/button-hotplug compile
 make[3] -C package/libpcap compile
 make[3] -C package/ppp compile
 make[3] -C package/comgt compile
 make[3] -C package/compcache compile
 make[3] -C package/libnl-tiny compile
 make[3] -C package/iw compile
 make[3] -C package/mac80211 compile
 make[3] -C package/crda compile
 make[3] -C package/libtool compile
 make[3] -C package/cyassl compile
 make[3] -C package/dnsmasq compile
 make[3] -C package/dropbear compile
 make[3] -C package/e2fsprogs compile
 make[3] -C package/ead compile
 make[3] -C package/ebtables compile
 make[3] -C package/fconfig compile
 make[3] -C package/iptables compile
 make[3] -C package/firewall compile
 make[3] -C package/fuse compile
 make[3] -C package/ncurses compile
 make[3] -C package/libreadline compile
 make[3] -C package/gdb compile
 make[3] -C package/gpioctl compile
 make[3] -C package/hostap-driver compile
 make[3] -C package/hostap-utils compile
 make[3] -C package/libipfix compile
 make[3] -C package/wprobe compile
 make[3] -C package/madwifi compile
 make[3] -C package/hostapd compile
 make[3] -C package/hostapd compile
 make[3] -C package/hostapd compile
 make[3] -C package/hostapd compile
 make[3] -C package/hostapd compile
 make[3] -C package/hostapd compile
 make[3] -C package/i2c-gpio-custom compile
 make[3] -C package/ifenslave compile
 make[3] -C package/ipset compile
 make[3] -C package/lua compile
 make[3] -C package/iwinfo compile
 make[3] -C package/kernel compile
 make[3] -C package/zlib compile
 make[3] -C package/kexec-tools compile
 make[3] -C package/libjson-c compile
 make[3] -C package/libnl compile
 make[3] -C package/libubox compile
 make[3] -C package/mmc_over_gpio compile
 make[3] -C package/uci compile
 make[3] -C package/mountd compile
 make[3] -C package/mtd compile
 make[3] -C package/nvram compile
 make[3] -C package/ocf-crypto-headers compile
 make[3] -C package/openssl compile
 make[3] -C package/opkg compile
 make[3] -C package/resolveip compile
 make[3] -C package/pptp compile
 make[3] -C package/px5g compile
 make[3] -C package/qos-scripts compile
 make[3] -C package/relayd compile
 make[3] -C package/robocfg compile
 make[3] -C package/siit compile
 make[3] -C package/spi-ks8995 compile
 make[3] -C package/spidev_test compile
 make[3] -C package/swconfig compile
 make[3] -C package/uboot-envtools compile
 make[3] -C package/udev compile
 make[3] -C package/udevtrigger compile
 make[3] -C package/uhttpd compile
 make[3] -C package/util-linux-ng compile
 make[3] -C package/w1-gpio-custom compile
 make[2] package/install
 make[3] -C package/base-files install
 make[3] -C package/busybox install
 make[3] -C package/button-hotplug install
 make[3] -C package/crda install
 make[3] -C package/dnsmasq install
 make[3] -C package/dropbear install
 make[3] -C package/firewall install
 make[3] -C package/hostapd install
 make[3] -C package/hostapd install
 make[3] -C package/hostapd install
 make[3] -C package/hostapd install
 make[3] -C package/hostapd install
 make[3] -C package/hostapd install
 make[3] -C package/hotplug2 install
 make[3] -C package/iptables install
 make[3] -C package/iw install
 make[3] -C package/kernel install
 make[3] -C package/libnl-tiny install
 make[3] -C package/mac80211 install
 make[3] -C package/mtd install
 make[3] -C package/opkg install
 make[3] -C package/ppp install
 make[3] -C package/swconfig install
 make[3] -C package/uci install
 make[3] -C package/udevtrigger install
 make[3] -C package/wireless-tools install
 make[2] package/rootfs-prepare
 make[3] package/preconfig
 make[2] target/install
 make[3] -C target/linux install
 make[3] -C target/sdk install
 make[3] -C target/imagebuilder install
 make[3] -C target/toolchain install
 make[2] package/index
出来上がった 最低限のファイルをftpサーバーに入れて(これも即席でfilezillaでftpサーバーを動かして(笑))/etc/opkg.confの設定を変えてopkg update。そこからopkg install uhttpd --force-reinstallで強制的にアップデートをかけてから/etc/init.d/uhttpd restartで再起動とかやってみました。(opkgのコマンドラインヘルプを見ると-o とか --offile-root で指定すればパッケージファイルから直接インストールもできそうですが、よくわからない…)


0 件のコメント:

コメントを投稿