code:Haemophilus influenzae |
ここに書かれていることは無保証です。同じことを行って問題が発生しても、
龍義は責任をとりません。 |
2003年9月 2003年10月 2003年11月 2003年12月 2004年1月 アイコンの説明 |
2/1 なんとなく keroppy を試す。あっさり CF の読み込みが可能になってしまった。 ちょっとびっくり。現在 CF は fat16 であったので、とりあえず ext2 で フォーマットしなければならないのだけど、このフォーマットをどうやって やろうかと悩む。色々やってみたのだけど、結局のこの Profile に knoppix を 入れて起動し、そこでフォーマットして色々とダウンロードをしたものを入れた。 ついでに、負荷テスト。 cat /dev/zero > /dev/null などやって、 top で CPU の負荷が 100% なのを確認して、30分ほど放置した。 ヒートシンクは、だいぶ暖かくなったが、熱いというほどでもない。これなら なんとか CPU ファンなしでもいけそうである。 2/3 cygwin 環境に postgresql をインストールした。 まずは、昔のメモを見ながら。 とりあえず、 cygwin の setup.exe を実行して、 postgresql をインストールした。 mkdir /usr/local/pgsql mkdir /usr/local/pgsql/data initdb /usr/local/pgsql/data 昔やったときと少し違うが、予想通りエラーが出る。 > initdb /usr/local/pgsql/data The files belonging to this database system will be owned by user "toyota". This user must also own the server process. The database cluster will be initialized with locale C. fixing permissions on existing directory /usr/local/pgsql/data... ok creating directory /usr/local/pgsql/data/base... ok creating directory /usr/local/pgsql/data/global... ok creating directory /usr/local/pgsql/data/pg_xlog... ok creating directory /usr/local/pgsql/data/pg_clog... ok selecting default max_connections... 10 selecting default shared_buffers... 50 creating configuration files... ok creating template1 database in /usr/local/pgsql/data/base/1... FATAL: could not create shared memory segment: Function not implemented DETAIL: Failed system call was shmget(key=1, size=1081344, 03600). initdb: failed なので、 cygipc のインストール。 http://www.neuro.gatech.edu/users/cwilson/cygutils/cygipc/index.html から cygipc-2.00.tar.bz2 をダウンロードしてきて、解凍。 make を実行すると > make 〜snip〜 gcc -Wall -g -mwin32 -O2 -pipe -mcpu=i586 -fno-strength-reduce -falign-loops=2 -falign-jumps=2 -falign-functions=2 -DVERSION_NUM=2.00 -I./include -I. -c -o ipc-daemon.o ipc-daemon.c ipc-daemon.c:66:18: popt.h: No such file or directory 〜snip〜 らしい。 find /usr/include -name popt.h find ./ -name popt.h とやっても見つからない。再び cygwin の setup.exe を実行して、 popt 周りが インストールされているか確認する。libpopt はインストールされていたようであるが、 popt はインストールされていないようなので、インストールした。 これで再び make した。ちょっと warning が出た気もしたが、 make 完了。 make install でインストールした。 /usr/local/bin/ipc-daemon -q & と実行して、さっきの続きを行う。 rm -rf /usr/local/pgsql/* initdb /usr/local/pgsql/data The files belonging to this database system will be owned by user "toyota". This user must also own the server process. The database cluster will be initialized with locale C. fixing permissions on existing directory /usr/local/pgsql/data... ok creating directory /usr/local/pgsql/data/base... ok creating directory /usr/local/pgsql/data/global... ok creating directory /usr/local/pgsql/data/pg_xlog... ok creating directory /usr/local/pgsql/data/pg_clog... ok selecting default max_connections... 100 selecting default shared_buffers... 1000 creating configuration files... ok creating template1 database in /usr/local/pgsql/data/base/1... ok initializing pg_shadow... ok enabling unlimited row size for system tables... ok initializing pg_depend... ok creating system views... ok loading pg_description... ok creating conversions... ok setting privileges on built-in objects... ok creating information schema... ok vacuuming database template1... ok copying template1 to template0... ok Success. You can now start the database server using: /bin/postmaster -D /usr/local/pgsql/data or /bin/pg_ctl -D /usr/local/pgsql/data -l logfile start うまくいきました。 > /bin/postmaster -D /usr/local/pgsql/data LOG: shmdt(0x13d0000) failed: Invalid argument LOG: database system was shut down at 2004-02-03 16:12:36 LOG: checkpoint record is at 0/9DE7C8 LOG: redo record is at 0/9DE7C8; undo record is at 0/0; shutdown TRUE LOG: next transaction ID: 534; next OID: 17142 LOG: database system is ready 一応、動いているみたい。Invalid argument が気になるけど、見なかったことに。 2/4 16port のスイッチを買う。10Base だけど 1280円。実験用のネットワークを 作ろうかと考えている。 2/5 昨日の今日で、今日は通販で 16port のスイッチを買う。さすがに今回は、 100Base-TX 。今月末に IP が増えたときのネットワーク構成をどうしようか 考え中。 2/7 floppyfw ベースのフロッピーに作成した Linux 2.4.24 の kernel を入れて、 カードの認識をさせるテスト。 module は使用しない。ので、別のフロッピーに cardmgr を入れて、起動後に fd をマウントさせてやってみた。 cardmgr[132]: chdit to /etc/pcmcia failed: No such file or directory と。/etc/pcmcia を作成しても、今度は config ファイルがないと、エラーが 出たので、Linux マシンから、 /etc/pcmcia/config /etc/pcmcia/config.opts /etc/pcmcia/ide /etc/pcmcia/ide.opts /etc/pcmcia/shared をコピーして、再度やってみた。うまく、認識されて、 CF の製造元である HITACHI の表示も出た。しかし、それぞれのスクリプトから /sbin/fuser /sbin/ide_info /usr/sbin/updfstab コマンドを呼んでいるようで、エラーがポロポロでる。気にしないで、 mount して みた。 # mount /dev/hda1 /mnt hda: hda1 hda: hda1 EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended うまく mount されたようである。これで CF 内のファイルが読めるようになった。 さて、この先、どのように、と言うか、どこまでやろうかな。 2/8 昨日の続き。まず、 /etc/pcmcia/config の不要な部分を削除して、ファイルの サイズを小さくした。ファイルの中身は、下記のような感じになった。これは、 起動途中でカードの抜き差しをしないという前提でいじっている。 device "ide-cs" class "ide" module "ide-cs" card "ATA/IDE Fixed Disk" function fixed_disk bind "ide-cs" source ./config.opts こんな感じで、 /etc/pcmcia/config.opts も綺麗にした。 include port 0x100-0x4ff, port 0xc00-0xcff include memory 0xc0000-0xfffff include memory 0xa0000000-0xa0ffffff, memory 0x60000000-0x60ffffff exclude irq 12 次は /etc/pcmcia/ide 。これもざっくり。 #!/bin/sh if [ -r ./shared ] ; then . ./shared ; else . /etc/pcmcia/shared ; fi # Get device attributes get_info $DEVICE if [ ! -b /dev/$DEVICE ] ; then log mknod /dev/$DEVICE b $MAJOR $MINOR for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do minor=`expr $part + $MINOR` log mknod /dev/${DEVICE}$part b $MAJOR $minor done fi exit 0 最後は /etc/pcmcia/shared 。 grep_stab () { # this should be cheaper than invoking "grep" local CLASS DEV while read SOCKET CLASS DRIVER INSTANCE DEV MAJOR MINOR ; do if [ "$1" = "$DEV" ] ; then return 0 ; fi done return 1 } get_info () { STAB=/var/run/stab SCHEME=`cat /var/run/pcmcia-scheme` if [ -z "$SCHEME" ] ; then SCHEME="default" ; fi grep_stab $1 < $STAB || exit 1 } f [ $# -lt 2 ] ; then usage ; fi ACTION=$1 ; DEVICE=$2 ; NEW_SCHEME=$3 これで、pcmcia 周りのエラーは消えた。こんな感じで、 /config /hosts /network.ini /syslinux.cfg /floppyfw/floppyfw.ini を作り直し。 firewall.ini は削除。 /floppyfw/add.bz2 に /etc/pcmcia 周りの ファイルと、 cardmgr を入れて、 iptable を削除。modules と packages 以下を 削除して、この2つを呼んでいる /floppyfw/floppyfw.ini も削除。これで、起動。 エラーが1つ出た。 /etc/network.init: 75: cannot create /proc/sys/net/ipv4/tcp_syncookies: Directory nonexistent だそうだ。問題の場所は echo 1 > /proc/sys/net/ipv4/tcp_syncookies で、ちょっと調べたら kernel を作成するときに CONFIG_SYN_COOKIES を有効にしなければならないらしい。とりあえず、この行を削除して、後で問題が あったら、 kernel を作り直そうかと。あとは initrd の容量を大きくした。 kernel 作成時には 16M に指定してあったので、とりあえず 16M にして作り直し。 # cd /tmp # dd if=/dev/zero of=tmp.img count=32768 # mke2fs -F -m 0 tmp.img # mkdir /mnt/test2 # mount -o loop tmp.img /mnt/test2 # cp /mnt/fd/initrd.gz ./ # gunzip initrd.gz # mkdir /mnt/test3 # mount -o loop initrd /mnt/test3 # cd /mnt/test3 # cp -p -r * /mnt/test2/ # umount /mnt/test2 # umount /mnt/test3 # cd /tmp # rm initrd # mv tmp.img initrd # gzip initrd # cp initrd /mnt/fd/ これで、良い感じになったので、後は CF に bind なり sshd を入れて、起動できる ようにする。 2/9 OpenBSD 3.4 の patch 当て。 011: SECURITY FIX: February 8, 2004 010: SECURITY FIX: February 5, 2004 009: SECURITY FIX: January 13, 2004 2/10 initrd の作り直しをした。16M に変更するので、新しいファイルの作成。 # dd if=/dev/zero of=newinitrd count=32768 # mke2fs newinitrd # mkdir /mnt/newinitrd # mount -o loop newinitrd /mnt/newinitrd 古い initrd の内容をコピー。 # gunzip initrd.gz # mkdir /mnt/initrd # mount -o loop initrd /mnt/initrd # cp -p -r /mnt/initrd/* /mnt/newinitrd/ これから、ファイル/ディレクトリの追加と削除をしていく。 # rm -rf /mnt/newinitrd/lib/iptables ... 編集が終了したら、 unmount して、圧縮する。 # umount /mnt/newinitrd # gzip newinitrd できたファイルをコピーして、完了。実際には、何度かこの作業を繰り返した。 # cp newinitrd.gz /mnt/test/initrd.gz 同じように add.bz2 も作成しなおし。こちらは、ただの tar ファイルなので、 mount 作業などは必要ない。 /tmp を ram disk にするため、 mke2fs をダウンロードしてきた。floppyfw の package として配付されている。これを、add.bz2 に入れる。まず、 add.bz2 の展開。 # mkdir /tmp/add # cd /tmp/add # tar xvfj /mnt/test/floppyfw/add.bz2 次に、 mke2fs の package の展開と、コピー。 # cd /tmp # tar xvfj mk2efs.bz2 # cp bin/mke2fs /tmp/add/bin # cp lib/* /tmp/add/lib # cd /tmp/add/lib # ln -s libcom_err.so.2.0 libcom_err.so.2 # ln -s libext2fs.so.2.4 libext2fs.so.2 これで、 add.bz2 を作成。の前に、ちょっと細工。 # cd /tmp/add # rm tmp # mkdir tmp # cd /tmp/add/var # rm tmp # ln -s /tmp tmp これで、add.bz2 の作成。 # cd /tmp/add # tar cvf /tmp/add * # bzip2 /tmp/add # cp /tmp/add.bz2 /mnt/test/floppyfw/ 自動的に ram disk を作成するように、 /mnt/test/floppyfw/floppyfw.ini に 以下を追加した。 /bin/mke2fs /dev/ram 16384 mount /dev/ram1 /tmp これで、 /tmp が 16M の ramdisk となった。最初は難しいと思っていたが、 やってしまうと大したことがない。 2/11 sshd をインストールしたいが、その前にとりあえず、 telnetd を動かすことに した。で、色々探していたら、 busybox には inetd の機能と telnetd の機能、 さらに login 周りの機能も付いているようなので、インストールすることにした。 どうやら httpd まで付いているらしい。 http://www.busybox.org/ より最新版の busybox をダウンロードした。使うのは stable 版ではなく、pre 版。10/2/04 時点で最新は 1.00-pre7 のバージョン。 これを Linux マシン(ia32)で compile した。 # cd /tmp # tar xvfj busybox-1.00-pre7.tar.bz2 # cd busybox-1.00-pre7 どうも configure が無いみたいだし、前のバージョンのように Config.h も 無い。とりあえず、 make を叩いてみる(というか、文書読め)。 # make なんと、 Linux の Kernel を menuconfig で作成するときと同じような画面に なった。適当に使いそうなものを選んでいく。なんか、もの凄い数の機能があって、 少々驚き。 mount とかに loop デバイスを使うようなオプションがあるのだけど、 これは kernel が対応してないと駄目なんだろうな、と考えながら、一応、 動くようにしてみたり。 で、 compile 。の前に、一応、 backup をしてから make した。 # cp .config .config.040210 # make なんなくできあがった。 httpd とか wget とか、色々追加したので、 strip しても 900k ぐらいになってしまった。が、気にしない。 で、 busybox の動作テスト。元々の busybox は /bin にあるので、そのままにして、 新しい busybox は /usr/bin に置いて、色々とリンクを作った。 # cd /usr/bin # ln -s busybox telnet # ln -s busybox inetd # ln -s busybox syslogd # ln -s busybox crond # ln -s busybox croontab それから、昨日インストールしてしまった tinylogin のリンクを削除。 # cd /usr/bin # rm tinylogin # rm getty # rm login # rm passwd # rm su # rm sulogin で、このコマンドを busybox にリンクした。 # ln -s busybox getty # ln -s busybox login # ln -s busybox passwd # ln -s busybox su # ln -s busybox sulog これで、用意はできた。 まず、 syslogd を起動した。問題なく動作した。log ファイルも /var/log/messages に 吐かれている。次は、 inetd の起動。の前に inetd.conf を作成するか、どこかから 取ってこないといけない。busybox を compile したマシンには inetd.conf なんて、 古めかしいものはないので、 SH4 の LAN-iCN2 からコピーした。これで、 inetd の 起動、問題なく起動しているようである。が、 inetd.conf を編集した後などに、 kill -HUP を inetd に投げると inetd が死んでしまう。毎回起動し直すのも、 結構面倒である。 この inetd.conf に busybox の telnetd を追加してやってみた。が、動かない。 busybox を実行したときと同じ画面が表示されて、接続が切れてしまう。telnetd を 直接実行すると、 login 画面が出るので問題なさそうなのだが、この login 画面が 出るときに、おかしなゴミが表示される。 inetd.conf を編集し直してみたりしたのだが、結局 source を見ることにした。色々と やっていくうちに、 inetd が buffer overflow していることが判明した。これを デバッグして compile し直しても良いのだけど、多分 telnetd を実行したときに 表示されるゴミも、 buffer overflow していると思われるので(確認していない)、 この先、まだまだ問題があるのでは、と心配なので、 busybox の pre 版を使うのは やめることにする。 別の telnetd と inetd を compile しようかと考えて、 netkit の source を ダウンロードしてきて、コンパイルしたのだけど、 libc のバージョンが違うので 動かない。このために cross compile の環境を作るのも面倒なので、 libc の 古いバージョンを使っていそうな Linux のディストリビューションの package を ダウンロードしてくることにした。古そうなのを使っている、でなんとなく vine が 思い浮かんだので、vine のサイトから vine 2.1 のバージョンの inetd と telnetd の package をダウンロードしてきた。ファイル名は inetd-0.16-7vl1.i386.rpm telnet-server-0.17.6x-18vl0.i386.rpm このダウンロードした package を rpm2cpio と cpio を使って中身を取り出して、 実行してみた。うまく動作しているようである。これで telnetd が動作するので、 リモートから環境構築できるようになった。 リモートから環境構築できるようになったので、開けていた裏ブタを付けて、棚に 置いて、運用することにした。が、キーボードが接続されていないと、起動しない。 bios を色々といじったのだけど、駄目。今度、安い10キーが売っていたら、それを 買って付けることにする。とりあえずは、接続してから起動することに。 2/12 vine の ntp の package をダウンロードしてきて、 ntpdate を取り出した。 そこで、 ntpdate を実行。えらい、時間が狂っている。計算したら、9時間。 time コマンドを実行したら、UTC で表示されているし、timezone の設定が できてないようなので、調べてみる。 どこかに時刻情報が格納されていると思って 他の Linux マシンの /etc を調べてみたら、 localtime というファイルがあった。 実際には、このファイルは /usr/share/zoneinfo/Asia/Tokyo にシンボリックリンク されていたのだが、この元となる Tokyo というファイルを Profile の /etc に コピーして、localtime と、ファイル名を変更した。これで、 time コマンドを 実行すると、ちゃんと JST という表示がされた。念のため、 ntpdate コマンドを 再度実行した。うまく動いているようである。 このファイル、73 バイトしかなくて、中身は binary data のようである。 他の国のファイルは、London が 1323 バイトなどとかなり大きいので、 summer time などの情報も格納されているみたいである。 2/15 445/TCP のものすごいアクセスがあったようで、1日に4000以上の不正なアクセスが 見られた。原因は、Welchia.B という virus のようである。Windows2000 の ソースも流出して、これからまた増えるんだろうな…。 2/17 BONA Computech の Light System Wireless レビュー。長くなったのと、 写真があるので、別ページにした。 2/18 cygwin 環境で Apache + PHP4 のインストール apache 1.3.29 を The Apache HTTP Server Projecte のページから ダウンロードしてきた。これを解凍して、make する。 # tar xvfz apache_1.3.29.tar.gz # cd apache_1.3.29 # ./configure --help 結構オプションがあるけど、実験環境なので、必要なオプションだけ付けた。 # ./configure --enable-module=so # make # make install 肝心の httpd がインストールされない。問題は、Makefile が httpd として 認識しているためで、インストールの際に cp でエラーが発生している。 これを httpd.exe のように拡張子を付けた形に対応するようにと思ったが 面倒なので、下のスクリプトを作成して、実行した。 #!/bin/sh cp ./src/httpd.exe /usr/local/apache/bin/httpd.exe strip /usr/local/apache/bin/httpd.exe chmod 755 /usr/local/apache/bin/httpd.exe cp ./src/support/ab.exe /usr/local/apache/bin/ab.exe strip /usr/local/apache/bin/ab.exe chmod 755 /usr/local/apache/bin/ab.exe cp ./src/support/checkgid.exe /usr/local/apache/bin/checkgid.exe strip /usr/local/apache/bin/checkgid.exe chmod 755 /usr/local/apache/bin/checkgid.exe cp ./src/support/htpasswd.exe /usr/local/apache/bin/htpasswd.exe strip /usr/local/apache/bin/htpasswd.exe chmod 755 /usr/local/apache/bin/htpasswd.exe cp ./src/support/htdigest.exe /usr/local/apache/bin/htdigest.exe strip /usr/local/apache/bin/htdigest.exe chmod 755 /usr/local/apache/bin/htdigest.exe cp ./src/support/logresolve.exe /usr/local/apache/bin/logresolve.exe strip /usr/local/apache/bin/logresolve.exe chmod 755 /usr/local/apache/bin/logresolve.exe cp ./src/support/rotatelogs.exe /usr/local/apache/bin/rotatelogs.exe strip /usr/local/apache/bin/rotatelogs.exe chmod 755 /usr/local/apache/bin/rotatelogs.exe 次は php のインストール。最新版の php-4.3.4.tar.bz2 を php の web page から ダウンロードしてきた。 # tar xvfj php-4.3.4.tar.bz2 # cd php-4.3.4 # ./configure --help えらい量のオプションが付けられる。というか、多すぎ。とりあえず、 日本語を使えるようにするのと、 apxs の指定をした。 # ./configure --with-apxs=/usr/local/apache/bin/apxs --enable-mbstring checking for gawk... gawk checking for bison... no checking for byacc... no configure: warning: You will need bison if you want to regenerate the PHP parsers. checking for flex... lex checking for yywrap in -ll... no checking lex output file root... ./configure: line 2425: lex: command not found configure: error: cannot find output from lex; giving up lex がないようである。ついでに byacc と bison もあった方がよさそうなので、 cygwin の setup.exe を実行して、 byacc, bison, flex のインストールを行った。 # ./configure --with-apxs=/usr/local/apache/bin/apxs --enable-mbstring 〜略〜 Configuring SAPI modules checking for AOLserver support... no checking for Apache 1.x module support via DSO through APXS... Sorry, I was not able to successfully run APXS. Possible reasons: 1. Perl is not installed; 2. Apache was not compiled with DSO support (--enable-module=so); 3. 'apxs' is not in your path. Try to use --with-apxs=/path/to/apxs The output of /usr/local/apache/bin/apxs follows apxs:Error: Sorry, no DSO support for Apache available apxs:Error: under your platform. Make sure the Apache apxs:Error: module mod_so is compiled into your server apxs:Error: binary `/usr/local/apache/bin/httpd'. configure: error: Aborting らしいので、 PATH に /usr/local/apache/libexec を追加して、再度行った。 httpd の起動に失敗するようである。エラーは、 [httpd エントリポイントが見つかりません] 「プロシージャエントリポイント _fcntl64 がダイナミックライブラリ cygwin1.dll から見つかりません。」 というもの。 uname -a を実行すると、 CYGWIN_NT-4.0 hogehoge 1.5.5(0.94/3/2) 2003-09-20 16:31 i686 unknown unknown Cygwin と出た。最新は 1.5.7 なので cygwin の setup.exe を実行して、最新にする。 が、結果は同じ。 uname の結果も同じなので、変だな、と思って、 /bin を 見ると cygwin1.dll cygwin1.dll.new なるものがあった。どうやら、 cygwin が起動中は置き換えられないようである。 つまり、cygwin の setup.exe を実行するときは、 cygwin の画面を落とせ、と いうことのようである。 cygwin1.dll を cygwin1.dll.old に置き換え、 cygwin1.dll.new を cygwin1.dll に 置き換えて、実行。問題なく実行できた。さて、 configure の続き。 使っている PentiumII 566 MHz のマシンでは configure 終了まで 21分18秒かかった…。 make も1時間近くかかった気がする。問題なく終了した。で、 make install を実行。 # make install Installing PHP CLI binary: /usr/local/bin/ Installing PHP CLI man page: /usr/local/man/man1/ Installing PHP SAPI module: apache apxs:Error: file libs/libphp4.so is not a DSO make: *** [install-sapi] Error 1 ちょっと調べたら、 module ができていないようであるので、作らなければならない。 それに、 module の拡張子は dll なので、 Makefile も書き換えないといけない。 とりあえず、 module の作成。 # cd libs # gcc -lcrypt -shared -o libphp4.dll -Wl,--out-implib=libphp4.dll.a -Wl,--export-all-symbols -Wl,--whole-archive libphp4.a /usr/local/apache/libexec/libhttpd.dll -Wl,--no-whole-archive Creating library file: libphp4.dll.a Info: resolving _ap_user_id by linking to __imp__ap_user_id (auto-import) Info: resolving _ap_group_id by linking to __imp__ap_group_id (auto-import) Info: resolving _ap_user_name by linking to __imp__ap_user_name (auto-import) Info: resolving _ap_max_requests_per_child by linking to __imp__ap_max_requests_per_child (auto-import) Info: resolving _ap_server_root by linking to __imp__ap_server_root (auto-import) Info: resolving _top_module by linking to __imp__top_module (auto-import) なにやら、表示されたようだが、 module はできたようなので、大丈夫でしょう。 次に、 Makefile の書き換え。libphp4.so の部分を libphp4.dll に書き換え。これで make install を実行した。 include ファイルを作成するのにえらい時間がかかったが、 問題なくインストールされたようである。 httpd.conf の編集。 # vi /usr/local/apache/conf/httpd.conf 追加したのは、下の1行のみ。 AddType application/x-httpd-php .php apache の実行。 # /usr/local/apache/bin/apachectl start httpd: bad user name nobody /usr/local/apache/bin/apachectl start: httpd could not be started あらら。追加することに。 # echo "nobody:*:1024:1024:::" >> /etc/passwd # echo "nogroup::1024:" >> /etc/group これで、再度起動。 # /usr/local/apache/bin/apachectl start [Thu Feb 19 16:12:59 2004] [warn] Apache does not support line-end comments. Consider using quotes around argument: "#-1" /usr/local/apache/bin/apachectl start: httpd started もう一度、httpd.conf の編集。 # vi /usr/local/apache/conf/httpd.conf group の部分がおかしいようであるので、 User nobody Group #-1 となっていたのを User nobody Group nogroup に変更した。 # /usr/local/apache/bin/apachectl start /usr/local/apache/bin/apachectl start: httpd started 今度は、奇麗に起動したようである。IE を起動して、動作しているか確認してみる。 http://127.0.0.1/ 駄目である。と、思ったが、思い出した。 http://127.0.0.1:8080/ で、見えるようになった。 httpd.conf の port 設定が 8080 になっていたのである。 これも、 80 に変更した。httpd はうまく動作しているようである。php の動作確認を してみる。 # echo "<?php phpinfo() ?>" > /usr/local/apache/htdocs/test.php これで、ブラウザからアクセスしてみた。 http://127.0.0.1/test.php おぉ。ちょっと感動。問題なく動作しているみたいである。次は、 php から postgresql にアクセス、と思ったが、今日はここまで。 2/19 buffalo BLR-TX4S のファーム解析をした。 MIPS の Linux のようである。面白そう。 2/20 floppyfw を入れた Profile に、色々とインストールをしたいのだが、kernel 2.4 + glibc 2.1.3 の環境がないので、コンパイルできなくて困っている。ふと、ひらめいて 昔の knoppix でできないかとダウンロードしようとしたのだけど、昔のバージョンの knoppix が見つからないし、家にあった knoppix V3.1(8/11/2002) は kernel 2.4.5 だけど、 libc のバージョンは 2.3.1 だし。どっかに同じ環境を作るか、 CD から起動できる ようなものを作るか、クロスコンパイルか、だな。困った。 2/21 dpkg のインストール。debian の deb ファイルを解凍するもの。source を debian のページからとってきた。コンパイルする。 # wget http://ftp.debian.org/debian/pool/main/d/dpkg/dpkg_1.9.21.tar.gz # tar xvfz dpkg_1.9.21.tar.gz # cd dpkg-1.9.21 # ./configure --help # ./configure --prefix=/usr/local # make 〜snip〜 ebiandoc2html -n -D. internals.sgml make[1]: debiandoc2html: コマンドが見つかりませんでした make[1]: *** [internals.html/index.html] エラー 127 make[1]: 出ます ディレクトリ `/home/toyota/src/dpkg/dpkg-1.9.21/doc' make: *** [all-recursive] エラー 2 なんか、エラーが出ているようだけど、本体はコンパイルできているようだったので 気にしないことにした。それにしても、コンパイル中に、何かを翻訳しているのだけど、 一体何を翻訳しているのだろう。 # strip main/dpkg # su 〜snip〜 # cp main/dpkg /usr/local/bin # cp dpkg-deb/dpkg-deb /usr/local/bin 2/22 floppyfw を入れた Profile 用の開発環境を作ろうと、色々調べたのだが、かなり 面倒なことがわかった。JF のGlibc2-HOWTO.txtを見ながら、やって みたのだが、コンパイルする度に gcc -s -nostdinc -nostdlib -I- -I/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include -I/usr/bespin/usr/include -I/usr/bespin/usr/include/linux -L/usr/bespin/lib -L/usr/bespin/usr/lib -lc /usr/bespin/lib/ld-2.1.3.so /usr/bespin/usr/lib/crti.o /usr/bespin/usr/lib/crt1.o /usr/bespin/usr/lib/crtn.o と指定しなければいけない。テストで小さめなプログラム(logrotate)でコンパイルを してみたのだが、かなり面倒だった。動いたには動いたけど。これが、 configure を 使った sshd などの大きなプログラムになると、とてつもなく面倒になる。それを 考えると、ちょっと躊躇してしまう。完全なクロスコンパイルの環境を作ったほうが 後々楽かもしれないな。 2/23 18日の作業の続き(cygwin + apache + php)。PHP のコンパイルのやり直し。 # ./configure --with-apxs=/usr/local/apache/bin/apxs --enable-mbstring --without-mysql --with-pgsql # make 52分かかった(涙)。 # cd libs # gcc -shared -o libphp4.dll -Wl,--out-implib=libphp4.dll.a -Wl,--export-all-symbols -Wl,--whole-archive libphp4.a /usr/local/apache/libexec/libhttpd.dll -Wl,--no-whole-archive -lcrypt すごいエラーが発生する。PostgreSQL 周りのエラーのようなので、ライブラリの指定を 追加してみた。 # gcc -shared -o libphp4.dll -Wl,--out-implib=libphp4.dll.a -Wl,--export-all-symbols -Wl,--whole-archive libphp4.a /usr/local/apache/libexec/libhttpd.dll -Wl,--no-whole-archive -lcrypt -lpq Creating library file: libphp4.dll.a Info: resolving _ap_user_id by linking to __imp__ap_user_id (auto-import) Info: resolving _ap_group_id by linking to __imp__ap_group_id (auto-import) Info: resolving _ap_user_name by linking to __imp__ap_user_name (auto-import) Info: resolving _ap_max_requests_per_child by linking to __imp__ap_max_requests_per_child (auto-import) Info: resolving _ap_server_root by linking to __imp__ap_server_root (auto-import) Info: resolving _top_module by linking to __imp__top_module (auto-import) うまくいったみたい。前回と同じように、少し Makefile をいじってから インストール。 # cd .. # vi Makefile # make install cp libs/libphp4.dll /usr/local/apache/libexec/libphp4.dll cp: cannot create regular file `/usr/local/apache/libexec/libphp4.dll': Permission denied apxs:Break: Command failed with rc=1 make: *** [install-sapi] Error 1 apache を起動していると、駄目なのかな。一度停止してみる。 # /usr/local/aoache/bin/apachectl stop # make install インストールが完了した。それと、 php.ini をコピーしなければならないみたい だが、コピーしないで、とりあえずやってみる。 # /usr/local/apache/bin/apachectl start C:¥cygwin¥usr¥local¥apache¥bin¥httpd.exe (264): *** unable to remap C:¥cygwin¥bin¥cygssl-0.9.7.dll to same address as parent(0x1060000) != 0x1070000 /usr/local/apache/bin/apachectl start: httpd could not be started 何故か起動しない。ちょっと調べてみたけど、解決はちょっと面倒そうだ。 全然進まない。 2/24 GATEWAY の Profile 用のクロスコンパイルの環境はあきらめて、 Linux 2.4.25 + libc 2.1.3 の環境を作成した。 swap が共通して使えるのと、稼働率が低かった 理由から、 G6-200[kessel] に環境を作成することにした。中に入っていた windows のデータ領域はざっくり消して、 Windows + Linux + Linux のトリプル ブートの環境。これを 6.4G のハードディスクでやっているのが、信じられない。 調べて、色々考えた結果、 debian version 2.2rev7(Potato) に kernel 2.4 を 入れることにした。早速、 the Internet から昔の iso イメージをダウンロードを してこようと検索したのだけど、見つからない。結局、昔の雑誌のおまけから インストールすることにした。 慣れないインストール画面に、少々手間取りながらも、インストールは順調に進んで、 apt でパッケージを インストールする前に、web からダウンロードしてインストールする、 というのを選んだ。それが間違いの始まり。無事インストール完了と思ったら、 kessel 2.2.19 + libc 2.3 という、元も子もない環境になってしまった。 # cat /etc/debian_version 3.0 だし。インストールのやり直し。は、明日にしよう。それにしても、apt-get の画面は いまいち使いづらい。 2/25 GATEWAY の Profile 用のクロスコンパイルの環境はあきらめて、 Linux 2.4 + libc 2.1.3 の環境を作成する。 swap が共通して使えるのと、稼働率が低かった 理由から、 G6-200[kessel] に環境を作成することにした。中に入っていた windows のデータ領域はざっくり消して、 Windows + Linux + Linux のトリプル ブートの環境。これを 6.4G のハードディスクでやっているのが、信じられない。 調べて、色々考えた結果、 debian version 2.2rev7(Potato) に kernel 2.4 を 入れることにした。早速、 the Internet から iso イメージをダウンロードを してこようと検索したのだけど、古すぎるようで見つからない。やっと探しあてた3つの ページからダウンロードして、それぞれのページの md5 値のファイルを何度も 確認した。さすがに古い OS + unofficial なページからダウンロードしてきたので。 慣れないインストール画面に、少々手間取りながらも、インストールは順調に進んで、 apt でパッケージを インストールする画面になった。web からダウンロードして インストールする、というのを選んだのだが、それが間違いの始まり。無事インストール 完了と思ったら、kessel 2.2.19 + libc 2.3 という、元も子もない環境になってしまった。 # cat /etc/debian_version 3.0 だし。インストールのやり直し。は、明日にしよう。それにしても、deslect の画面は いまいち使いづらい。 2/26 昨日の続き。インストールのやり直し。今回 apt は全て CD-ROM からインストール するようにした。おかげで、kernel は 2.2.19 だが、 libc は 2.1.3 と目的の バージョンである。ここで、 kernel を 2.4 にあげてみる。動くかどうかは少々 不安だけど。 さっそく、いつの間にか kernel 2.4.25 になった、 kernel をダウンロードして、 展開した。で、 # wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.25.tar.gz # tar xvfz linux-2.4.25.tar.gz # cd linux-2.4.25 # make menuconfig を実行したのだが、 >> Unable to find the Ncurses libraries. >> >> You must have Ncurses installed in order >> to use 'make menuconfig' となってしまった。 ncurses-dev が必要らしい。そこで、追加インストールの実行。 # dselect 〜略〜 # make menuconfig 〜略〜 # make depend # make clean # make bzImage 3つ合わせて17分ちょっとかかった。さっそく /boot にコピーして、起動させてみた。 あっさりと、問題なく起動した。 ネットワークの設定をざっくりと。/etc/hosts にご近所を書いて、 ip アドレスを dhcp から固定に変更。 # vi /etc/network/interfaces #iface eth0 inet dhcp iface eth0 inet static address 192.168.0.67 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1 実際は違うけど、こんな感じで編集終了。 次は openssl のインストール。 openssl-0.9.7c.tar.gz を取ってきた。 # wget http://www.openssl.org/source/openssl-0.9.7c.tar.gz # tar xvfz openssl-0.9.7c.tar.gz # cd openssl-0.9.7c # ./config # make とやってコンパイル完了しのだが、よく見ると compile のオプションに -mcpu=pentiumpro とついてしまっている。これで K6-2 が動くの不安なので、やり直し。 # ./Configure linux-k6 # make clean # make と、やって失敗した、と思った。 compile しているこのマシンにもインストール しなければならないので、 ppro のはそのままにしておけば良かったなと。結局、 G-200 用にコンパイルして、 make install を行った。 次は openssh のインストール。の前に zlib のインストールだった。 # wget http://www.gzip.org/zlib/zlib-1.2.1.tar.gz # tar xvfz zlib-1.2.1.tar.gz # cd zlib-1.2.1 # ./configure # make # su # make install 次は openssh のインストール。文が長くなってしまっているな。別 html に しようかな…。 # wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-3.7.1p2.tar.gz # tar xvfz openssh-3.7.1p2.tar.gz # cd openssh-3.7.1p2 # ./configure # make # su # make install とやったのだけど、 Privilege separation user sshd does not exist make: [check-config] Error 255 (ignored) kessel:/home/toyota/src/openssh/openssh-3.7.1p2-local と止まってしまった。あぁ、ユーザを作らなきゃいけないんだ、と思って、ちょっと 調べたら、 openssh のバージョンが、3.8p1 になっていた。一気にやる気が 失せたので、また今度に。 2/27 Logitec の NAS 製品、LHD-EA160LU2 レビュー。長くなったのと、 写真があるので、別ページにした。 2/28 ルータがまた暴走しているようである。ルータから1秒間に24通ものメールが 着たりと、とても迷惑な状態。おかげで集計もできていないのだが、またほっとくと 直るんだろうなぁ。 2/29 GATEWAY Profile に以下のものをインストールした。やっつけ仕事。これで、 内向けの dns サーバができた。 OpenSSL 0.9.7c OpenSSH 3.8p1 bind 8.4 lynx 2.8.5 良く考えたら、こいつの起動直後に glibc を入れ替えても良かったのじゃないか、と 思ってきた。今度時間があったらやってみようと思う。それと、このコンパイル環境を 作成するため、わざわざ debian のインストールしたのだが、これも chroot を うまく使えば、OS のインストールをせずに環境が作れたのでは、と思ってきてもいる。 この件についても、時間があれば今度やってみよう。 |
by Tatsuyoshi since 2003 |