まあとりあえず、Vine 化とかしないでやってみよう、というページ。
HDD を組み込んで、付属 CD からのセットアップを終了したら、先に公式ページからファームウェア Ver 1.02 をダウンロードしてインストールしておくこと。
玄箱では、システム用の / パーティション、swap パーティション、データ用の /mnt パーティションが作成されるが、ファームのアップデートや Debian 化をする際は / パーティションをクリアして新しいイメージを流し込むので、注意。
設定ファイルなどは /mnt 以下に作るか、バックアップを取っておくこと。
DHCP サーバーを立ててない場合、デフォルト IP アドレスは 192.168.11.150 になるのだが、この状態だと、192.168.11.0/24 のホスト以外には一切反応しないので注意。
ファームウェアのインストールアプリケーションでは、setup を実行しているマシンのネットワークに合うように、「IP アドレスを変更してよろしいですか?」と表示されるのだが、インストール終了後は元に戻ってしまうようだ。
「玄箱で遊ぼう!」の Debian 化の仕方の項などで説明されているように、一回イメージを展開して、ネットワーク関係の設定を書き換えてやったほうがよいかも。
telnet で login したら、root のパスワードを設定する。
Web ブラウザで見れる設定画面で設定できるパスワードとは別物なので注意。
標準だとなぜか shadow password ではないので、pwconv コマンドを実行して shadow 化する。まあ、気休めかなぁ。
# pwconv
gzip と GNU tar は既に入っているので、付属 CD に入っているバイナリを
tar xzvf ファイル名 -C /で放り込んで、コンパイル環境を作成する。
なぜかログインの記録が取られていないので、開始する。
# touch /var/log/lastlog
# touch /var/log/wtmp
last コマンドが入っていないので、SysVinit-2.85-5vl2.src.rpm を取ってきて、sysvinit-2.85.tar.gz を取り出してコンパイル後、last コマンドだけ /usr/bin にコピーする。
who とかもないので、GNU sh-utils-2.0 を取ってきてインストールする。
# ./configure --prefix=/usr
# make
# make install
netatalk とか lprng 等、使わない daemon は起動しないようにする。
# cd /etc/rc.d/rc2.d
# mv S60lprng K60lprng
# mv S90atalk K90atalk
/var/log/messages に syslogd から定期的に「--MARK--」という出力が行われていて見づらいので、/etc/rc.d/init.d/syslog の SYSLOGD に "-m 0" を追加して restart する。
付属 CD から ntpd を入れてみたのだが、いつまでたっても同期しない。
ntp-4.2.0 を取ってきてインストールしてみたのだがこちらも同様。
結局、cron で ntpdate を動かすことに。
47 * * * * /usr/sbin/ntpdate ntp3.jst.mfeed.ad.jp 2>&1 > /dev/null
「玄箱で遊ぼう!!」を読んでいたら書いてあったのだが、ntpd を使うには port 123 を通してやらないといけなかったようだ。
最新の OpenSSL、OpenSSH がビルドできないので、binutils と gcc をインストールする。
RING Server の /pub/GNU/ からソースを取得する。
texinfo のインストール。
# bunzip2 -c texinfo-4.8a.tar.bz2 | tar xf -
# cd texinfo-4.8
# ./configure --prefix=/usr
# make
# make install
binutils のインストール。
一応ソースディレクトリとビルドディレクトリを別に作成する。
# bunzip2 -c binutils-2.17.tar.bz2 | tar xf -
# mkdir binutils-2.17-build
# cd binutils-2.17-build
# ../binutils-2.17/configure --prefix=/usr --enable-shared
# make
# make install
gcc のインストール。
一応ソースディレクトリとビルドディレクトリを別に作成する。
# bunzip2 -c gcc-3.4.6.tar.bz2 | tar xf -
# mkdir gcc-3.4.6-build
# cd gcc-3.4.6-build
# ../gcc-3.4.6/configure --prefix=/usr --enable-shared --disable-nls --with-language=c,c++ --with-gnu-as --with-gnu-ld
# make bootstrap
# make install
再度 binutils をビルドしてインストール。
再度 gcc のビルドとインストール。
時間がかかるので、今回やってない。
# cd gcc-3.4.6-build
# rm -rf *
# ../gcc-3.4.6/configure --prefix=/usr --enable-shared --disable-nls --with-language=c,c++ --with-gnu-as --with-gnu-ld --enable-clocale=gnu --enable-threads=posix --enable-__cxa_atexit
# make
# make install
最新版の zlib、OpenSSL、OpenSSH を取ってきてインストールする。
zlib のインストール。
# ./configure --prefix=/usr
# make
# make install
OpenSSL のインストール。
# ./config --prefix=/usr --openssldir=/etc/openssl shared zlib
# make
# make test
# make install
OpenSSH のインストール。
# ./configure --prefix=/usr --sysconfdir=/etc/ssh
# make
# make install
/etc/ssh/sshd_config の変更点。
Protocol 2
SyslogFacility AUTHPRIV
LogLevel INFO
PermitRootLogin no
AllowUsers foo1 foo2
/etc/rc.d/init.d/smb を /etc/rc.d/init.d/ssh にコピーして適当に編集後、/etc/rc.d/rc2.d で ln -s ../init.d/ssh S90ssh。
新しくユーザーを追加した場合は、AllowUsers へ追加するのを忘れないこと。
ここでは内向き DNS サーバーとして使う。
ドメインは無料の Dynamic DNS サービスで取得したものを使用。
user named と group named を作成。
bind-9.3.0.tar.gz を取ってくる。
/etc/named.conf を作成。
directory は /mnt/named にする。
/etc/rc.d/init.d/named を作成。
コマンドは、
/usr/sbin/named -u named
ソースは、RING サーバーの /pub/net/mail/ 下から。
ユーザー postfix、グループ postfix、postdrop を作成。
Cyrus SASL をインストール。
# ./configure --prefix=/usr
# make
# make install
postfix のソースを落としてきてコンパイルする。
# make -f Makefile.init makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_CYRUS_SASL" AUXLIBS="-lsasl2"
# make
# make install
/etc/postfix/main.cf の変更点。
myhostname = (略)
mydomain = $myhostname
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 192.168.1.0/24, 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
allow_percent_hack = no
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
smtpd_helo_required = yes
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch
smtpd_etrn_restrictions = permit_mynetworks, reject_invalid_hostname
allow_mail_to_commands = alias, forward, include
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
/etc/postfix/sasl_passwd を作成した後、
# postmap /etc/postfix/sasl_passwd
を実行して、sasl_passwd.db を作成する。
/var/spool/mail が無いので、作成する。
# mkdir /mnt/spool
# mkdir /mnt/spool/mail
# chmod g+w /mnt/spool/mail
# cd /var/spool
# ln -s /mnt/spool/mail
mail コマンドがないのは不便なので、mailx-8.1.1-32vl1.src.rpm を取ってきてインストール。
# rpm -ivh mailx-8.1.1-32vl1.src.rpm
# cd /usr/src/hardhat/SPECS
# rpm -bb mailx.spec
# cd ../BUILD/mailx-8.1.1
# make install
rpm でインストールすると、依存関係がうるさいので、手動インストール。
でも、なぜか、mail で mailbox が見れない。メール出すのは問題ないようだ。
qpopper のインストール。
まず、グループ pop とユーザー pop を追加する。
# vi /etc/group
# useradd -g pop -d /dev/null -s /bin/false pop
まず、gdbm をインストール。
# ./configure --prefix=/usr
# make
# make install
qpopper を APOP 対応でコンパイル。
# ./configure --prefix=/usr --enable-apop=/etc/pop.auth --with-popuid=pop --with-openssl=/usr --enable-specialauth --without-pam
# make
# make install
# /usr/sbin/popauth -init
fml をインストール。
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-auth-pam
# make
# make install
/etc/proftpd.conf の修正。
ServerType inetd
TimesGMT off
DefaultRoot ~
<Anonymous ~ftp>
<Limit LOGIN>
DenyAll
</Limit LOGIN>
</Anonymous>
まず、既存の httpd を止める。
残しておく場合は /etc/thttpd.conf を編集して port を変更する。
# /etc/rc.d/init.d/thttpd stop
# mv /etc/rc.d/rc2.d/S20thttpd /etc/rc.d/rc2.d/K20thttpd
Apache2 をインストール。
# ./configure --enable-so --enable-module=so --enable-mods-shared=all --enable-ssl --with-ssl=/usr --enable-suexec --with-suexec-userdir --with-suexec-docroot --enable-dav --enable-dav-fs --enable-deflate
# make
# make install
/usr/local/apache2/conf/httpd.conf を編集。
# /usr/local/apache2/bin/apachectl start
/etc/rc.d/init.d に apache2 を作成。
/etc/rc.d/rc2.d に S93apache2 を作成。
SSL 用 key と証明書の作成。
まず、秘密鍵を作成。
# openssl genrsa -des3 -out server.key 1024
自己証明書の作成。
# openssl req -new -x509 -days 365 -key server.key -out server.crt
Common Name の欄にサーバー名を入力する。
Apache の起動時にパスフレーズの入力を求められるが、省略するよう秘密鍵からパスフレーズを削除。
# mv server.key server.phrase.key
# openssl rsa -in server.phrase.key -out server.key
SSL で VirtualHost をする場合、httpd-ssl.conf に次の設定を追加する。
NameVirtualHost *:443
まず、付属 CD に入っている flex をインストール。
# tar xzvf flex-2.5.4.tar.gz -C /
次に、libxml2 をインストール。
# ./configure --with-zlib
# make
# make install
ついでに libxslt もインストール。
# ./configure
# make
# make install
次に、GNU grep 2.5.1a をインストール。
既に入っている grep では、PHP の configure が正しい値を取得できずに、libphp5.so が作成されなくてはまる。
「Jun's Homepage」で記述されていたのに気にしていなかったせいではまった。
# ./cnfigure --prefix=/usr
# make
# make install
ついでに、GNU gettext と GNU readline もインストール。
PHP 5.0.4 のインストール。
PukiWiki を動かすのが目的なので、DB はなし。
./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-cli --enable-mbstring --enable-mbstr-enc-trans --enable-mbregex --with-zlib --with-bz2 --with-openssl=/usr --with-xsl --enable-shared --with-gettext --with-readline
「いとーけーのページ」を参考に、Zend/zend.c を修正。
/usr/local/apache2/conf/httpd.conf の修正。
iptables を入れたいのだが、どうも無理っぽい。
noflushd をインストール。
動かしてみたのだが、ログを見てると、停止後すぐに動き出してる様な感じなので、止め。
/etc/inetd.conf で telnet と ftp をコメントアウトしておくこと。
ps aux | grep inetd で inetd のプロセスを調べて、kill -HUP で inetd を再起動しておく。
kadou @ mue.(以下略)