FreeBSD PAE の GEOM モジュールの難点2014年07月17日 12時36分58秒

FreeBSD PAE カーネルではカーネルジュールが無効化されている。そのため、ZFS モジュールだけを有効化して作った。ほかにも GEOM 関連のモジュールが無くて色々と困る。g_part や g_label といった基本は入っているが、RAID 系のデバイスは GENERIC にも PAE に組み込まれておらずしっかりと認識できない。

そこで、 GEOM 関連のカーネルモジュールも作る必要がある。どうも GEOM 関連のモジュールはややこしい。

md はデバイスの扱いで、device md してカーネルに組み込める。カーネルモジュールとして扱う場合は MODULES_OVERRIDE='md' のようにして、md と指定すると geom_md が作成される。これがカーネルに読み込まれて、kldstat -v で点検すると、g_md と言う名前で登録されている。denice md は GEOM よりも前からあった名残だと思われる。

それ以外の GEOM クラスは、単独のカーネルモジュールは作れないようだ。MODULES_OVERRIDE='geom' の様にして geom を指定すると、全ての geom クラスが作られる。GEOM クラスをカーネルに組み込むには options を用いる。options GEOM_MIRROR の様に GEOM_ を前置詞として、クラスの名前が続く。ただし前述のように md だけは特別で、options GEOM_MD とやるとコンパイルエラーとなる。

加えて、/boot/kernel 以外から起動しようとすると unload で第三ローダが読み込んだモジュールを廃棄しなければいけない。そのため、/boot/loader.conf が無効になっている。手動で load /boot/PAE/geom_uzip の様に読み込んでおなかいと、特に mount の段階で全ての GEOM モジュールが自動で読み込まれるわけではない。これに対応するには、/boot/kernel に通常のカーネルとしてインストールするか、options を使ってカーネルに組み込むのが良いようだ。

前前回前回