4/1
cygwin で OpenSSH のコンパイル。長くなったので、別ページにした。
結局失敗したのだけど…。
4/2
LD-WBBR/B のセキュリティ問題についてと、elecom の GPL 違反について、
別ページにまとめてみた。しばらく私は elecom の製品は買わないつもり。
4/3
BONA Light System に Linux のインストール。 CF にインストールなので、
ちょっと苦労した。長くなったので、別ページにした。
4/4
昨日の続きで CF から Linux を起動させているのだが、どうもうまくいかない。
initrd を / としてマウントして、そのまま使い続けることが、 lilo ではうまく
いかないのである。man initrd で見てみても
initrd=<name>
カーネルと共に読み込む初期 RAM ディスクイメージを指定する。こ の
イメージは、ネットワークドライバや SCSI ドライバといったブート時
に必要なモジュールを含んでいる。 mkinitrd(8) の man ページを参照
すること。
と、[初期 RAM ディスク]と書いてあるし。私の能力がないだけかもしれないけど、
できないのかなぁ。 floppyfw などでは syslinux 使っているみたいだし。
私が lilo をインストールしたのは、別に綺麗な絵が出るブートローダーが必要じゃ
ないから、という単純な理由なのだけど。knoppix も調べてみたのだけど、
syslinux を使っているようである。grub ならできそうなので、 grub でやろうかな。
4/5
昨日の続き。lilo では
root=/dev/ram
と指定すれば、/ にマウントしてくれるみたい。さっそく試そうかと思ったが、
initrd を作るのに時間が掛かりそうなので、時間のあるときにでも。ちょっと
風邪気味だし…。
4/6
昨日の slashdotted な様子。13:55頃に Apache の設定を
MaxKeepAliveRequests 100
MinSpareServers 3
MaxSpareServers 20
StartServers 3
MaxClients 20
から
MaxKeepAliveRequests 200
MinSpareServers 3
MaxSpareServers 100
StartServers 3
MaxClients 100
に変更したのだけど、だいぶ改善されていたみたいだ。というか、予想外の
アクセスだったのだけど。12時と13時代は retry 発生しまくりで、かなり
だめだめだったみたいである。
[toyota@kamino]% grep "05/Apr/2004:00" access_log | wc -l
53
[toyota@kamino]% grep "05/Apr/2004:01" access_log | wc -l
27
[toyota@kamino]% grep "05/Apr/2004:02" access_log | wc -l
840
[toyota@kamino]% grep "05/Apr/2004:03" access_log | wc -l
4676
[toyota@kamino]% grep "05/Apr/2004:04" access_log | wc -l
4368
[toyota@kamino]% grep "05/Apr/2004:05" access_log | wc -l
3270
[toyota@kamino]% grep "05/Apr/2004:06" access_log | wc -l
3718
[toyota@kamino]% grep "05/Apr/2004:07" access_log | wc -l
4376
[toyota@kamino]% grep "05/Apr/2004:08" access_log | wc -l
4609
[toyota@kamino]% grep "05/Apr/2004:09" access_log | wc -l
4608
[toyota@kamino]% grep "05/Apr/2004:10" access_log | wc -l
4226
[toyota@kamino]% grep "05/Apr/2004:11" access_log | wc -l
3049
[toyota@kamino]% grep "05/Apr/2004:12" access_log | wc -l
2618
[toyota@kamino]% grep "05/Apr/2004:13" access_log | wc -l
2771
[toyota@kamino]% grep "05/Apr/2004:14" access_log | wc -l
11672
[toyota@kamino]% grep "05/Apr/2004:15" access_log | wc -l
10655
[toyota@kamino]% grep "05/Apr/2004:16" access_log | wc -l
10952
[toyota@kamino]% grep "05/Apr/2004:17" access_log | wc -l
11085
[toyota@kamino]% grep "05/Apr/2004:18" access_log | wc -l
8426
[toyota@kamino]% grep "05/Apr/2004:19" access_log | wc -l
10687
[toyota@kamino]% grep "05/Apr/2004:20" access_log | wc -l
9114
[toyota@kamino]% grep "05/Apr/2004:21" access_log | wc -l
9118
[toyota@kamino]% grep "05/Apr/2004:22" access_log | wc -l
9600
[toyota@kamino]% grep "05/Apr/2004:23" access_log | wc -l
8726
18時代は通勤時間なのかなぁ。見にくいので、ちょっとコマンド追加。
[toyota@kamino]% grep "05/Apr/2004" access_log | cut -d" " -f4 | cut -c14-15 | uniq -c
53 00
27 01
840 02
4676 03
4368 04
3270 05
3718 06
4376 07
4609 08
4608 09
4226 10
3049 11
2618 12
2771 13
11672 14
10655 15
10952 16
11085 17
8426 18
10687 19
9114 20
9118 21
9600 22
8726 23
ついでに。
[toyota@kamino]% grep "05/Apr/2004" access_log | grep "¥.elecom¥.co¥.jp" | wc -l
179
[toyota@kamino]% grep "06/Apr/2004" access_log | grep "¥.elecom¥.co¥.jp" | wc -l
49
しっかりと、5年以上前に作った[千社札のページ]とかを見ていったようだ。
4/7
4日、4ヶ月ぶりぐらいに LAN-iCN2[kamino] の再起動を行ったのだけど、こいつの
時間の狂い、再起動前は1日 11.1 秒(±0.1秒) のズレが発生していたのだけど
(この値も酷いな)、再起動後は 8.85秒(±0.1秒) ズレになった。前も、再起動すると
時間のズレが変わったのだけど、これはハードウェア的な原因なのかなぁ。
4/8
メールサーバの受信ドメインを追加したので、 postfix の設定。virtual ファイルと
aliases ファイルを書き換えたのだけど、このあと書き換えたファイルを反映する
コマンドをいつも忘れてしまう。 virtual は postmap 、aliases は newaliases コマンド。
とりあえず、設定完了。
4/9
cygwin で OpenSSH のコンパイル(4/1)の続き。なんとかコンパイルまではいった。
openbsd-compat/bsd-cygwin_util.c:41行
openbsd-compat/bsd-cygwin_util.h:38行
を書き換えた。
#define is_winnt (GetVersion() < 0x80000000)
を NT4.0 sp6 でコンパイルしているので、
#define is_winnt 1
と GetVersion を使わないようにしたら、うまくいった。 sshd の起動も問題なく
できたのだが、認証がどこのパスワードを使っているのか良くわからない。テスト
コードを埋め込みながらソースを追ったのだけど、結局時間切れ。まだまだ先は
長そうである。
4/10
4/5 の続き。initrd の作成。knoppix で起動してみた。/ramdisk が 200M ある
みたいなので、ここに initrd の元を作ることにした。
[knoppix]# pwd
/ramdisk/var/tmp
[knoppix]# dd if=/dev/zero of=initrd bs=1024 count=65536
読み込んだブロック数は 65536+0
書き込んだブロック数は 65536+0
67108864 bytes transferred in 1.520982 seconds (44122061 bytes/sec)
[knoppix]# mke2fs -m 0 -F initrd
mke2fs 1.35-WIP (31-Jan-2004)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
16384 inodes, 65536 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
8 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
とりあえず、 tune2fs を実行して、現在の設定を見てみる。
[knoppix]# tune2fs -l initrd
tune2fs 1.35-WIP (31-Jan-2004)
Filesystem volume name:
Last mounted on:
Filesystem UUID: 6df5854d-6a03-4818-a439-075984e61b1d
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 16384
Block count: 65536
Reserved block count: 0
Free blocks: 63448
Free inodes: 16373
First block: 1
Block size: 1024
Fragment size: 1024
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2048
Inode blocks per group: 256
Filesystem created: Sat Apr 10 14:27:26 2004
Last mount time: n/a
Last write time: Sat Apr 10 14:27:26 2004
Mount count: 0
Maximum mount count: 24
Last checked: Sat Apr 10 14:27:26 2004
Check interval: 15552000 (6 months)
Next check after: Thu Oct 7 14:27:26 2004
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Default directory hash: tea
Directory Hash Seed: e307f2db-5865-43f4-8354-8eb70d3812d9
fsck を実行しないように、 Maximum mount count と Check interval の値を
変更した。
[knoppix]# tune2fs -c 0 -i 0 initrd
tune2fs 1.35-WIP (31-Jan-2004)
Setting maximal mount count to -1
Setting interval between check 0 seconds
root@0[tmp]# tune2fs -l initrd
tune2fs 1.35-WIP (31-Jan-2004)
Filesystem volume name:
Last mounted on:
Filesystem UUID: 6df5854d-6a03-4818-a439-075984e61b1d
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 16384
Block count: 65536
Reserved block count: 0
Free blocks: 63448
Free inodes: 16373
First block: 1
Block size: 1024
Fragment size: 1024
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2048
Inode blocks per group: 256
Filesystem created: Sat Apr 10 14:27:26 2004
Last mount time: n/a
Last write time: Sat Apr 10 14:30:35 2004
Mount count: 0
Maximum mount count: -1
Last checked: Sat Apr 10 14:27:26 2004
Check interval: 0 ()
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Default directory hash: tea
Directory Hash Seed: e307f2db-5865-43f4-8354-8eb70d3812d9
initrd も元はできたので、こいつを mount する。とりあえず、ディレクトリの
作成から。
[knoppix]# mkdir /mnt/initrd
[knoppix]# mount -o loop initrd /mnt/initrd
問題なく作成できた、次は、ディレクトリの作成。
[knoppix]# cd /mnt/initrd
[knoppix]# rm -rf lost+found
[knoppix]# mkdir bin boot dev etc lib mnt proc sbin tmp usr var
[knoppix]# mkdir usr/bin usr/sbin usr/lib
[knoppix]# mkdir var/log var/tmp
[knoppix]# chmod 1777 tmp var/tmp
/dev の作成。tty 関連は何が使われるのか良くわからないので、ちょっと
多めに作ってみた。
[knoppix]# mknod -m 666 dev/null c 1 3
[knoppix]# mknod -m 666 dev/zero c 1 5
[knoppix]# mknod -m 600 dev/console c 4 0
[knoppix]# mknod -m 600 dev/mem c 1 1
[knoppix]# mknod -m 444 dev/random c 1 8
[knoppix]# mknod -m 600 dev/rtc c 10 135
[knoppix]# mknod -m 600 dev/ram0 b 1 0
[knoppix]# mknod -m 600 dev/ram1 b 1 1
[knoppix]# mknod -m 600 dev/hdc b 22 0
[knoppix]# mknod -m 600 dev/hdc1 b 22 1
[knoppix]# mknod -m 666 dev/tty c 5 0
[knoppix]# mknod -m 644 dev/tty0 c 4 0
[knoppix]# mknod -m 644 dev/tty1 c 4 1
[knoppix]# mknod -m 644 dev/tty2 c 4 2
[knoppix]# mknod -m 644 dev/tty3 c 4 3
[knoppix]# mknod -m 644 dev/tty4 c 4 4
[knoppix]# mknod -m 644 dev/tty5 c 4 5
[knoppix]# mknod -m 644 dev/tty6 c 4 6
[knoppix]# mknod -m 644 dev/tty7 c 4 7
[knoppix]# mknod -m 660 dev/ttyS0 c 4 64
[knoppix]# mknod -m 660 dev/ttyS1 c 4 65
[knoppix]# mknod -m 644 dev/ttyp0 c 3 0
[knoppix]# mknod -m 644 dev/ttyp1 c 3 1
[knoppix]# mknod -m 644 dev/ttyp2 c 3 2
[knoppix]# mknod -m 644 dev/ttyp3 c 3 3
[knoppix]# mknod -m 644 dev/ttyp4 c 3 4
[knoppix]# mknod -m 644 dev/ttyp5 c 3 5
[knoppix]# mknod -m 644 dev/ttyp6 c 3 6
[knoppix]# mknod -m 644 dev/ttyp7 c 3 7
[knoppix]# mknod -m 644 dev/ptyp0 c 2 0
[knoppix]# mknod -m 644 dev/ptyp1 c 2 1
[knoppix]# mknod -m 644 dev/ptyp2 c 2 2
[knoppix]# mknod -m 644 dev/ptyp3 c 2 3
[knoppix]# mknod -m 644 dev/ptyp4 c 2 4
[knoppix]# mknod -m 644 dev/ptyp5 c 2 5
[knoppix]# mknod -m 644 dev/ptyp6 c 2 6
[knoppix]# mknod -m 644 dev/ptyp7 c 2 7
busybox のインストールを行った。どうやら 4/6 に最新版の 1.00-pre9 が出た
ようなので、それを使うことにした。
[knoppix]# cd /var/tmp
[knoppix]# wget http://busybox.net/downloads/busybox-1.00-pre9.tar.bz2
[knoppix]# tar xvfj busybox-1.00-pre9.tar.bz2
[knoppix]# cd busybox-1.00-pre9
[knoppix]# make
この LS 結構コンパイルに時間がかかる。もう少し早く終わるかと思って
いたのだけど。とりあえず、 busybox をインストールして完了。
[knoppix]# ./applets/install.sh /mnt/initrd
CF をマウントして、 lilo.conf の書き換え。 initrd の設定と、 root の
設定と。
[knoppix]# mount /dev/hdc1 /mnt/hdc1
[knoppix]# vi /mnt/hdc1/etc/lilo.conf
# /etc/lilo.conf
boot=/dev/hdc
vga=normal
delay=10
image=/vmlinuz
root=/dev/ram0
initrd=initrd.gz
label=linux
read-write
こんな感じになった。書き換えた lilo.conf を有効にするのと、念のために、
CF の /dev に ram0 の追加を行った。
[knoppix]# lilo -v -r /mnt/hdc1
[knoppix]# mknod -m 600 /mnt/hdc1/dev/ram0 b 1 0
とりあえず、完成したので、 initrd を CF に書き込んでみた。それと、
initrd を他のマシンにコピーした。作業領域は、 /ramdisk なので、再起動すると
中がすっかり消えてしまうためである。
[knoppix]# cd /
[knoppix]# umount /mnt/initrd
[knoppix]# gzip -9 /var/tmp/initrd
[knoppix]# cp /var/tmp/initrd.gz /mnt/hdc1/
[knoppix]# scp /var/tmp/initrd.gz toyota@kashyyyk:tmp/
[knoppix]# exit
で再起動をしてみた。無事に Linux は起動し、最後に以下の表示がされて、
問題なく起動した。
Bummer, could not run '/etc/init.d/rcS': No such file or directory
Please press Enter to activate this console.
BusyBox v1.09-pre9 (2004.04.10-06:41+0000) Built-in shell (ash)
Enter 'help' for a list of built-in comannds.
-sh: can't access tty; job control turned off
/ #
という状況。なんとか起動するところまでは完了した。しかし、 /proc が
ないので df や ps が実行できないし、色々と問題だらけなので、 initrd の
作り直しをしなければ。とりあえず、明日にすることにした。
4/11
昨日の続き。とりあえず、 /etc/init.d/rcS の作成から。まず、 knoppix で
起動して、CF の mount と initrd の mount から。
[knoppix]# mount /dev/hdc1 /mnt/hdc1
[knoppix]# cp /mnt/hdc1/initrd.gz /var/tmp
[knoppix]# gunzip /var/tmp/initrd.gz
[knoppix]# mkdir /mnt/initrd
[knoppix]# mount -o loop /var/tmp/initrd /mnt/initrd
[knoppix]# mkdir /mnt/initrd/etc/init.d
[knoppix]# cd /mnt/initrd/etc/init.d
rcS の編集。うまく設定できるかどうかわからないが、ネットワークの設定と
proc の mount と。
[knoppix]# vi rcS
#!/bin/sh
/bin/mount -t proc proc /proc
/bin/hostname "ithor"
/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0
/sbin/ifconfig eth0 192.168.0.73 netmask 255.255.255.0
/sbin/route add default gw 192.168.0.1
次は、各種設定ファイルの作成。作ったファイルは以下の通り。
/mnt/initrd/etc/resolv.conf
/mnt/initrd/etc/hosts
/mnt/initrd/etc/nsswitch.conf
/mnt/initrd/etc/passwd
/mnt/initrd/etc/shadow
/mnt/initrd/etc/group
telnet を使うわけにはいかないので、 OpenSSH のインストールを行う。
まずは、 OpenSSL のインストールから。
[knoppix]# cd /var/tmp
[knoppix]# wget http://www.openssl.org/source/openssl-0.9.7d.tar.gz
[knoppix]# tar xvfz openssl-0.9.7d.tar.gz
[knoppix]# cd openssl-0.9.7d/
[knoppix]# ./config
[knoppix]# make
[knoppix]# make build-shared
問題なくコンパイルは終わったので、 shared-lib のコピーを行った。
[knoppix]# cp libssl.so.0.9.7 /mnt/initrd/lib/
[knoppix]# cp libcrypto.so.0.9.7 /mnt/initrd/lib/
シンボリックリンクの作成。こんな感じで良いのかな…。
[knoppix]# cd /mnt/initrd/lib
[knoppix]# ln -s libcrypto.so.0.9.7 libcrypto.so.0
[knoppix]# ln -s libcrypto.so.0.9.7 libcrypto.so
[knoppix]# ln -s libssl.so.0.9.7 libssl.so.0
[knoppix]# ln -s libssl.so.0.9.7 libssl.so
使っている lib を調べてみる。
[knoppix]# ldd libssl.so.0.9.7
libdl.so.2 => /lib/libdl.so.2 (0x400dc000)
libc.so.6 => /lib/libc.so.6 (0x400df000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
[knoppix]# ldd libcrypto.so.0.9.7
libdl.so.2 => /lib/libdl.so.2 (0x40107000)
libc.so.6 => /lib/libc.so.6 (0x4010a000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
該当するものをコピーした。と、やっているうちに思った。こいつは knoppix が
起動さえすれば、設定もできてしまうのだな、と。
[knoppix]# cp /lib/ld-2.3.2.so ./
[knoppix]# ln -s ld-2.3.2.so ld-linux.so.2
[knoppix]# cp /lib/libdl-2.3.2.so ./
[knoppix]# ln -s libdl-2.3.2.so libdl.so.2
[knoppix]# cp /lib/libc-2.3.2.so ./
[knoppix]# ln -s libc-2.3.2.so libc.so.6
次は、 OpsnSSH 本体の作成。
[knoppix]# cd /var/tmp
[knoppix]# wget ftp://ftp.iij.ad.jp/pub/OpenBSD/OpenSSH/portable/openssh-3.8p1.tar.gz
[knoppix]# tar xvfz openssh-3.8p1.tar.gz
[knoppix]# cd openssh-3.8p1
[knoppix]# ./configure
[knoppix]# make
問題なく、作成終了。こいつも lib の確認をしてみる。
[knoppix]# ldd ssh
libresolv.so.2 => /lib/libresolv.so.2 (0x40026000)
libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x40038000)
libutil.so.1 => /lib/libutil.so.1 (0x4012a000)
libz.so.1 => /usr/lib/libz.so.1 (0x4012d000)
libnsl.so.1 => /lib/libnsl.so.1 (0x4013f000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40154000)
libc.so.6 => /lib/libc.so.6 (0x40181000)
libdl.so.2 => /lib/libdl.so.2 (0x402b4000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
足りないものを、コピーした。コピーした lib の使ってる lib もチェックしないと
いけいないな…。
[knoppix]# cd /mnt/initrd/lib
[knoppix]# cp /lib/libresolv-2.3.2.so ./
[knoppix]# ln -s libresolv-2.3.2.so libresolv.so.2
[knoppix]# cp /lib/libutil-2.3.2.so ./
[knoppix]# ln -s libutil-2.3.2.so libutil.so.1
[knoppix]# cp /lib/libnsl-2.3.2.so ./
[knoppix]# ln -s libnsl-2.3.2.so libnsl.so.1
[knoppix]# cp /lib/libcrypt-2.3.2.so ./
[knoppix]# ln -s libcrypt-2.3.2.so libcrypt.so.1
[knoppix]# cd ../usr/lib
[knoppix]# cp /usr/lib/libz.so.1.2.1 ./
[knoppix]# ln -s libz.so.1.2.1 libz.so
[knoppix]# ln -s libz.so.1.2.1 libz.so.1
インストールをしてみる。
[knoppix]# cd /var/tmp/openssh-3.8p1
[knoppix]# mkdir /mnt/initrd/usr/local
[knoppix]# make install prefix=/mnt/initrd/usr/local
実行テストでエラーが出たが、問題なし、と。 man まで install されて
しまったので、削除を行う。
[knoppix]# rm -rf /mnt/initrd/usr/local/man
これで完成。次は tcsh のインストール。コピーまで、サクッと行う。
[knoppix]# cd /var/tmp
[knoppix]# wget ftp://ftp.astron.com/pub/tcsh/tcsh-6.12.00.tar.gz
[knoppix]# tar xvfz tcsh-6.12.00.tar.gz
[knoppix]# cd tcsh-6.12.00
[knoppix]# ./configure
[knoppix]# make
[knoppix]# cp tcsh /mnt/initrd/usr/bin
tcsh の lib の確認を行う。
[knoppix]# ldd /mnt/initrd/usr/bin/tcsh
libncurses.so.5 => /lib/libncurses.so.5 (0x40026000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40065000)
libc.so.6 => /lib/libc.so.6 (0x40092000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libncurses が足りないみたいなので、コピーをする。
[knoppix]# cd /mnt/initrd/lib
[knoppix]# cp /lib/libncurses.so.5.3 ./
[knoppix]# ln -s libncurses.so.5.3 libncurses.so.5
tcsh の完成。次は ntp のインストール。 lib の確認とコピーまで、サクッと。
[knoppix]# cd /var/tmp
[knoppix]# wget ftp://ftp.udel.edu/pub/ntp/ntp4/ntp-4.2.0.tar.gz
[knoppix]# tar xvfz ntp-4.2.0.tar.gz
[knoppix]# cd ntp-4.2.0
[knoppix]# ./configure
[knoppix]# make
[knoppix]# make install prefix=/mnt/initrd/usr/local
[knoppix]# cd /mnt/initrd/usr/local
[knoppix]# strip ntp*
[knoppix]# ldd ntpd
libm.so.6 => /lib/libm.so.6 (0x40026000)
libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x40048000)
libc.so.6 => /lib/libc.so.6 (0x4013a000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libdl.so.2 => /lib/libdl.so.2 (0x4026d000)
[knoppix]# cd /mnt/initrd/lib
[knoppix]# cp /lib/libm-2.3.2.so ./
[knoppix]# ln -s libm-2.3.2.so libm.so.6
本当はインストール前に strip するべきなのだけど(initrd 領域に何度も書いたり
消したりすると、圧縮したときの容量が大きくなってしまう)、面倒だから、
インストール後にしてしまった。次は postfix のインストール。
[knoppix]# cd /var/tmp
[knoppix]# wget ftp://ring.aist.go.jp/pub/net/mail/postfix/official/postfix-2.0.19.tar.gz
[knoppix]# tar xvfz postfix-2.0.19.tar.gz
[knoppix]# cd postfix-2.0.19
簡単に make を実行してみた。
[knoppix]# make -f Makefile.init makefiles
make -f Makefile.in MAKELEVEL= Makefiles
set -e; for i in src/util src/global src/dns src/master src/postfix src/smtpston
e src/sendmail src/error src/pickup src/cleanup src/smtpd src/local src/lmtp src
/trivial-rewrite src/qmgr src/smtp src/bounce src/pipe src/showq src/postalias s
rc/postcat src/postconf src/postdrop src/postkick src/postlock src/postlog src/p
ostmap src/postqueue src/postsuper src/nqmgr src/qmqpd src/spawn src/flush src/v
irtual src/proxymap; do ¥
(set -e; echo "[$i]"; cd $i; rm -f Makefile; ¥
make -f Makefile.in Makefile MAKELEVEL=) || exit 1; ¥
done;
[src/util]
(set -e; echo "# DO NOT EDIT"; /bin/sh ../../makedefs && cat Makefile.in) >Make
file
No include file found.
Install the appropriate db*-devel package first.
See the RELEASE_NOTES file for more information.
make: *** [Makefile] エラー 1
make: *** [Makefiles] エラー 1
make: *** [makefiles] エラー 2
と、 Berkeley DB が必要のようである。早速インストールすることにした。
[knoppix]# cd /var/tmp
[knoppix]# wget http://www.sleepycat.com/update/snapshot/db-4.2.52.tar.gz
[knoppix]# tar xvfz db-4.2.52.tar.gz
[knoppix]# cd db-4.2.52/build_unix
[knoppix]# ../dist/configure
[knoppix]# make
[knoppix]# make install prefix=/mnt/initrd/usr
問題なく、インストール完了。なんとなく /usr にインストールしたのだけど。
で、 postfix のコンパイルの続き。このままだと、 db.h を見つけてくれない
ので、 makedefs ファイルの編集を行った。
[knoppix]# cd /var/tmp/postfix-2.0.19
[knoppix]# vi makedefs
Linux.2*) SYSTYPE=LINUX2
# Postfix no longer needs DB 1.85 compatibility
if [ -f /usr/include/db.h ]
then
: we are all set
elif [ -f /usr/include/db/db.h ]
then
CCARGS="$CCARGS -I/usr/include/db"
elif [ -f /mnt/initrd/usr/include/db.h ]
then
CCARGS="$CCARGS -I/mnt/initrd/usr/include"
else
[knoppix]# make -f Makefile.init makefiles
これで、 make を行った。が、libdb が見つけられないとエラーがでた。
Makefile の編集を行った。SYSLIBS 値にちょっと追加。
[knoppix]# vi Makefile
SYSLIBS = -L/usr/lib -L/mnt/initrd/usr/lib -lpcre -ldb -lnsl -lresolv
これで、 make を行った。
[knoppix]# make
…。20分しても、画面が何も変わらない。どうやら、マシンが固まってしまった
ようである。と、言うことは…。今まで ramdisk で作業をしていたので、
データは全部消えてしまったことになる。あー。今日の作業が…。
作業中、 LS の CPU ヒートシンクとか、チップセットを触ってみたのだけど、
VT8601A のヒートシンクが触れなくなるぐらいに熱くなっていた。ひょっとして
これが原因なのかなぁ。もし、これが原因だとすると、夏は乗り切るのは無理。
今は、フタを開けて使用しているのだけど、フタを閉めた状態で夏の温度だと
今よりもかなり過酷な状態になるので。困ったなぁ。
4/12
昨日やったことを、繰り返す。OpenSSH のインストールまで完了。怖いので、
ここで一度 CF に書き込んだ。
4/13
昨日の続き。tcsh のインストールと Berkeley DB のインストールが完了。
ここで一度 initrd を保存してから、 postfix のコンパイル。Makefile の
SYSIBS を書き換えずに、 makedefs を以下のようにした。
[knoppix]# vi makedefs
Linux.2*) SYSTYPE=LINUX2
# Postfix no longer needs DB 1.85 compatibility
if [ -f /usr/include/db.h ]
then
: we are all set
elif [ -f /usr/include/db/db.h ]
then
CCARGS="$CCARGS -I/usr/include/db"
elif [ -f /mnt/initrd/usr/include/db.h ]
then
CCARGS="$CCARGS -I/mnt/initrd/usr/include"
else
〜snip〜
SYSLIBS="-L/mnt/initrd/usr/lib -ldb"
これで make を行った。
[knoppix]# make -f Makefile.init makefiles
[knoppix]# make
昨日と違って、固まらずに完了した。install を行った。
[knoppix]# sh ./postfix-install
対話式なので、適当に答えて、インストール完了。間違えて、インストールして
しまったファイルの削除。
[knoppix]# rm -rf /mnt/initrd/usr/local/man
[knoppix]# rm -rf /mnt/initrd/usr/include
[knoppix]# rm /mnt/initrd/usr/lib/*.a
shared ライブラリの確認。
[knoppix]# ldd src/master/master
libpcre.so.3 => /usr/lib/libpcre.so.3 (0x40026000)
libdb-4.2.so => /usr/lib/libdb-4.2.so (0x40034000)
libnsl.so.1 => /lib/libnsl.so.1 (0x4010a000)
libresolv.so.2 => /lib/libresolv.so.2 (0x4011f000)
libc.so.6 => /lib/libc.so.6 (0x40132000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libpcre をコピー。
[knoppix]# cd /mnt/initrd/usr/lib
[knoppix]# cp /usr/lib/libpcre.so.3.10.0 ./
[knoppix]# n -s libpcre.so.3.10.0 libpcre.so.3
[knoppix]# ln -s libpcre.so.3.10.0 libpcre.so
ここで、一度 initrd の保存をした。
[knoppix]# cd /
[knoppix]# umount /mnt/initrd
[knoppix]# gzip -9 /var/tmp/initrd
[knoppix]# cp /var/tmp/initrd.gz /mnt/hdc1/
今日はここで終わり。残りは明日。
4/14
昨日の続き。 /usr/share/ の下のもののインストール。 terminfo と zoneinfo を
他のマシンからコピーしてきた。これには、だいぶ不要のものが含まれているので、
使わないものは削除して、コピー。
[knoppix]# mkdir /mnt/initrd/usr/share
[knoppix]# cp -r terminfo /mnt/initrd/usr/share
[knoppix]# cp -r zoneinfo /mnt/initrd/usr/share
日本時間の設定をする。
[knoppix]# cd /mnt/initrd/etc
[knoppix]# ln -s ../usr/share/zoneinfo/Asia/Tokyo localtime
眠いので、今日は終わり。現在の initrd の使用量は
[knoppix]# df /mnt/initrd
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/ramdisk/var/tmp/initrd
63461 42688 20773 68% /mnt/initrd
結構使ってるなぁ。これを圧縮すると、
[knoppix]# ls -la initrd.gz
-rw-r--r-- 1 root root 12088790 2004-04-15 01:08 initrd.gz
になった。
4/15
今日も、昨日の続き。全体的に容量が大きかったので、チェックしてみた。
どうやら /usr/libexec/postfix の部分が多そうなので、ファイルをみてみると、
strip されていないことがわかった。早速 strip 。
[knoppix]# strip /mnt/initrd/usr/libexec/postfix/*
[knoppix]# df -k /mnt/initrd
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/ramdisk/var/tmp/initrd
63461 28310 35151 45% /mnt/initrd
だいぶ減った。さらに見ていくと、 /usr/docs なるディレクトリがあったので
削除した。
[knoppix]# rm -rf /mnt/initrd/usr/docs
同じように、 /usr/sbin の下の postfix 関係のコマンドが strip されていない
ようであったので、これも strip した。
[knoppix]# strip /mnt/initrd/usr/sbin/*
[knoppix]# df -k /mnt/initrd
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/ramdisk/var/tmp/initrd
63461 11329 52132 18% /mnt/initrd
かなり、小さくなったのがわかる。ただし、この状態だと、何度も書いたり消したり
しているので initrd ファイルを圧縮したときの圧縮率が悪くなってしまう。
最後に一度全部書き出して、 initrd ファイルを作るところからやり直して、
ファイルのコピーをした方が良いでしょう。とりあえず、 less のインストールが
終わった。この調子だと、 bind と apache は入りそうである。 perl が入るか
どうかが、微妙かもしれないけど。
4/15
binutils のコンパイルをしてたら、暴走した。やっぱり、チップセットが熱的に
問題があると思う。http://www.watch.impress.co.jp/akiba/hotline/20040410/price.html#3top2
を見ると、1GHz のファンレスマシンは、チップセットまで覆うヒートシンクが
付いているみたいだし…。このまま、この製品を使うかどうか、悩んできた。
とりあえず、明日は一日中 memtest を走らせてみようかと思う。
4/16
予告どおり、一日中 memtest を走らせてみたが、特にエラーは発生せず。メモリーに
問題がないとすると、やはり熱の問題なのか…。
4/18
Linux の kernel のバージョンがあがったようである。なんだか、かなりやばそうな
問題が発見されたようであるし。入れ替えをしないといけないけど、5台分かぁ…。
面倒だな。
4/19
CF の値段を調べてみた。調べたのは kakaku.com の最安値からなのだけど。こんな感じ。
32M ¥1047
64M ¥1467
128M ¥2488
256M ¥4899
512M ¥10178
1024M ¥20499
1G も安くなったなぁ。1M あたりの値段を出してみた。
容量 | 値段 | 1Mあたり
|
---|
32M | ¥1047 | ¥32.7
| 64M | ¥1467 | ¥22.9
| 128M | ¥2488 | ¥19.4
| 256M | ¥4899 | ¥19.1
| 512M | ¥10178 | ¥19.9
| 1024M | ¥20499 | ¥20.0
|
1G でも割高感がない。と、思ったが 3.5インチのハードディスクと比べると
100倍以上の差があるんだなぁ。
ふと思った。今いじっている BONA LS の CF を 64M から 512M にして、
/var /tmp を ram ディスクで構成させれば、だいぶ楽になるのじゃないか、
と。それに 1G の CF にして Win9x とのデュアルブートにしてしまおう、とか。
4/20
knopix で Perl 5.8.3 のコンパイル。しかし、問題がいくつも。Configure で適当に
選んで make を実行した。
[knoppix]# make
〜snip〜
Making Errno (nonxs)
Writing Makefile for Errno
make[1]: Entering directory `/ramdisk/var/tmp/perl-5.8.3/ext/Errno'
make[1]: Leaving directory `/ramdisk/var/tmp/perl-5.8.3/ext/Errno'
make[1]: Entering directory `/ramdisk/var/tmp/perl-5.8.3/ext/Errno'
../../miniperl "-I../../lib" "-I../../lib" "-I../../lib" "-I../../lib" Errno_pm.PL Errno.pm
Skip ../../lib/Errno.pm (unchanged)
make[1]: Leaving directory `/ramdisk/var/tmp/perl-5.8.3/ext/Errno'
make: [extras.make] エラー 1 (無視されました)
Everything is up to date. Type 'make test' to run test suite.
だそうである。気にしないで make test を実行してみた。
[knoppix]# make test
〜snip〜
lib/File/Find/t/find.................FAILED at test 161
〜snip〜
Failed 1 test script out of 792, 99.87% okay.
### Since not all tests were successful, you may want to run some of
### them individually and examine any diagnostic messages they produce.
### See the INSTALL document's section on "make test".
### You have a good chance to get more information by running
### ./perl harness
### in the 't' directory since most (>=80%) of the tests succeeded.
### You may have to set your dynamic library search path,
### LD_LIBRARY_PATH, to point to the build directory:
### setenv LD_LIBRARY_PATH `pwd`; cd t; ./perl harness
### LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH; cd t; ./perl harness
### export LD_LIBRARY_PATH=`pwd`; cd t; ./perl harness
### for csh-style shells, like tcsh; or for traditional/modern
### Bourne-style shells, like bash, ksh, and zsh, respectively.
u=7.41 s=2.01 cu=509.42 cs=61.62 scripts=792 tests=78146
make[2]: *** [_test_tty] エラー 1
make[2]: Leaving directory `/ramdisk/var/tmp/perl-5.8.3'
make[1]: *** [_test] エラー 2
make[1]: Leaving directory `/ramdisk/var/tmp/perl-5.8.3'
make: *** [test] エラー 2
とても、だめだめな気がするのだけど、モノはできているので、これを
使ってしまおうか、悩み中。
4/21
昨日の perl をコピーしようと ramdisk の initrd ファイルを展開していたら、
ramdisk がいっぱいになって、マシンが固まってしまった。リモートから操作して
いたので、どうにもならず。しかし、どうにもならない固まり方をするのも、
どうかなぁ。 OpenSSH の最新版が出たので、インストールと jam less の
インストール。
4/22
連日、
仕事でパソコン+家でもパソコン+4時に寝る+寝る前読書
で、
=目が充血して使い物にならい
になってしまった。抗菌薬入りの目薬でも、効き目なし。困った。今日は
早く寝よう…、と思って時計を見ると2時だったりする。
4/23
elecom から連絡があった。セキュリティを fix したファームウェアを出す、
らしいのと、 source も公開するらしい。はて、最初に問い合わせてから
1ヶ月も経つ。良いのか悪いのか、ちょっと騒ぎになったので、 fix + 公開
したのではないか、と疑ってしまう。ま、良い方向になったことだけは、単純に
喜ぶべきかな。
4/24
20日に行った perl のコンパイルなのだが、どうやら ramdisk でコンパイルを
行っているので、出るエラーのようである。具体的には、
[knoppix]# make test
〜snip〜
lib/File/Find/t/find.................FAILED at test 161
〜snip〜
[knoppix]# cd t
[knoppix]# ./perl harness
〜snip〜
../lib/File/Find/t/find....FAILED tests 161, 173, 187-189
〜snip〜
だそうで。これが、 ext2 などだったら、問題がないみたいである。という訳で
インストールを実行。
[knoppix]# make install DESTDIR=/var/tmp
で、必要なものだけを initrd にコピーして完了。しかし、かなりサイズが
大きいので、圧迫するようであれば削除する予定。
4/25
久しぶりに CF から起動したみた。kernel のロードは問題なく進んだが、initrd の
解凍のところで固まってしまった。kernel を 2.4.26 にしたせいか、 lilo のせい
と思って、 knoppix で起動し直して、以下のコマンドを実行。
[knoppix]# lilo -v -r /mnt/hdc1
これで、 CF で起動し直したら、問題なく進んだ。で、次は、以下のメッセージで
止まってしまった。
Bummer, could not run '/etc/init.d/rcS': Permission denied
Please press Enter to activate this console.
ファイルを見ると、 x ビットが無いようなので、これは後で修正しよう。 Enter で
進むと、
BusyBox v1.09-pre9 (2004.04.10-06:41+0000) Built-in shell (ash)
Enter 'help' for a list of built-in comannds.
-sh: can't access tty; job control turned off
/ # _
相変わらず変わっていない。これは、原因不明。調査してみる必要がある。で、ソースを
調べてみた(いつの間にか busybox-1.00-pre10 が出ているようである)。 ash の
該当部分は、
fd = fcntl(fd, F_DUPFD, 10);
close(ofd);
if (fd < 0)
goto out;
fcntl(fd, F_SETFD, FD_CLOEXEC);
do { /* while we are in the background */
if ((pgrp = tcgetpgrp(fd)) << 0) {
out:
sh_warnx("can't access tty; job control turned off");
mflag = on = 0;
goto close;
}
if (pgrp == getpgrp())
break;
killpg(0, SIGTTIN);
} while (1);
となっていた。 fcntl(fd, F_DUPFD, 10) が問題ありそうな気がする。現状、 /dev には
tty は 0〜7 しかない。なので、15 まで追加してみた。
[knoppix]# cd /mnt/initrd/dev
[knoppix]# mknod tty8 c 4 8
[knoppix]# mknod tty9 c 4 9
[knoppix]# mknod tty10 c 4 10
[knoppix]# mknod tty11 c 4 11
[knoppix]# mknod tty12 c 4 12
[knoppix]# mknod tty13 c 4 13
[knoppix]# mknod tty14 c 4 14
[knoppix]# mknod tty15 c 4 15
結果は駄目だった。もう少し、調査の必要あり、のようである。
4/26
朝から、ネットワーク障害。復旧までに8時間がかかっていた。そこで、
Power Band のサポートに問い合わせたら、ハードウェア障害、らしい。
そこまでは良いのだが、今回の障害は、障害情報の web page に載せない
との回答。理由を聞くと、限られた範囲で発生したものだから、だと。
web page に障害情報として載せるかの判断は、サポートの人達が独自の
判断で行っているらしい。
利用者(私)からすれば、どこで発生した障害であろうと、Power Band で
発生した障害には変わりない。サポートの人の勝手な判断で、障害情報として
扱わないような、ご都合主義はどうかと思う。
4/27
CF から起動したみたとき sshd を起動してみた。が、うまく動かない。
[ithor]# /usr/local/sbin/sshd
Privilege separation user sshd does not exist
sshd ユーザは存在するので、何故出るのかがよくわからない。念のため、
/usr/local/etc/ の下にあるファイルのパーミッションを見てみたが、問題は
ないみたいだし。うーん、確認のために ssh を起動してみたら、
[ithor]# /usr/local/bin/ssh
You don't exist, go away!
と出る始末。sshd の方は
if ((pw = getpwnam(SSH_PRIVSEP_USER)) == NULL)
fatal("Privilege separation user %s does not exist",
SSH_PRIVSEP_USER);
ssh の方は
pw = getpwuid(original_real_uid);
if (!pw) {
logit("You don't exist, go away!");
exit(1);
}
の部分である。ということは、 /etc/passwd をうまく見てくれない、ようである。
さて、何が問題なのでしょう。寝て考えよう、と。
4/28
出先から友人にメールを送信したところ、
550 5.7.1 Can not speak with you
とエラーになって帰ってきた。はて、 smtp の設定を変えたかな、と見てみたら、
問題がないようである。試しに携帯電話からメールを送ってみたが、問題なく
届いたようである。気になって聞いてみた。
「送信元のドメイン制限をしている」
とのこと。思ったよりも単純な原因だった…。
4/29
26日に elecom より LD-WBBR/B のファームウェアが出ていたので、軽く解析を
してみた。どうやら、これまでのバージョンと違って、簡単には解析ができない
感じのようである。時間があれば、もう少し深く調べてみたいと思う。
|