[ インストール | FreeBSDトップ | 環境構築 ]


カーネル再構築

daemon


Introduction

インストールが終了したらカーネルの再構築を行う。
インストールの際にインストールされるカーネルは GENERIC カーネルと呼ばれ、 もっとも一般的で汎用性の高い構成となっている。 システムを運用していく上で問題が発生しなければ、 このままGENERICカーネルを使用しても差し支えないのだが、 汎用性を高くするために不要な設定やドライバがカーネルに含まれており、 また、ThinkPad s30の場合はACPI関連の動作で問題が発生するので、 パッチを適用した後でカーネルの再構築を行う。
Patch

岩崎さんが作成したパッチを加藤さんが 5.1-RELEASE 用に修正して下さいました。 これらのパッチを適用する事により NEWCARDの pccardc power 問題suspend から復帰した時に音が鳴らなくなる問題PCCARDを挿すと固まるという問題が解決する。
これらのパッチを /usr/src/sys ディレクトリで適用する。

# cd /usr/src/sys
# patch -p1 < ディレクトリ/cbb.patch
# patch -p1 < ディレクトリ/ich_pci_resume.patch
# patch -p1 < ディレクトリ/pci_resume.patch

s30 固有のその他の問題については環境構築を参照。
Copy

FreeBSD-5.0 から、デバイスの設定は hints file と呼ぶファイルに設定するので、 オリジナルのカーネルコンフィグレーションファイルと hints file をコピーして、 自分の環境用のカーネルコンフィグレーションファイルと hints file を用意する。
FreeBSDをインストールするとカーネルのソースは/usr/src/sys以下に展開され、 コンフィグレーションファイルは/usr/src/sys/i386/conf以下に置かれる。 GENERICというファイルが GENERICカーネルのコンフィグレーションファイルで、 GENERIC.hintsというファイルがGENERICカーネルの hints file なので、 任意の名称のファイルにコピーする。
ホスト名を全て大文字にしたファイル名とするのが一般的。
Edit

コピーしたコンフィグレーションファイルと hints file を編集する。
カーネルのコンフィグレーションファイルを任意のエディタで編集して カーネルの構成を定義する。 基本的には不要なオプションやドライバを削除し、 必要なオプションやドライバを追加する。 場合によっては、各ドライバの使用する割り込みや I/Oバッファのアドレスを指定する等のオプションを変更したりする必要もあるが、 ThinkPad s30の場合は不要だった。 ただし、suspend 後に usb デバイスが使用できなくなる不具合を修正するために、 optionを指定する必要はある。
以下に現在使用中のカーネルコンフィグレーション概要を示す。

cpu I486_CPU
I586_CPU
ident コンフィグレーションファイル名
options INET6 IPv6は使用しないので削除
device eisa NOTE PC で eisa デバイスは装備していないので削除
device atapifd
device atapist
IDE接続のFD/TAPEは使用しないので削除
device ahd
  :
SCSIデバイスは使用しないので削除
device asr
  :
RAIDコントローラは使用しないので削除
hints ヒントファイル名 独自の hints file 名を指定
device sound 音を鳴らしたいので追加
device snd_ich
option PSM_HOOKRESUME suspend/resume 後の USB リセット指定
option PSM_RESETAFTERSUSPEND
option SMBFS Windows の共有をmount(8)したいので追加
option NETSMB
option NETSMBCRYPTO
option LIBMCHAIN
option LIBICONV Shift Jis のファイルシステムを mount(8) した際に 日本語のファイル名を表示させる

hints file を任意のエディタで編集してカーネルの構成を定義する。 シリアルポート、パラレルポートは装備していないので削除する。
以下に現在使用中のヒントファイル概要を示す。

hint.fdc.0.disabled="1" FDD は使用しない
hint.sio.0.disabled="1" シリアルポートは使用しない
hint.sio.1.disabled="1"
hint.ppc.0.disabled="1" パラレルポートは使用しない
Configure

新しいカーネルのコンフィグレーションを有効にする。
コンフィグレーションを有効にするためには、 コンフィグレーションファイルのあるディレクトリで、 カーネルコンフィグレーションファイル名を引数として configコマンドを実行する。

# config ファイル名
Kernel build directory is ../compile/ファイル名
Don't forget to do a ``make depend''

configコマンドを実行する事によりコンパイル環境が構築される。
Compile

新しいカーネルのコンパイルを行う。
コンパイルディレクトリは 5.0 以降で変更になったので注意する。 /usr/src/sys/i386/compile/コンフィグレーションファイル名に移動して コンパイルを行う。 make dependを忘れずに。

# cd ../compile/ファイル名
# make depend
# make
Install

新しいカーネルとドライバモジュールをインストールする。
古いカーネルは/boot/kernel.oldディレクトリ以下にセーブされるが、 カーネルを再構築(make install)すると /boot/kernel.old以下のファイルは現在のカーネルで上書きされてしまう。 インストール時のGENERICカーネルなど、 確実に起動できるカーネルとカーネルモジュールをバックアップしておくと良い。

# make install
Reboot

万が一新しいカーネルが起動できない場合は、起動時の

Welcome to FreeBSD!

1. Boot FreeBSD [default]
2. Boot FreeBSD with ACPI disabled
3. Boot FreeBSD in Safe Mode
4. Boot FreeBSD in single user mode
5. Boot FreeBSD with verbose logging
6. Escape to loader prompt
7. Reboot

Select option, [Enter] for default
or [Space] to pause timer 5

のメッセージが表示されている時に6を入力すると、 loader の画面が表示されるので、更に Enter 以外の任意のキーを入力する。
そうするとloaderのプロンプトokが表示されるので、 unloadコマンドで現在のカーネルをアンロードした後、 loadコマンドで確実に起動できるカーネルを選択して bootコマンドにより起動させカーネルを再度構築する。
カーネルの名称が不明な場合はlsコマンドを実行すると、 ファイルの一覧が表示される。
5.0 からカーネルを格納するディレクトリが /boot/kernelに変更になったので注意する。

Hit [Enter] to boot immediately, or any other key for command prompt
Booting [kernel] in 9 second...

Type '?' for a list of commands, 'help' for more detailed help.
ok unload
ok ls boot/kernel
boot/kernel
    kernel
    accf_data.ko
    accf_http.ko
      :
ok load boot/kernel/kernel
boot/kernel/kernel text=0x... data=0x... syms=[0x4+0x...]
ok boot


Last Update: Nov. 15 2005 Copyright © Mitzyuki IMAIZUMI 2002,2004,2005 All Rights Reserved,