ISC-DHCPのインストール。ISCものはセキュリティ的に 全幅の信頼なぞ置けやしないのでchrootインストール。
Makefile.conf
のパス定義をこんな感じに。
USERBINDIR = /var/dhcp-3.0.3/bin BINDIR = /var/dhcp-3.0.3/sbin CLIENTBINDIR=/var/dhcp-3.0.3/sbin ADMMANDIR = /var/dhcp-3.0.3/share/man/cat8 FFMANDIR = /var/dhcp-3.0.3/share/man/cat5 LIBMANDIR = /var/dhcp-3.0.3/share/man/cat3 USRMANDIR = /var/dhcp-3.0.3/share/man/cat1
んで、
./configure make sudo make install
インストール先は /var/dhcp-3.0.3
だが、
バージョン名なしで行けるようにsymlinkを張っておく。
ln -s dhcp-3.0.3 /var/dhcp
dhcpdを /var/dhcp-3.0.3
に chroot して動かすために、
少し環境設定。まず、そのディレクトリにchrootしたあとからも、
/var/dhcp-3.0.3
が存在するようにsymlinkを張り、
ついでに var/run var/db
も作る。
cd /var/dhcp-3.0.3 mkdir -p var/{run,db} ln -s .. var/dhcp-3.0.3
dev/ に最低限のデバイスファイルを生成するシェルスクリプト
devfsrule.sh
。
#!/bin/sh rule=67 devfs rule -s $rule delset devfs rule -s $rule add hide devfs rule -s $rule add path bpf* unhide devfs -m /var/dhcp/dev rule -s $rule applyset
必要なライブラリをコピー(make時に gcc -staticしても可)。
mkdir lib{,.exec} cp /lib/libc.so.? lib cp /libexec/ld-elf* libexec
あとは起動させるだけ。お約束のdaemontools runスクリプト。これは
mkdir /var/dhcp-3.0.3/dhcpd
してその中に置こう。
変数MYNET
にはネットワークアドレスを書いておく。
#!/bin/sh MYNET=192.168.1.0 IF=`route get ${MYNET}|awk '/interface:/{print $2}'` mydir=`dirname $0` topdir=`(cd $mydir; cd ..; pwd -P)` rm -f $topdir/var/run/dhcpd.pid df -tdevfs $topdir/dev || mount -t devfs devfs $topdir/dev $topdir/devfsrule.sh exec 2>&1 exec env - PATH=/sbin:/usr/sbin:/usr/bin:$topdir/sbin \ chroot $topdir dhcpd -d $IF
ついでにlog/run
#!/bin/sh exec setuidgid dnslog multilog !tai64nlocal t ./main
準備できたら
ln -s /var/dhcp /service
てな感じで動かしませう。
叱咤激励感想ツッコミはゲストブックへ
Generated with mkdiary.rb