Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Feb 2000 10:03:06 -0500 (EST)
From:      "Michael J. Walsh" <mike@walshm.npt.nuwc.navy.mil>
To:        freebsd-questions@FreeBSD.ORG
Subject:   Why is my new kernel so big?
Message-ID:  <Pine.BSF.4.21.0002250927430.11726-200000@walshm.npt.nuwc.navy.mil>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]

I just installed FreeBSD 3.4 (January 2000 CD-ROM release) for the first
time on a machine with dual Pentium III 600 processors.  The only hard
disk is devoted entirely to FreeBSD.  I did a novice install using
sysintall, and everything works great!  I did not use UserConfig to
configure the kernel for SMP at this point because it did not look
possible.

Then I decided to configure my kernel for SMP.  I followed the procedure
listed in Greg Lehey's book (3-rd edition) for rebuilding the
kernel; specifically, I 

1. Enabled the SMP options in a copy of the GENERIC cofiguration file
(attached) and disabled the inappropriate cpu options,

machine         "i386"
#cpu            "I386_CPU"
#cpu            "I486_CPU"
cpu             "I586_CPU"
cpu             "I686_CPU"
ident           GENERIC
maxusers        32

# 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=3                  # number of busses  
options         NAPIC=1                 # number of IO APICs
options         NINTR=24                # number of INTs

2. Added the MAXMEM = 128 Mb line to make sure my system recognizes all of
its memory (probably unnecessary),

options         "MAXMEM=(128*1024)"     

I then did make to compile and link the new kernel.  My question is
this: Why is my new kernel so big?  A long listing on the new kernel gives

> ll /sys/compile/WALSHM-SMP/kernel 
-rwxr-xr-x  1 root  wheel  11568413 Feb 25 09:19
/sys/compile/WALSHM-SMP/kernel*

The old kernel (the one created on installation) is considerably smaller:

> ll /kernel
-rwxr-xr-x  1 root  wheel  2341252 Dec 29 21:57 /kernel*

Doesn't sysinstall essentially use the GENERIC configuration file when
building the first kernel?  Or is this file modified in some way
during the installation by the hardware probes?

Many thanks in advance,

Mike

p.s.  I was a little confused by the output of mptable.  It said NBUS=3
and NINTR=24, which I used in my new config file.  However, my motherboard
(Matsonic MS7070SD) documentation says that it has

1 32-bit AGP slot
4 32-bit PCI slots
2 16-bit ISA slots

What is NBUS refering to in the config file?  Also, I could not extract
any information on the "number of INTs" in my motherboard documentation,
so I'm taking the mptable output on faith.  I'm obviously not hardware
literate.
 
------------------------------------------------------------------------------
Michael J. Walsh             Naval Undersea Warfare Center Divsion Newport, RI
Phone: 401.832.4155      22 Combat Systems Dept, 221 Advanced Systems Division
Fax: 401.832.4749                          2211, Information Processing Branch

[-- Attachment #2 --]
#
# WALSHM-SMP -- Configuration file for Dual Pentium III 600 system
#
# For more information on this file, please read the handbook section on
# Kernel Configuration Files:
#
#    http://www.freebsd.org/handbook/kernelconfig-config.html
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server (http://www.FreeBSD.ORG/) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ./LINT configuration file. If you are
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.143.2.24 1999/12/05 01:56:42 luoqi Exp $

machine		"i386"
#cpu		"I386_CPU"
#cpu		"I486_CPU"
cpu		"I586_CPU"
cpu		"I686_CPU"
ident		GENERIC
maxusers	32

options		"MAXMEM=(128*1024)"

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

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=3			# 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
disk		fd1	at fdc0 drive 1

# IDE controller and disks
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
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.
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 ?
controller	aic0	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
#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.
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		sis0		# Silicon Integrated Systems SiS 900/SiS 7016
device		ste0		# Sundance ST201 (D-Link DFE-550)
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.
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

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0002250927430.11726-200000>