3. FreeBSD 11.1 RELEASE - OS 起動後の基本的な設定 - カーネルの再構築

 
3.1 能書き
3.2 カーネルのコピー
3.3 カーネルの編集
3.4 コンパイルとインストール

3.1 能書き

 FreeBSD をインストールした時点で動いているカーネルは、GENERIC というカーネルです。  カーネルとはメモリ管理やタスク管理デバイスの管理など、OS の基本機能を実現しています。  自分のマシンに合わせたカーネルを作成することにより、以下のような利点があります。
 素早く起動するようになります
 カーネルは定義してあるハードウェアしか検出を行わないので、システムの起動にかかる時間が短くなります。

 メモリの消費量が減少します
 システムに合わせたカーネルは、大抵 GENERIC カーネルより少ないメモリしか消費しません。カーネルは常にメモリ上に存在するプロセスなので、このことは重要になります。したがって、RAM が少ないシステムでは、カーネルの再構築は大変重要です。

 追加のハードウェアをサポートします
 システムに合わせたカーネルは、サウンドカードなど GENERIC カーネルに存在しないデバイスのサポートを追加することができます。
 (以上、本家の内容を転載)

 ただし、カーネルの再構築に失敗すると OS が起動できなくなります。現在のマシン性能は2000年頃に比べて格段に早くなっていますので、現時点の起動速度等に問題がなくカーネルの再構築に自信のない場合はやめておく方が賢明です。
 また失敗した場合、何が失敗したのかを調べるよりもクリーンインストールする方が早いことがありますので、この手順は、OSインストール直後に行った方がいいかもしれません。

3.2 カーネルのコピー

 デフォルトのカーネルは、GENERICという名前で

/usr/src/sys/プロセッサ名/conf/
 にあります。  プロセッサ名は、x86 系であれば i386、x64 系であれば amd64 になります。  ここではプロセッサを x64 系、作成するカーネルの名称を MYKERNEL (カーネルの名称はすべて大文字で記述するのが慣習になっています) として例示します。  はじめにカーネルのコピーを作成します。

プロンプト略
cd /usr/src/sys/amd64/conf/
cp GENERIC MYKERNEL

3.3 カーネルの編集

 コピーしたカーネルをエディタを用いて編集します。  空白行は、読みやすくするためのものなので、出来ればそのまま残しておきます。自分で読みやすくしたければ適当な行に空白行を挿入します。  #(シャープ) 以降は、コメントの意味を持ちます(これは、大抵の unix 系のコンフィグレーションファイルの記述に共通です)。  もし、不必要な行を削除する場合は、出来れば行をそのまま完全に削除するよりは、先頭カラムに"#"を挿入します。そうすることで、不幸な事故が起きたときにも容易にもとに戻せます。  起動時のログを

> dmesg
 で見ることができます。  実装していて、OS が認識しているハードウェアが記述されていますので、ハードウェアの変更を予定していなければ、実装しているハードウェア部分のみを残すことも可能です。  ログが起動後のメッセージで埋め尽くされている場合は

/var/run/dmesg.boot
 に残されています。  以下、変更する部分の候補を示します。

ident		GENERIC
 ここは必須で書き換えます。

ident		MYKERNEL
 MYKERNEL は例示のカーネル名ですがドメイン名でもなんでも自分で命名するものをつけます。

options 	CD9660			# ISO 9660 Filesystem
 この行は、光学ドライブの ISO 9660 ファイルシステムをマウントするのに使用します。  CD-ROM を使用するのは、光学ディスクを時々マウントするだけなら(いれっぱなしでなければ)この行をコメントアウトしても大丈夫です (データ CD を最初にマウントする時、自動的にロードされます)。

options 	SCSI_DELAY=5000		# Delay (in ms) before probing SCSI
 この行は, カーネルがそれぞれの SCSI 機器を検出する前に 15 秒間待つようにします。  SCSI 機器を接続しないのであれば、コメントアウトします。  SCSI 機器を使用している場合でも、起動時間を短くするため、秒数を小さくしてみてください。SCSI 機器を認識しなくなった場合は時間を元に戻します。  以下、デバイスのオプションでマシンのハードウェア構成上、使用していないものをコメント化していきます。よくわからないものはそのまま残しておいたほうが賢明です。  コメント化しすぎるとカーネルビルド時にエラーになります。  明らかに不要なもののみにコメント化するように注意深くすることが必要です。

# Floppy drives
 に続く行はフロッピーの定義です。フロッピーを使用していないマシンであれば、コメントアウトします。

# SCSI Controllers
 に続く行は SCSI コントローラの定義です。SCSI コントローラを使用しないのであれば、コメントアウトします。  以下、同様に何を定義しているかを記述していきますので不要なものをコメントアウトします。

# ATA/SCSI peripherals
 に続く行は、SCSI の周辺機器です。

# RAID controllers interfaced to the SCSI subsystem
 に続く行は、SCSI の RAID コントローラです。

# RAID controllers
 に続く行は、RAID コントローラです。

device		psm			# PS/2 mouse
 PS2 マウスの定義です。

# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
 に続く行は、PC カードデバイスです。

# Serial (COM) ports
 に続く行は、COM ポート(RS-232C またはシリアルポートともいう)です。

# Parallel port
 に続く行は、パラレルポートです。  コメント化していいのはこのあたりまでだと思います。以下をコメント化するのは結構危険です。

# PCI Ethernet NICs.
 に続く行は、PCI 系の NIC(Network Interface Card) です。

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
 に続く行は、ISA 系の NIC です。  下行にあるように、インテル系の NIC を使用している場合は、device miibus の行は絶対に残す必要があります。

# ISA Ethernet NICs.  pccard NICs included.
 に続く行は、ISA の NIC です。

# Wireless NIC cards
 に続く行は、無線の NIC です。

# USB support
 に続く行は、USB デバイスです。

3.4 コンパイルとインストール

 以上で、編集が終わったら、以下のようにコンパイルとインストールを行います。  コンパイル・インストールの手順は、以前のバージョンとだいぶ変わっていますので注意が必要です。

> cd /usr/src
> make buildkernel KERNCONF=MYKERNEL
    コンパイル中のメッセージが表示されます
> make installkernel KERNCONF=MYKERNEL
    インストール中のメッセージが表示されます
 そこそこ時間はかかります。  これでエラーがでなければ、以下のコマンドで再起動すれば新しいカーネルで動きます。

 > shutdown -r now
 編集する前のカーネルは「kernel.old」という名前で残っています。  もし新しいカーネルで起動できなくなったらブート時に、

boot kernel.old
 と打ち込んでください。  そうすれば一回前のカーネルで起動できます。