FreeBSD On ThinkPad X60


Kernel Configration

Make world をする前に カーネルコンフィグレーションファイルの準備をする。
インストールの際にインストールされるカーネルは GENERIC カーネルと呼ばれ、 もっとも一般的で汎用性の高い構成となっている。 システムを運用していく上で問題が発生しなければ、 このまま GENERIC カーネルを使用しても差し支えないのだが、 汎用性を高くするために不要な設定やドライバがカーネルに含まれているので、 メモリを圧迫してしまうし必要な機能が有効になっていな場合もあるので 不要な機能を削除したオリジナルのカーネルを構築する。

LINT

現在のカーネルで指定できるデバイス名やオプション等を全て網羅した カーネルの設定ファイルを LINT と呼ぶ。
LINT ファイルを参照するとカーネルの構築時に設定ファイルで定義できる項目を 容易に調べられるので作成しておく。 LINT はカーネルのコンフィグレーションディレクトリで make LINT を実行すると、 カーネルのリリースノート (/usr/src/sys/conf/NOTES) から 自動的に作成される。
カーネルの設定は相反する指定があるので LINT に記述されている項目を 全て指定してカーネルを構築しようとしても失敗する(と思う)。
# cd /usr/src/sys/i386/conf
# make LINT

Copy

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

Edit

コピーしたコンフィグレーションファイルと hints file を編集する。
カーネルのコンフィグレーションファイルを任意のエディタで編集して カーネルの構成を定義する。 基本的には不要なオプションやドライバを削除し、 必要なオプションやドライバを追加する。 場合によっては、各ドライバの使用する割り込みや I/O バッファのアドレスを指定する等のオプションを変更したりする必要もあるが、 ThinkPad X60 の場合は不要だった。
以下に現在使用中のカーネルコンフィグレーション概要を示す。
# cpu I486_CPU
# cpu I586_CPU
古いタイプの CPU 指定は不要なので削除
ident コンフィグレーション コンフィグレーション名を指定
hints ヒントファイル ヒントファイル名を指定
# makeoptions DEBUG=-g デバッグオプションを指定すると動作が遅くなるので削除
# options INET6 IPv6 は現状では使用しないので削除
# options MD_ROOT メモリディスクを root ファイルシステムに使用しないので削除
# options NFSSERVER NFSサーバの機能は使用しないので削除
# options NFS_ROOT ルートディレクトリを NFS でシェアしないので削除
# device eisa eisa デバイスは装備していないので削除
# device fdc USB 接続のフロッピードライブは SCSI として認識され、
通常接続のフロッピードライブは装備していないので削除
# device ataraid
# device atapicd
# device atapifd
# device atapist
IDE 接続の RAID/CD/FD/TAPEは使用しないので削除
# device ahb
# device ahc
  :
# device stg
SCSIデバイスは使用しないので削除
# device amr
# device arcmsr
  :
# device twe
SCSI 接続の RAID コントローラは使用しないので削除
# device ppc
# device ppbus
# device lpt
# device plip
# device ppi
パラレルポートは装備していないので削除
# device de
# device ixgb
  :
# device xe
X60 の場合は内蔵 NICに Intel PRO/1000 を使用しているので
miibus、em を残してネットワークカードのデバイスは全て削除
# device wlan_ccmp
# device wlan_tkip
  :
# device wl
無線 LAN ドライバは修正が入る可能性があるので
入換えを容易に行うためにモジュール可する
# device slip
Serial Line IP は(今時)使わないので削除
# device gif
# device faith
IPv6 は使用しないので削除
# device ural
# device urio
  :
# device rue
常用する USB 周辺機器以外も削除
# device fwe
FireWire 接続のネットワークインタフェースも削除
device acpi
device cpufreq
電源管理や CPU 周波数設定機能を利用するため追加
device acpi_ibm キーボード上部のボリュームボタン等が利用可能になるので追加
device sound
device snd_hda
音を鳴らしたいので追加
device drm
device i915drm
オンボードのグラフィックチップの drm 機能を使用するため追加
option PSM_HOOKRESUME
option PSM_RESETAFTERSUSPEND
suspend/resume 後の USB リセット指定
option SMBFS
option NETSMB
option NETSMBCRYPTO
option LIBMCHAIN
Windows の共有をmount (8) したいので追加
option LIBICONV Shift Jis のファイルシステムを mount (8) した際に
日本語のファイル名を表示させるために追加
option SMP ThinkPad X60 は Intel Core 2 Duo プロセッサを搭載しているので
SMP を利用するために追加

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

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

Loader

起動時にカーネルモジュールの読み込みやカーネルパラメタの設定を行うために /boot/loader.conf に以下を追加する。
ucom_load="YES"
uplcom_load="YES"
USB シリアル変換ケーブルを利用するために追加
vesa_load="YES" jfbterm を使用するために追加
ath_rate_load="YES"
ath_hal_load="YES"
wlan_load="YES"
wlan_wep_load="YES"
if_ath_load="YES"
内蔵の無線LANを使用するために追加
netgraph_load="YES"
ng_ubt_load="YES"
内蔵の Bluetooth を利用する
autoboot_delay="5" 起動時のローダの待ち時間を 5 秒にする
beastie_disable="YES" 起動時のローダのメニュー画面を無効にする

Last Update: 4 Feb. 2010