FreeBSD 9.3 RELEASE - OSインストール - カーネルの再構築
- 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
と書き換えます。
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 デバイスです。
4. コンパイルとインストール
以上で、編集が終わったら、以下のようにコンパイルとインストールを行います。
cd /usr/src
make buildkernel KERNCONF=MYKERNEL
・・・
make installkernel KERNCONF=MYKERNEL
・・・
3行目:コンパイル中のメッセージが表示されます。
5行目:インストール中のメッセージが表示されます。
これでエラーがでなければ、以下のコマンドで再起動すれば新しいカーネルで動きます。
shutdown -r now
編集する前のカーネルは「kernel.old」という名前で残っています。
もし新しいカーネルで起動できなくなったらブート時に、
boot kernel.old
と打ち込んでください。
そうすれば一回前のカーネルで起動できます。
|
|