玄箱のセットアップ

まあとりあえず、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 を通してやらないといけなかったようだ。


GCC のインストール

最新の 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

SSH のインストール

最新版の 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 へ追加するのを忘れないこと。


bind9 のインストール

ここでは内向き 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

postfix のインストール

ソースは、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 をインストール。


proftpd のインストール

# ./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>

apache のインストール

まず、既存の 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

PHP5 のインストール

まず、付属 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

iptables を入れたいのだが、どうも無理っぽい。


HDD のスタンバイ設定

noflushd をインストール。
動かしてみたのだが、ログを見てると、停止後すぐに動き出してる様な感じなので、止め。


設定が終わったら

/etc/inetd.conf で telnet と ftp をコメントアウトしておくこと。
ps aux | grep inetd で inetd のプロセスを調べて、kill -HUP で inetd を再起動しておく。


関連リンク


戻る。


kadou @ mue.(以下略)