5.3-RELEASE(-p2) への移行

今日、会社の開発 LAN 用 F/W を 5.2.1-RELEASE(-p11) から 5.3-RELEASE(-p2) へ更新したのですが、ハマりましたので覚え書きです。

初っ端からハマりました。

pf 関連のアカウント(proxy, _pflogd) を先に作成しないと make installworld できない

/usr/src/UPDATING を見ろ、と言われて mergemaster -p したのですが、上手く proxy と _pflogd を merge できずに敗北 orz

  1. /usr/src/etc/master.passwd を /tmp に copy
  2. proxy と _pflogd の行のみを残して全て削除
  3. vipw を起動し、bind アカウントの下の行に /tmp/master.passwd を読み込んで保存
  4. pwd_mkdb /etc/master.passwd でパスワード関連 DB を更新
  5. /usr/src/etc/group を /tmp に copy
  6. proxy, authpf, _pflogd の行のみを残して削除
  7. vi を起動し、/etc/group の bind グループの下の行に /tmp/group を読み込んで保存

この後、make installworld && make installkernel に進むことができました(* 05/03/22 追記:グループの追加もこのタイミングでやってしまった方が一貫性があるので追記しました)。

/etc/rc.d/ 以下のスクリプトの入れ換え

ある KEYWORD(FreeBSDNetBSD)が不要になった関係で、全ての init スクリプトで差分が生じています。mergemaster -svir が面倒になったので

# cd /etc
# mv rc.d rc.d.old
# mkdir rc.d && mergemaster -svia
# rm -rf rc.d.old

で処理しました。

カーネル設定ファイルで INET6 を無効にすると ipl.ko や pf.ko がロードできない

起動時に ipl.ko や pf.ko が読み込まれないので kldload を手動で実行してみました。

# kldload ipl
link_elf: symbol in6_cksum undefined
kldload: can't load ipl: No such file or directory

シクシク... Celeron 600MHz、メモリ 256MBytes なので、INET6 を有効にして再構築するだけでも結構時間が掛かりました。メンテ時間をオーバーしてしまいました...


ということで、本日は時間切れです。また時間を見つけて作業する予定ですが、今週は難しいかも...

p.s. IPFilter & IPNat ルールの移植もしなくてはいけません。ドキュメント読まなくちゃ。


12/18 追記:もう一台の F/W でも幾つかトラぶったので追記です。

ipfw2 で fwd を使用する場合、IPFIREWALL_FORWRAD が必須になった

FreeBSD/i386 5.3-RELEASE Release Notes に記載がありますが、fwd ルールを使用する場合、カーネル設定ファイルに IPFIREWALL_FORWARD が必須になったようです。kernel module にはしていなかったのですが、IPFIREWALL_FORWARD を入れてなかったのでハマりました。

loader.rc の更新忘れ

kernel module が一切読み込めなかったため調べたところ、/usr/src/UPDATING の 20040806 の記述を見つけました。読んでもらえば分かりますが、メモですので一応書いておきます。

cp /usr/src/sys/boot/i386/loader/loader.rc /boot/loader.rc
chown root:wheel /boot/loader.rc
chmod 444 /boot/loader.rc