FreeBSDのRoot on ZFSで、ストレージプールのルート以外をシステムのルートディレクトリにする時は、ストレージプールのルートのマウントポイントを殺さないと死ぬ。
これだけじゃ何の事か分からんと思うので具体例をあげると、ストレージプールztankがあり、ztank/SYSROOTにFreeBSDをインストールしたとする。 インストール終盤で、以下のようにマウントポイントを設定するわけだが、1行目のztankルートに対するマウントポイントの設定を忘れると、システムの起動でこける。
zfs set mountpoint=none ztank # 忘れがち!! zfs set mountpoint=legacy ztank/SYSROOT zfs set mountpoint=/usr ztank/SYSROOT/usr ...
“Trying to mount root from zfs:ztank/SYSROOT”は成功しているのに、直後に「ファイルがないよー」的なログが出てabortしてしまう。症状から察するに、どうやらztankの方が先に/にマウントされてしまい、起動に必要なファイルが見えない状態の模様。分かってしまえばどうってことはないが、地味に分かりづらい厄介な罠。
特に設定しなければ、ストレージプールは/poolnameとしてマウントされるはずなんだけど、なんで/にマウントされちゃうんだろう・・・?
尚、例ではmountpoint=noneにしてるけど、ルート(とシステム関係の場所)以外なら任意に設定して大丈夫だと思う(試してないけど)。