カーネル再構築

DragonFly BSDのカーネルを構築してみます。 すべての操作をrootユーザーで行います。 オフィシャルサイトにあるハンドブックの、Configuring the DragonFly Kernelの内容を参考にしています。

ソースの取得

DragonFly BSDでは、インストール時にソースツリーが展開されないようです。 なので、まずはソースツリーを取得します。 このためには/usrディレクトリでmake src-createを実行するのですが、以下のようにエラーが発生することがあります。

# cd /usr
# make src-create
If problems occur you may have to rm -rf src and try again.

mkdir -p /usr/src
cd /usr/src && git init
Reinitialized existing Git repository in /usr/src/.git/
cd /usr/src && git remote add origin git://git.dragonflybsd.org/dragonfly.git
fatal: remote origin already exists.
*** Error code 128

Stop in /usr.

この場合は/usr/srcディレクトリにを空にしてから、もう一度実行します。

# cd /usr
# rm -rf src
recursively remove src? y
# make src-create

カーネルコンフィグファイルの作成

まず始めに、新しく作成するカーネルに名前を付けましょう。 新カーネルを特定のPCでしか使用しないのであれば、ホスト名を大文字にしたものがいいでしょう。 ここでは名前をSIMPLEとして説明します。

カーネルをカスタマイズするためのコンフィグファイルを用意します。 一から作成するのは大変なので、用意されているものをベースに変更していきます。 ハンドブックのTipにもあるように、/root/kernelsの下に新しいカーネルコンフィグファイルを作ります。 ファイル名は、先ほど決めた新カーネルの名前と同じにします。

# cd /usr/src/sys/config
# mkdir /root/kernels
# cp X86_64_GENERIC /root/kernels/SIMPLE
# ln -s /root/kernels/SIMPLE

AMD64(64ビット)の環境を使用しているのでX86_64_GENERICファイルをコピーしています。 i386(32ビット)環境の場合は代わりにGENERICファイルをコピーしてください。 カーネルコンフィグファイルの編集

まずは、コンフィグファイル内のident行を探します。次のようになっているはずです。

ident           GENERIC

これのGENGERICの部分を、次のように新カーネルの名前に変更します。

ident           SIMPLE

コンフィグファイルでどのような設定が行えるのか、ハンドブックや/usr/src/sys/config/にあるLINT64ファイル(32ビット環境の場合はLINTファイル)を参考にしてください。

ビルド

/usr/srcディレクトリに移動して、カーネルをビルドしましょう。

make nativekernel KERNCONF=[カーネルコンフィグファイル名]を実行します。

# cd /usr/src
# make nativekernel KERNCONF=SIMPLE
--------------------------------------------------------------
</span>> Kernel build for SIMPLE started on Sun Apr  8 15:27:31 JST 2012
--------------------------------------------------------------

...略...

--------------------------------------------------------------
</span>> Kernel build for SIMPLE completed on Sun Apr  8 15:42:31 JST 2012
--------------------------------------------------------------

コンフィグファイルの書式や内容が間違っていなければ、makeが正常終了して新カーネルがビルドされているはずです。

インストールと再起動

新カーネルのビルドが成功したら、インストールしましょう。

make installkernel KERNCONF=[カーネルコンフィグファイル名]を実行します。

# make installkernel KERNCONF=SIMPLE
--------------------------------------------------------------
</span>> Kernel install for SIMPLE started on Sun Apr  8 15:43:55 JST 2012
--------------------------------------------------------------
...略...

===> libiconv
install -o root -g wheel -m 555 libiconv.ko /boot/kernel

インストールが成功したら、再起動しましょう。新カーネルで起動します。 再起動にはshutdown -r nowを実行します。

# shutdown -r now
Shutdown NOW!
shutdown: [pid 28655]
#
*** FINAL System shutdown message from yayoi@smile. ***
System going down IMMEDIATELY

System shutdown time has arrived

PCが再起動するはずです。

新カーネルの確認

再起動後に次のようにして、新しいカーネルで起動していることを確認します。

$ uname -i
SIMPLE

コンフィグファイルのident行に記述したカーネルの名前が表示されるはずです。

[おわり]