FreeBSDのカスタムカーネルをインストールメディアにする。

記事の最後に、Jail + VIMAGEを手っ取り早く触るための私が作成した
vimageカーネルFreeBSD-9.3-VIMAGE-amd64-disc1.isoへのリンクをつけます。


Jailの真の実力はやはり、VIMAGEを使ってこそでしょ!ということで
VIMAGEを色々なマシンに入れたいのですが、デフォルトのカーネルでは有効になっていません。
ですので複数台のPCを手っ取り早くVIMAGE仕様にするためにカスタムカーネルをインストールメディアにします。
色々カスタマイズはできるのですが、今回は早く簡潔にリリースできることを目標にします。

カスタムカーネルを作成する

カスタムカーネルを作成しましょう。
FreeBSDインストール時に、srcもインストールしたならば、/usr/src/に色々srcがあるはずです。
ここで、自分がインストールしたアーキテクチャによってディレクトリパスが変わります。
今回はamd64だと仮定しましょう。
/usr/src/sys/amd64/conf/GENERICを編集します。
(本来ならばカスタムカーネルは別ファイルに作成するのが主流なのでしょうが、make releaseの簡潔さを重視してGENERICに追加していきます。)

今回はJail+VIMAGEを実現するために最低限必要なVIMAGE、
そしてファイアウォールとしてipfwを用いるためIPFIREWALLとその他のオプション、
Jailのリソース管理をするためにRCTLとその他のオプションを入れます。
末尾に、

options VIMAGE
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options IPFIREWALL_DEFAULT_TO_ACCEPT
options RACCT
options RCTL

を追加します。
IPFIREWALLの4行については15.7. ファイアウォールを、
RCTL,RACCTについては自由な設定が可能な最新リソース制御機能(1/2) − @ITを参照してください。

記述したあとはついにコンパイルです。
/usr/srcに移動し、

make buildkernel

を入力し、コンパイルをします。時間がかかります。

これが終わりましたら、次はリリースの為にworldをコンパイルします。

make buildworld

を入力し、コンパイルをします。とても時間がかかります。

これが終わりましたら次はついにリリースをします。

インストールメディアを作成(リリース)する

/usr/src/releaseに移動します。
ここで、make releaseをするのですが、オプションが色々あります。
詳しいことはrelease(7) manページを参照していただくとして、
この記事ではスピード重視なので、簡単にすませていきます。
/use/src/releaseで、

make release BUILDNAME=[バージョンの名前。unameを参考に] MAKE_ISOS=1 NOPORTS=1

を入力し、リリースをします。今回私が作成したバージョンはFreeBSD-9.3なので、

make release BUILDNAME=9.3-VIMAGE MAKE_ISOS=1 NOPORTS=1

としました。
MAKE_ISOSを入れるとisoファイルが作成されます。
PortsCollectionはインストール後に各自更新すると思うのでNOPORTSを入れ、リリースに含まれないようにします。

リリースが終わったら、/usr/obj/usr/src/releaseに移動します。
そこに、disc1.isoがあると思います。これが今回作成したインストールメディアになります。
お疲れ様でした。


最後に、私が作成したFreeBSD-9.3-VIMAGE-amd64-disc1.isoをアップロードしておきました。
これをダウンロードしインストールすればすぐにJail + VIMAGEが楽しめます。

http://www.shutingrz.com/iso/FreeBSD-9.3-VIMAGE-amd64-disc1.iso