FreeBSDのカーネル再構築

デフォルトのカーネルには必要のないものも含まれているのでメモリを占有したりして良いことはありません。カーネルの再構築をします。

まずカーネルのソースが有るか確認、無ければ /stand/sysinstallからConfigure -->
Distribution --> src --> DES以外のkernel srcでまずはソースをインストールします。

cd /usr/src/sys/i386/conf
cp GENERIC [自分でこれから作るカーネルの名前]

#
# GENERIC -- Generic machine with WD/AHx/NCR/BTx family disks
#

machine		"i386"
cpu		"I386_CPU"
cpu		"I486_CPU"
cpu		"I586_CPU"
cpu		"I686_CPU"

# ★新しいカーネルの名前に置き換える。例・MYKERNEL
ident		MYKERNEL
maxusers	32

options 	MATH_EMULATE		#Support for x87 emulation
options 	INET			#InterNETworking
options 	FFS			#Berkeley Fast Filesystem
options 	FFS_ROOT		#FFS usable as root device [keep this!]
options 	MFS			#Memory Filesystem
options 	MFS_ROOT		#MFS usable as root device, "MFS" req'ed
options 	NFS			#Network Filesystem
options 	NFS_ROOT		#NFS usable as root device, "NFS" req'ed
options 	MSDOSFS			#MSDOS Filesystem
options 	"CD9660"		#ISO 9660 Filesystem
options 	"CD9660_ROOT"		#CD-ROM usable as root. "CD9660" req'ed
options 	PROCFS			#Process filesystem
options 	"COMPAT_43"		#Compatible with BSD 4.3 [KEEP THIS!]
options 	SCSI_DELAY=15000	#Be pessimistic about Joe SCSI device
options 	UCONSOLE		#Allow users to grab the console
options 	FAILSAFE		#Be conservative
options 	USERCONFIG		#boot -c editor
options 	VISUAL_USERCONFIG	#visual boot -c editor
options 	KTRACE			#ktrace(1) syscall trace support
options 	SYSVSHM			#SYSV-style shared memory
options 	SYSVMSG			#SYSV-style message queues
options 	SYSVSEM			#SYSV-style semaphores
# ★以下2行はipfw/natdを使う場合に付け加えておく。
options		IPFIREWALL		#natd
options		IPDIVERT		#natd
# ★カーネルのあるディスクを間違いなく。SCSIならsd0(da0)とか・・・
# ★ここを間違えると絶対起動しないカーネルが出来上がります。
config		kernel	root on wd0

# To make an SMP kernel, the next two are needed
#options 	SMP			# Symmetric MultiProcessor Kernel
#options 	APIC_IO			# Symmetric (APIC) I/O
# Optionally these may need tweaked, (defaults shown):
#options 	NCPU=2			# number of CPUs
#options 	NBUS=4			# number of busses
#options 	NAPIC=1			# number of IO APICs
#options 	NINTR=24		# number of INTs

controller	isa0
controller	pnp0			# PnP support for ISA
controller	eisa0
controller	pci0

# Floppy drives
controller	fdc0	at isa? port "IO_FD1" bio irq 6 drq 2
disk		fd0	at fdc0 drive 0
# ★フロッピーディスクは普通1基だけなのでfd1はコメントアウトしておく。
# ★フロッピードライブが内場合は全てコメントアウトしても良いが緊急起動媒体
# ★は一つくらい残して置いた方が無難。
#disk		fd1	at fdc0 drive 1

# IDE controller and disks
# ★IDE HDDも必要なものだけ残しておく場合と緊急時に取りあえずつなげられる
# ★ように残しておくと言うポリシーがある。私の場合は全部残しておく方針。
# ★wd0/wd1=プライマリ・マスタ/スレイブ wd2/wd3=セカンダリ・マスタ/スレイブ
options		"CMD640"	# work around CMD640 chip deficiency
controller	wdc0	at isa? port "IO_WD1" bio irq 14
disk		wd0	at wdc0 drive 0
disk		wd1	at wdc0 drive 1

controller	wdc1	at isa? port "IO_WD2" bio irq 15
disk		wd2	at wdc1 drive 0
disk		wd3	at wdc1 drive 1

# ATAPI devices
options		ATAPI		#Enable ATAPI support for IDE bus
options		ATAPI_STATIC	#Don't do it as an LKM
device		acd0		#IDE CD-ROM
# ★IDE Floppyが無いのでコメントアウト
#device		wfd0		#IDE Floppy (e.g. LS-120)

# SCSI Controllers
# A single entry for any of these controllers (ncr, ahb, ahc) is
# sufficient for any number of installed devices.
# ★以下SCSIデバイスが無い場合は全部コメントアウト
#controller	ncr0		# NCR/Symbios Logic
#controller	ahb0		# EISA AHA1742 family
#controller	ahc0		# AHA2940 and onboard AIC7xxx devices
#controller	amd0		# AMD 53C974 (Teckram DC-390(T))
#controller	isp0		# Qlogic family
#controller	dpt0		# DPT Smartcache - See LINT for options!

#controller	adv0	at isa? port ? cam irq ?
#controller	adw0
#controller	bt0	at isa? port ? cam irq ?
#controller	aha0	at isa? port ? cam irq ?

# SCSI peripherals
# Only one of each of these is needed, they are dynamically allocated.
#controller	scbus0		# SCSI bus (required)
#device		da0		# Direct Access (disks)
#device		sa0		# Sequential Access (tape etc)
#device		cd0		# CD
#device		pass0		# Passthrough device (direct SCSI)

