Top

↵戻る[b]   ←前へ[p]   ↑上へ[u]   →次へ[n]

このページをブックマーク はてなブックマークに追加 Yahoo!ブックマークに登録 ライブドアクリップに追加 Google Bookmarks に追加

Top > FreeBSD > サーバ構築 > Kernel Config

Kernel Config

FreeBSDでコンパイルバリバリしますので機種に合わせて最適化するようmake.confを設定しておきます。

FreeBSDのハンドブックカーネルコンフィグレーションに従ってカーネルの再構築を行います。

やりたいことは、

  • 使用しない機能やデバイスをOFF
  • モジュール組み込みができるデバイスドライバはそちらでやるようにする
  • 必要な機能やデバイスを追加
です。

モジュール組み込みを優先するのは、そちらで出来ると変更の際にカーネルリコンパイルが不要になるからです。
(モジュール組み込みはloader.confにて)

元ファイル /usr/src/sys/i386/conf/GENERIC を/root配下に作成したkernelsディレクトリ直下ファイル名を任意(自分で分かるように)に変更してコピーします。

コピーしたファイルをコピー元ディレクトリにリンクしておきます。

# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/任意のファイル名
# ln -s /root/kernels/任意のファイル名

ではこのファイルを弄っていきます。

デバイスOFFするときのコツ

○○busとなっているのはそのbusを使用するデバイスを1つでも使用するならば絶対にOFFには出来ない。(コンパイル時にエラーになる)

SCTPはIPv6に依存しているらしく、IPv6が無いとコンパイルのリンク時に失敗する。(SCTPが不要ならIPv6もOFFできるがそこまで突っ込んで調べてないので。。。)

USBはモジュール化するので全OFF。

というわけで、削除しまくった結果がこちら。(表示行数を省くためコメントアウトではなく削除しています。元ファイルはもっとデカいんよ。)

cpu		I686_CPU
ident PCGZ1VP

options SCHED_ULE # ULE scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options SCTP # Stream Control Transmission Protocol
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options UFS_GJOURNAL # Enable gjournal-based UFS journaling
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_PART_GPT # GUID Partition Tables.
options GEOM_LABEL # Provides labelization
options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP THIS!]
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
options KTRACE # ktrace(1) support
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options ADAPTIVE_GIANT # Giant mutex is adaptive.
options STOP_NMI # Stop CPUS using NMI instead of IPI
options AUDIT # Security event auditing

# Bus support.
device eisa
device pci

# ATA and ATAPI devices
device ata
device atadisk # ATA disk drives
device atapicd # ATAPI CDROM drives
options ATA_STATIC_ID # Static device numbering

# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controller
device atkbd # AT keyboard
device psm # PS/2 mouse

device kbdmux # keyboard multiplexer

device vga # VGA video card driver

device splash # Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device sc

# Add suspend/resume support for the i8254.
device pmtimer

# Pseudo devices.
device loop # Network loopback
device ether # Ethernet support
device tun # Packet tunnel.
device pty # Pseudo-ttys (telnet etc)
device firmware # firmware assist module

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device bpf # Berkeley packet filter

ちなみにスケジューラーを速いと噂のULEに変更してます。

コンパイル

設定が出来たら、ドキドキのコンパイルです。エラーが出なくなるまで設定を詰めてやり直してください。

# cd /usr/src
# make buildkernel KERNCONF=さっき弄ったファイル名

インストール

コンパイルに成功したらインストールです。

# make installkernel KERNCONF=さっき弄ったファイル名

次に起動するときにインストールしたカーネルで起動します。

削り過ぎで起動するか心配な場合はモジュール組み込み等もある程度やってから再起動した方が良いかもね。

Sponsor

このページの先頭へ[h]   ↵戻る[b]   ←前へ[p]   ↑上へ[u]   →次へ[n]