FreeBSDでコンパイルバリバリしますので機種に合わせて最適化するようmake.confを設定しておきます。
FreeBSDのハンドブックカーネルコンフィグレーションに従ってカーネルの再構築を行います。
やりたいことは、
モジュール組み込みを優先するのは、そちらで出来ると変更の際にカーネルリコンパイルが不要になるからです。
(モジュール組み込みは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/任意のファイル名
ではこのファイルを弄っていきます。
○○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=さっき弄ったファイル名
次に起動するときにインストールしたカーネルで起動します。
削り過ぎで起動するか心配な場合はモジュール組み込み等もある程度やってから再起動した方が良いかもね。
----- 【サーバ構築】 目次 -----