FreeBSD 8.4 RELEASE - カーネルの再構築

 クラウディア
1. 能書き
2. カーネルのコピー
3. カーネルの編集
4. コンパイルとインストール

1. 能書き

 FreeBSD をインストールした時点で動いているカーネルは、「GENERIC」というカーネルです。  カーネルとはメモリ管理やタスク管理デバイスの管理など、OS の基本機能を実現しています。  自分のマシンに合わせたカーネルを作成することにより、以下のような利点があります。
素早く起動するようになります  カーネルは定義してあるハードウェアしか検出を行わないので、システムの起動にかかる時間が短くなります。 メモリの消費量が減少します  システムに合わせたカーネルは、大抵 GENERIC カーネルより少ないメモリしか消費しません。カーネルは常にメモリ上に存在するプロセスなので、このことは重要になります。したがって、RAM が少ないシステムでは、カーネルの再構築は大変重要です。 追加のハードウェアをサポートします  システムに合わせたカーネルは、サウンドカードなど GENERIC カーネルに存在しないデバイスのサポートを追加することができます。

2. カーネルのコピー

 デフォルトのカーネルは、「GENERIC」という名前で、/usr/src/sys/i386/conf/ にあります。そこで、

> cd /usr/src/sys/i386/conf/
> cp GENERIC 仮名
と入力してカーネルのコピーを作ります。仮名の部分にはあなたがつくるシステムのわかりやすいカーネル名をいれてください。例えば「MYKERNEL」など英数字であればなんでも結構です。  慣習として、カーネル名はすべて大文字で記述するようです。

3. カーネルの編集

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

cpu             I486_CPU
cpu             I586_CPU
cpu             I686_CPU
 の部分は CPU タイプを示します。このまま残していても構いません(例: I586_CPU とすべきか I686_CPU とすべきかはっきり分からない場合)。が、カスタムカーネルを作る場合、使用している CPU だけを指定するのがベストです。使用している CPU がどのタイプか分からない場合、 /var/run/dmesg.boot ファイルを確認して起動メッセージを調べると CPU タイプが出力されているはずです。

ident           GENERIC
の部分を

ident           仮名
と書き換えます。これが新しいカーネルの名前になります。ここで「仮名」のところは「GENERIC」からコピーしてつけた新しい名前です。

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 秒間待つようにします。IDE ドライブしか使用していない場合は、コメントアウトしましょう。SCSI 機器を使用している場合でも、起動時間を短くするため、秒数を小さくしてみてください。そうした場合に FreeBSD が SCSI 機器を認識しなくなった場合は時間を元に戻してください。  以下、デバイスのオプションであなたのマシンで使っていないものを削除していきます。よくわからないものはそのまま残しておいたほうが賢明です。

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

# RAID controllers interfaced to the SCSI subsystem
device          amr             # AMI MegaRAID
device          arcmsr          # Areca SATA II RAID
device          asr             # DPT SmartRAID V, VI and Adaptec SCSI RAID
device          ciss            # Compaq Smart RAID 5*
device          dpt             # DPT Smartcache III, IV - See NOTES for options
device          hptmv           # Highpoint RocketRAID 182x
device          hptrr           # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
device          iir             # Intel Integrated RAID
device          ips             # IBM (Adaptec) ServeRAID
device          mly             # Mylex AcceleRAID/eXtremeRAID
device          twa             # 3ware 9000 series PATA/SATA RAID

# RAID controllers
device          aac             # Adaptec FSA RAID
device          aacp            # SCSI passthrough for aac (requires CAM)
device          ida             # Compaq Smart RAID
device          mfi             # LSI MegaRAID SAS
device          mlx             # Mylex DAC960 family
device          pst             # Promise Supertrak SX6000
device          twe             # 3ware ATA RAID
 RAID コントローラです。RAID を使用していないならば、すべてコメントアウトしましょう。RAID を使用している場合でも、使用しているボード以外の行は、コメントアウトしましょう。

# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
device          cbb             # cardbus (yenta) bridge
device          pccard          # PC Card (16-bit) bus
device          cardbus         # CardBus (32-bit) bus
 PC カードデバイスです。PC カードを使用していなければ、すべてコメントアウトしましょう。

# PCI Ethernet NICs.
device          de              # DEC/Intel DC21x4x (``Tulip'')
device          em              # Intel PRO/1000 Gigabit Ethernet Family
device          igb             # Intel PRO/1000 PCIE Server Gigabit Family
device          ixgb            # Intel PRO/10GbE Ethernet Card
device          le              # AMD Am7900 LANCE and Am79C9xx PCnet
device          ti              # Alteon Networks Tigon I/II gigabit Ethernet
device          txp             # 3Com 3cR990 (``Typhoon'')
device          vx              # 3Com 3c590, 3c595 (``Vortex'')

