公式のリリースアナウンスは出ていないが、既に更新できる状態になっているようである。
手元にNanoPI NEO2、RaspberryPI 4、ラップトップPCと3台のFreeBSDマシンがあり、順次更新していく予定である。まず手始めにNanoPI NEO2を更新してみた。他の2台はzfsを使っていて、リリースノートにあるようにブートローダーの更新が必要だからだ。未だにzpool upgradeは自分で実行するのか、freebsd-updateが実行するのかよくわかっていない。自分としてはNanoPI NEO2の更新は問題なくできるだろうと思っていたのだが、見事にはまってしまった。更新作業は土曜日から始めたのだが、ファイルのダウンロードだけでも5~6時間ぐらいかかった。一回目のfreebsd-update installからshutdownは問題なく実行できて、NanoPI NEO2も立ち上がって来たので、2回目のfreebsd-update installを実行して、再びshutdownしたのだが、立ち上がらくなってしまった。この時点で土曜日の夜だったので、日曜日に持ち越した。
日曜日に14.0のSDカードイメージをダウンロードし、このイメージを基に起動メディアを作成して立ち上げると、当然起動してくる。sshでログインして、/devを確認するとディスクも存在するし、リードオンリーでマウントすると問題なくできた。この時点で何が起きているかわからなくなった。実はディスクはGEOM journalにしているので、これが問題なのかと思い、急遽普通のUFSのディスクを用意して、そのディスクをrootfsになるように設定して起動すると、これも問題なく起動してくる。こうなるとますますGEOM journalが怪しいのだが、FreeBSDが立ち上がると、アクセスできるので、何とも不思議な状況だった。そこで次は"kenv"と"reboot -r"を利用して、起動後rootfsをGEOM journalのディスクにルートファイルシステムを切り替えて起動してみたのだが、これだと起動できない。
ここまでに数時間費やしている。もうあまり解決するアイディアがないので、もしかするとファイルシステムがおかしくなったのかと思い、fsckを実行すると、エラーがポロポロと出てきた。それらを修復して、再度試してみると、起動してきた。もっと早くfsckを試すべきだった。
次にNanoPI NEO2上のjail (bastille) を更新してみた。一見問題なく更新できているように見えるし、jailも起動できるのだが、bastille consoleが実行できない。ログを調べてみると、opieが見つからないとなっている。リリースノートを見るとopieは14.0で削除されたようだ。どうも、これはbastilleの問題で、確かにあの更新方法だと/etcのファイルは更新されない。githubに既にissueが上がっていた。
RaspberryPI4ではメールとかウェブサーバーはjail上で動かしているので、安全に確実にjail環境を更新できないと14.0には移行できない。だから、RaspberryPI4の更新はしばらく先になりそうだ。
2023年11月22日追記
jailに関しては、etcupdateで更新できそうだ。ただし、この場合はソースコードを持ってこなければいけない。あるいは誰かが更新ファイルをtarに固めてどこかに置かなければいけないけれど、信頼が置けるファイルにしないといけないので、tarファイルの方はローカル以外では使えないだろう。testという名前のjailがある場合は、以下のコマンドで更新できる。log1.logとlog2.logはログファイル。
etcupdate -D /usr/local/bastille/jails/test/root -L log1.log | tee log2.log
公式のgithubのissueに現時点で動きはない。
2023年11月24日追記
色々etcupdateを試してみて、14.0のソースコードをダウンロードし、bastille/releases/14.0-RELEASE/usr/srcの配下に展開し、jail環境でオプションなしでetcupdateを実行するのが良いような感じがする。host環境で-dオプションとか-sオプションを指定して更新を試みようとするも、更新してくれない現象に遭遇した。何度試しても更新しないので、etcupdateのバグのような気がするが、詳細は不明。-sの方に何か問題があるような気もするが、調査方法もよくわからないので、深掘りはしないつもり。
実はtarballを作り、それをもとに更新しようと試していたのだが、tarballはできるものの、更新ができなかった。jail環境ならtarballもできるし、それをもとに更新もできるようだ。