アップデート作業
前回のメモを眺めてそのままなぞるだけ。
14.2-R に上げたときのメモ - ほっしーの技術ネタ備忘録
まずは今のバージョンを確認。
$ freebsd-version -uk 14.2-RELEASE 14.2-RELEASE
前回から…更新してない???ザワッ
そのままホスト環境のアップデート。
$ sudo freebsd-update upgrade -r 14.4-RELEASE <snip> $ sudo freebsd-update install Installing updates... Kernel updates have been installed. Please reboot and run 'freebsd-update [options] install' again to finish installing updates. $ sudo reboot
カーネルの更新完了!前回の反省を生かして、そのまま再起動。
実はここでトラブルが起きていたので後述。
続けてユーザランドの更新。
$ sudo freebsd-update install Installing updates... <snip> done. $ sudo freebsd-update install No updates are available to install. Run 'freebsd-update [options] fetch' first.
はい、今回もホストはこれで終わりらしい。 ports の更新が必要になるのは 15.0-R を跨ぐときかな?
続けて ezjail 環境の更新。
$ sudo env UNAME_r="14.2-RELEASE" freebsd-update -b /usr/jails/basejail -r 14.4-RELEASE upgrade <snip> $ sudo env UNAME_r="14.2-RELEASE" freebsd-update -b /usr/jails/basejail install <snip> $ sudo env UNAME_r="14.2-RELEASE" freebsd-update -b /usr/jails/basejail install <snip> $ sudo env UNAME_r="14.2-RELEASE" freebsd-update -b /usr/jails/basejail install src component not installed, skipped No updates are available to install. Run 'freebsd-update [options] fetch' first.
こちらは特に問題なく終了。
そして忘れないように etcupdate の準備。
$ cd /usr/git/src $ sudo git fetch --depth 1 $ sudo git checkout releng/14.4 $ sudo etcupdate build -s /usr/git/src -d /tmp/work /usr/jails/basejail/etc_tarball/14.4-etcupdate.tbz
そして後は、各 jail で下記コマンドを打つだけ。
$ sudo jexec JNAME etcupdate -t /basejail/etc_tarball/14.4-etcupdate.tbz $ sudo jexec JNAME etcupdate resolve
手動でマージが必要になったのは sshd_config だけで、後は全自動。
うーん、素晴らしい。
sshd が bind できないらしい
カーネル更新の後、待てど暮らせど ssh がつながらない。
なんでや???と思って物理コンソールを見ると……
sshd[xxxx]: error: Bind to port XX on XXXXXX failed: Can't assign requested address.
oh...
色々試してみたけれども、要するに NIC の IPv6 設定よりも早く sshd が起動しようとしてるみたい。
少し待ってから再起動すると問題なく ssh で接続できるようになったので。
という訳で今回の解決策はこれ。
sshd_setup="sleep 5"
/etc/rc.conf にこれを書くと起動を少し遅らせることができる。
XXX_setup 変数は /etc/rc.subr でも説明されている通り、rc 系の共通機能。
ここに書いたコマンドを実行してから本体を起動するので、
他にも同様の bind 失敗系エラーを吐いていたデーモンたちにも同じ処置を施していきます。
sshd_setup="sleep 5" bsnmpd_setup="sleep 5" openntpd_setup="sleep 5"
別に 5 秒という数字に意味はないし、みんな同じにするより少しバラつかせた方が良いのでは?説もあるけれども、 これで動いてるので良いということにしました。