NanoPi NEO2用のNanoBSDのSDイメージにmDNSResponderを入れる

やること

NanoPi NEO2用のNanoBSDのSDイメージにmDNSResponderを入れる。 DHCPIPアドレスを割り当てる環境下で、sshで接続するときにIPアドレスがわからなくなってnmapで探していたのを解消する。

pkgでmDNSResponderを入れる

# SDをマウント。
mkdir /tmp/nanopi-root
mount /dev/da0s2a /tmp/nanopi-root

# chrootしたときに名前解決できないのを防ぐ?(crochetのスクリプトの真似)
cp -i /etc/resolv.conf /tmp/nanopi-root/etc/

# ルートディレクトリを指定してpkgを実行する
pkg -c /tmp/nanopi-root install -y -r FreeBSD mDNSResponder mDNSResponder_nss howl
rm -i /tmp/nanopi-root/etc/resolv.conf

設定

# 設定ファイルのパーティションをマウント
mkdir /tmp/nanopi-cfg
mount /dev/da0s2d /tmp/nanopi-cfg

# 設定書き換え
cp -i /tmp/nanopi-root/etc/nsswitch.conf /tmp/nanopi-cfg
sed -i -e 's/^hosts: files dns/hosts: files mdns dns/' /tmp/nanopi-cfg/nsswitch.conf

# 自動起動するようにしておく
echo 'mdnsd_enable="YES"' >> /tmp/nanopi-cfg/rc.conf
echo 'mdnsresponder_enable="YES"' >> /tmp/nanopi-cfg/rc.conf

crochetで作ったNanoBSDは/conf/base/etc/localに/usr/local/etcのコピーを持っているので、コピーする。この辺りの詳細はdiskless(8)参照。

cp -pv /tmp/nanopi-root/usr/local/etc/rc.d/mdnsd \
   /tmp/nanopi-root/usr/local/etc/rc.d/mdnsresponderposix \
   /tmp/nanopi-root/usr/local/etc/rc.d/mdnsresponder \
   /tmp/nanopi-root/conf/base/etc/local/rc.d

後始末

umount /tmp/nanopi-cfg
umount /tmp/nanopi-root