# 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!
device          miibus          # MII bus support
device          ae              # Attansic/Atheros L2 FastEthernet
device          age             # Attansic/Atheros L1 Gigabit Ethernet
device          alc             # Atheros AR8131/AR8132 Ethernet
device          ale             # Atheros AR8121/AR8113/AR8114 Ethernet
device          bce             # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device          bfe             # Broadcom BCM440x 10/100 Ethernet
device          bge             # Broadcom BCM570xx Gigabit Ethernet
device          dc              # DEC/Intel 21143 and various workalikes
device          et              # Agere ET1310 10/100/Gigabit Ethernet
device          fxp             # Intel EtherExpress PRO/100B (82557, 82558)
device          jme             # JMicron JMC250 Gigabit/JMC260 Fast Ethernet
device          lge             # Level 1 LXT1001 gigabit Ethernet
device          msk             # Marvell/SysKonnect Yukon II Gigabit Ethernet
device          nfe             # nVidia nForce MCP on-board Ethernet
device          nge             # NatSemi DP83820 gigabit Ethernet
#device         nve             # nVidia nForce MCP on-board Ethernet Networking
device          pcn             # AMD Am79C97x PCI 10/100 (precedence over 'le')
device          re              # RealTek 8139C+/8169/8169S/8110S
device          rl              # RealTek 8129/8139
device          sf              # Adaptec AIC-6915 (``Starfire'')
device          sge             # Silicon Integrated Systems SiS190/191
device          sis             # Silicon Integrated Systems SiS 900/SiS 7016
device          sk              # SysKonnect SK-984x & SK-982x gigabit Ethernet
device          ste             # Sundance ST201 (D-Link DFE-550TX)
device          stge            # Sundance/Tamarack TC9021 gigabit Ethernet
device          tl              # Texas Instruments ThunderLAN
device          tx              # SMC EtherPower II (83c170 ``EPIC'')
device          vge             # VIA VT612x gigabit Ethernet
device          vr              # VIA Rhine, Rhine II
device          wb              # Winbond W89C840F
device          xl              # 3Com 3c90x (``Boomerang'', ``Cyclone'')

# ISA Ethernet NICs.  pccard NICs included.
device          cs              # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device          ed              # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device          ex              # Intel EtherExpress Pro/10 and Pro/10+
device          ep              # Etherlink III based cards
device          fe              # Fujitsu MB8696x based cards
device          ie              # EtherExpress 8/16, 3C507, StarLAN 10 etc.
device          sn              # SMC's 9000 series of Ethernet chips
device          xe              # Xircom pccard Ethernet

# Wireless NIC cards
device          wlan            # 802.11 support
options         IEEE80211_DEBUG # enable debug msgs
options         IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's
options         IEEE80211_SUPPORT_MESH  # enable 802.11s draft support
device          wlan_wep        # 802.11 WEP support
device          wlan_ccmp       # 802.11 CCMP support
device          wlan_tkip       # 802.11 TKIP support
device          wlan_amrr       # AMRR transmit rate control algorithm
device          an              # Aironet 4500/4800 802.11 wireless NICs.
device          ath             # Atheros pci/cardbus NIC's
device          ath_hal         # pci/cardbus chip support
options         AH_SUPPORT_AR5416       # enable AR5416 tx/rx descriptors
device          ath_rate_sample # SampleRate tx rate control for ath
device          ral             # Ralink Technology RT2500 wireless NICs.
device          wi              # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device         wl              # Older non 802.11 Wavelan wireless NIC.
 ネットワークデバイスです。使用しているデバイス以外のものは、コメントアウトします。  ただし、miibus の行はコメントアウトしないでください。これは PCI 10/100 イーサネット NIC、すなわち MII に従うトランシーバや MII のようなトランシーバ制御インタフェースを実装するものに必要となります。

# USB support
device          uhci            # UHCI PCI->USB interface
device          ohci            # OHCI PCI->USB interface
device          usb             # USB Bus (required)
device          ugen            # Generic
device          uhid            # "Human Interface Devices"
device          ukbd            # Keyboard
device          ulpt            # Printer
device          umass           # Disks/Mass storage - Requires scbus and da
device          ums             # Mouse
device          uscanner        # Scanners
device          urio            # Diamond Rio MP3 Player
# USB Ethernet, requires mii
device          aue             # ADMtek USB ethernet
device          cue             # CATC USB ethernet
device          kue             # Kawasaki LSI USB ethernet
 USB デバイスです。USB デバイスを使用していなければ、すべてコメントアウトしましょう。  もし、ユーザの領域を制限したいならば、

options         QUOTA
 という1行を最後に追加しておいてください。後になって意味を持ってきます。

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

 以上で、編集が終わったら、以下のようにコンパイルとインストールを行います。

 > config 仮名
Don't forget to do a ``make depend''
Kernel build directory is ../compile/仮名
 > cd ../compile/仮名/
 > make depend
・・・
 > make
・・・
 > make install
・・・
 これでエラーがでなければ、以下のコマンドで再起動すれば新しいカーネルで動くはずです。

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

boot kernel.old
と打ち込んでください。  そうすれば一回前のカーネルで起動できます。
ハイスピードプラン世界最大級のオンライン英会話EF English Live