# Proprietary or custom CD-ROM Interfaces
#device		wt0	at isa? port 0x300 bio irq 5 drq 1
#device		mcd0	at isa? port 0x300 bio irq 10
#device		matcd0	at isa? port 0x230 bio
#device		scd0	at isa? port 0x230 bio

# atkbdc0 controls both the keyboard and the PS/2 mouse
controller	atkbdc0	at isa? port IO_KBD tty
device		atkbd0	at isa? tty irq 1
device		psm0	at isa? tty irq 12

device		vga0	at isa? port ? conflicts

# splash screen/screen saver
pseudo-device	splash

# syscons is the default console driver, resembling an SCO console
device		sc0	at isa? tty

# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device		vt0	at isa? tty
#options 	XSERVER			# support for X server
#options 	FAT_CURSOR		# start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options 	PCVT_SCANSET=2		# IBM keyboards are non-std

# Floating point support - do not disable.
device		npx0	at isa? port IO_NPX irq 13

# Power management support (see LINT for more options)
device		apm0    at isa?	disable	flags 0x31 # Advanced Power Management

# PCCARD (PCMCIA) support
# ★PCMCIAデバイスが無いのでコメントアウト。(ノート等)
#controller	card0
#device		pcic0	at card?
#device		pcic1	at card?

# Serial (COM) ports
# ★シリアルポート必要な数だけ残してコメントアウト
device		sio0	at isa? port "IO_COM1" flags 0x10 tty irq 4
device		sio1	at isa? port "IO_COM2" tty irq 3
#device		sio2	at isa? disable port "IO_COM3" tty irq 5
#device		sio3	at isa? disable port "IO_COM4" tty irq 9

# Parallel port
device		ppc0	at isa? port? flags 0x40 net irq 7
controller	ppbus0			# Parallel port bus (required)
device		lpt0	at ppbus?	# Printer
device		plip0	at ppbus?	# TCP/IP over parallel
device		ppi0	at ppbus?	# Parallel port interface device
#controller	vpo0	at ppbus?	# Requires scbus and da0

# PCI Ethernet NICs.
# ★PCIのNICドライバ。必要なものだけ残して後はコメントアウト。
#device		al0		# ADMtek AL981 (``Comet'')
#device		ax0		# ASIX AX88140A
#device		de0		# DEC/Intel DC21x4x (``Tulip'')
#device		fxp0		# Intel EtherExpress PRO/100B (82557, 82558)
#device		mx0		# Macronix 98713/98715/98725 (``PMAC'')
#device		pn0		# Lite-On 82c168/82c169 (``PNIC'')
device		rl0		# RealTek 8129/8139
#device		sf0		# Adaptec AIC-6915 DuraLAN (``Starfire'')
#device		tl0		# Texas Instruments ThunderLAN
#device		tx0		# SMC 9432TX (83c170 ``EPIC'')
#device		vr0		# VIA Rhine, Rhine II
#device		vx0		# 3Com 3c590, 3c595 (``Vortex'')
#device		wb0		# Winbond W89C840F
#device		xl0		# 3Com 3c90x (``Boomerang'', ``Cyclone'')

# ISA Ethernet NICs.
# Order is important here due to intrusive probes, do *not* alphabetize
# this list of network interfaces until the probes have been fixed.
# Right now it appears that the ie0 must be probed before ep0. See
# revision 1.20 of this file.
# ★イマドキISAのNICを使う必要は無いので全部コメントアウト
#device		ed0	at isa? port 0x280 net irq 10 iomem 0xd8000
#device		ie0	at isa? port 0x300 net irq 10 iomem 0xd0000
#device		ep0	at isa? port 0x300 net irq 10
#device		ex0	at isa? port? net irq?
#device		fe0	at isa? port 0x300 net irq ?
#device		le0	at isa? port 0x300 net irq 5 iomem 0xd0000
#device		lnc0	at isa? port 0x280 net irq 10 drq 0
#device		cs0	at isa? port 0x300 net irq ?
# requires PCCARD (PCMCIA) support to be activated
#device		xe0	at isa? port? net irq ?

# PCCARD NIC drivers.
# ze and zp take over the pcic and cannot coexist with generic pccard
# support, nor the ed and ep drivers they replace.
#device		ze0	at isa? port 0x300 net irq 10 iomem 0xd8000
#device		zp0	at isa? port 0x300 net irq 10 iomem 0xd8000

# Pseudo devices - the number indicates how many units to allocated.
pseudo-device	loop		# Network loopback
pseudo-device	ether		# Ethernet support
pseudo-device	sl	1	# Kernel SLIP
pseudo-device	ppp	1	# Kernel PPP
pseudo-device	tun	1	# Packet tunnel
pseudo-device	pty	16	# Pseudo-ttys (telnet etc)
pseudo-device	gzip		# Exec gzipped a.out's

# The `bpfilter' pseudo-device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# The number of devices determines the maximum number of
# simultaneous BPF clients programs runnable.
pseudo-device	bpfilter 1	#Berkeley packet filter




編集が終わったら
config [カーネルの名前]
cd ../../compile/ [カーネルの名前]
make depend ; make
make install

でおしまいです。
古いカーネルは/kernel.oldとして残っていますので、新しいカーネルでうまく起動しない場合は、起動時のBoot:と表示されたときにkernel.oldとすれば古いカーネルで起動します。

高村のホーム   いとうのホーム