FreeSBIE を FreeBSD 12.4 RELEASE で動かす。

OSのCD/DVDからブートするシステムは一つ持っていると、HDDのサルベージをするときにとても重宝します。最近では DVD-ROM ドライブ自体が付いていないPCもあったりしますが、その場合には iso ファイルをそのままコピーすることでブートディスクとしてつかえるVentoyのような便利なシステムもあります。
通常であれば、gpartdclonezillaと、Ultumate boot cdに、Windows のインストールディスクくらいを用意しておけば、だいたいのことは何とかなるのですが、「zfs で RAID を構築したサーバのサルベージ」といったような、ニッチな案件が訪れることが稀にあります。
そんなとき、サルベージ用にいろいろと使い慣れたパッケージを入れたCD/DVD ブートするメディアを持っていると心強いです。

FreeBSD にはそういった用途のためのプロジェクトはいくつかあるのですが、昔から私がちょっとだけかかわってきた FreeSBIE について、FreeBSD 12.4-RELEASE で動かすことができたので、紹介します。

Ports では sysutil/freesbie にあります。
以前の修正で pkg には対応したので、問題なく動くと思っていたのですが、動かないところがいくつかあったので修正します。

1) geom_uzip を使って圧縮しているのですが、11.0 より、device xz を追加しないと使えません。これを conf/i386/FREESBIE に追加します。

2) conf/freesbie.conf を修正します。
とりあえず、EXTRA の頭の#を外してetcmfs と rootmfs を使えるようにします。

3) script/pkginstall.sh を修正します。
171 行目と173行目の tar を pkg に変更します。

4) script/clonefs.sh を修正します。
ファイルを /usr/local/freesbie-fs から /usr/local/freesbie-clone/ にコピーするとことがあるのですが、ここで cpio -l を使っているためファイルに schg フラグが立っていると、コピー(というかリンク)に失敗します。
そこで、115行目くらいに
chflags -R noschg ${BASEDIR}
を追加します。

5) 必要なパッケージを作成環境にインストールします。
ddrescue とか vim とか、tmux とか、その他便利なパッケージを入れておきます。

6) make pkgselect して、インストールするパッケージを決めます。これは conf/packages にテキストで記録されるので直接こちらを書き換えてもいいかと思います。従属するパッケージは自動で入ります。

7) make iso します。
初回は make world とmake kernel が動きますので時間がかかります。二回目以降は conf/freesbie,conf を書き換えて
NO_BUILD_WORLD と NO_BUILD_KERNEL を定義してあげると速くなります。

8) /usr/obj 以下に FreeSBIE.iso というファイルができますので、とりあえずは bhyve などでブートしてみましょう。

9) 5)から8)を何度か繰り返し、納得のいくものに仕上がったら実際に CD に焼いて実機で試してみましょう。

だいたい上記の手順で納得のいくCD/DVDができます。
実際には「何か足りない」ということが多くありますので、避難訓練的にサルベージの練習をして、いざというときに慌てない平常心を鍛えておくことも重要です。

追記:13.1 でも上記の修正と conf/make.conf を
NO_PROFILE=YES

MK_PROFILE=no
に修正するだけで、動きました。