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カーネルなど、
確実に起動できるカーネルとカーネルモジュールをバックアップしておくと良い。
|
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
|
|