FreeBSD 10.2 RELEASE - インストール - カーネルの再構築


 クラウディア


1. 概要
2. カーネルのコピー
3. カーネルの編集
4. コンパイルとインストール

1. 概要

 「FreeBSD」をインストールした時点で動いているカーネルは、「GENERIC」というカーネルです。  カーネルとはメモリ管理やタスク管理デバイスの管理など、OS の基本機能を実現しています。  自分のマシンに合わせたカーネルを作成することにより、以下のような利点があります。
 素早く起動するようになります  カーネルは定義してあるハードウェアしか検出を行わないので、システムの起動にかかる時間が短くなります。  メモリの消費量が減少します  システムに合わせたカーネルは、大抵 GENERIC カーネルより少ないメモリしか消費しません。カーネルは常にメモリ上に存在するプロセスなので、このことは重要になります。したがって、RAM が少ないシステムでは、カーネルの再構築は大変重要です。  追加のハードウェアをサポートします  システムに合わせたカーネルは、サウンドカードなど GENERIC カーネルに存在しないデバイスのサポートを追加することができます。
 ただし、カーネルの再構築に失敗すると OS が起動できなくなります。現在のマシン性能は2000年頃に比べて格段に早くなっていますので、現時点の起動速度等に問題がなくカーネルの再構築に自信のない場合はやめておく方が賢明です。  また失敗した場合、何が失敗したのかを調べるよりもクリーンインストールする方が早いことがありますので、この手順は、OSインストール直後に行った方がいいかもしれません。

2. カーネルのコピー

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

> cd /usr/src/sys/i386/conf/
> cp GENERIC MYKERNEL

3. カーネルの編集

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

cpu		I486_CPU
cpu		I586_CPU
cpu		I686_CPU
 の部分はプロセッサタイプを示します。このまま残していても構いませんが、使用しているプロセッサがはっきりしている場合は、使用しているもののみ残します。  起動時のログを

> dmesg
 で見ることができます。ログにプロセッサ名も出ていますので、それで調べることができます。

ident           GENERIC
 の部分を

ident            MYKERNEL
 と書き換えます。(MYKERNEL はドメイン名でもなんでも自分で命名できます)

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

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

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

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

# SCSI peripherals
 SCSI の周辺機器です。

# RAID controllers interfaced to the SCSI subsystem
 SCSI の RAID コントローラです。

# RAID controllers
 RAID コントローラです。

# 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) です。

# ISA Ethernet NICs.  pccard NICs included.
 ISA 系の NIC です。

# Wireless NIC cards
 無線の NIC です。

# USB support
 USB デバイスです。  余談  FreeBSD 10.1-RELEASE のカーネルを眺めていたら、末尾の方に HyperV のドライバやら VMware support のドライバがありました。時代は変わっていくんですな。

4. コンパイルとインストール

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

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

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

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

earthcar(アースカー)
【usus ウズウズ】