FreeBSD 11.1 RELEASE - 起動後の基本的な設定 - カーネルの再構築
1. 能書き FreeBSD をインストールした時点で動いているカーネルは、GENERIC というカーネルです。 カーネルとはメモリ管理やタスク管理デバイスの管理など、OS の基本機能を実現しています。 自分のマシンに合わせたカーネルを作成することにより、以下のような利点があります。
素早く起動するようになります カーネルは定義してあるハードウェアしか検出を行わないので、システムの起動にかかる時間が短くなります。 メモリの消費量が減少します システムに合わせたカーネルは、大抵 GENERIC カーネルより少ないメモリしか消費しません。カーネルは常にメモリ上に存在するプロセスなので、このことは重要になります。したがって、RAM が少ないシステムでは、カーネルの再構築は大変重要です。 追加のハードウェアをサポートします システムに合わせたカーネルは、サウンドカードなど GENERIC カーネルに存在しないデバイスのサポートを追加することができます。
(以上、本家の内容を転載) ただし、カーネルの再構築に失敗すると OS が起動できなくなります。現在のマシン性能は2000年頃に比べて格段に早くなっていますので、現時点の起動速度等に問題がなくカーネルの再構築に自信のない場合はやめておく方が賢明です。 また失敗した場合、何が失敗したのかを調べるよりもクリーンインストールする方が早いことがありますので、この手順は、OSインストール直後に行った方がいいかもしれません。 2. カーネルのコピー デフォルトのカーネルは、GENERICという名前で /usr/src/sys/プロセッサ名/conf/ にあります。 プロセッサ名は、x86 系であれば i386、x64 系であれば amd64 になります。 ここではプロセッサを x64 系、作成するカーネルの名称を MYKERNEL (カーネルの名称はすべて大文字で記述するのが慣習になっています) として例示します。 はじめにカーネルのコピーを作成します。 プロンプト略 cd /usr/src/sys/amd64/conf/ cp GENERIC MYKERNEL 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 デバイスです。 4. コンパイルとインストール 以上で、編集が終わったら、以下のようにコンパイルとインストールを行います。 コンパイル・インストールの手順は、以前のバージョンとだいぶ変わっていますので注意が必要です。 cd /usr/src make buildkernel KERNCONF=MYKERNEL コンパイル中のメッセージが表示されます make installkernel KERNCONF=MYKERNEL インストール中のメッセージが表示されます そこそこ時間はかかります。 これでエラーがでなければ、以下のコマンドで再起動すれば新しいカーネルで動きます。 shutdown -r now 編集する前のカーネルは「kernel.old」という名前で残っています。 もし新しいカーネルで起動できなくなったらブート時に、 boot kernel.old と打ち込んでください。 そうすれば一回前のカーネルで起動できます。
/usr/src/sys/プロセッサ名/conf/
プロンプト略 cd /usr/src/sys/amd64/conf/ cp GENERIC MYKERNEL
> dmesg
/var/run/dmesg.boot
ident GENERIC
ident MYKERNEL
options CD9660 # ISO 9660 Filesystem
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
# Floppy drives
# SCSI Controllers
# ATA/SCSI peripherals
# RAID controllers interfaced to the SCSI subsystem
# RAID controllers
device psm # PS/2 mouse
# PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support
# Serial (COM) ports
# Parallel port
# PCI Ethernet NICs.
# 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 Ethernet NICs. pccard NICs included.
# Wireless NIC cards
# USB support
cd /usr/src make buildkernel KERNCONF=MYKERNEL コンパイル中のメッセージが表示されます make installkernel KERNCONF=MYKERNEL インストール中のメッセージが表示されます
shutdown -r now
boot kernel.old