Date: Fri, 28 Apr 1995 21:37:24 -0700 From: pvinci@ix.netcom.com (Paul Vinciguerra) To: doc@freebsd.org Subject: having some troubles... Message-ID: <199504290437.VAA29892@ix4.ix.netcom.com>
index | next in thread | raw e-mail
Well, I'm back working on config.sgml. Look at the following:
&rsgq ,&lsqb don't work and [] work *sometimes* 8^)
They don't work if ... [ ... <em> .... </em> ... ]
sgmlformat doesn't work right ...
compile config.sgml (attached) as -html and as -ascii then look at the
CPU section... Where did the lines on the .txt version go?
I'm also looking on feedback, feedback, feedback ....
thanks,
Paul
------------- config.sgml ---------------------------------
<!doctype linuxdoc public "-//Linux//DTD linuxdoc//EN">
<linuxdoc><article>
<titlepag><title>Building the kernel with config</title>
<author><name>Paul Vinciguerra</name></author>
<date>V1.0, April 8, 1995</date>
<abstract>This document explains the the process of reconfiguring the
kernel.
</abstract></titlepag>
<toc>
<sect><heading>Introduction</heading><p>
The GENERIC kernel shipped as a starting point for most users to be
able
to get their systems up and running under FreeBSD 2.1.
Most users rebuild their kernels to:<newline>
<itemize>
<item>Add support for new hardware</item>
<item>Remove drivers to reduce the size of the kernel and free
up RAM.</item>
<item>Add additional functionality to the system.(eg. PPP or
SLIP support)</item>
</itemize>
In order to rebuild the kernel you must have the srcdist installed.
</sect>
<sect><heading>What goes in the config file?</heading><p></p>
<sect1><heading>Global parameters</heading><p>
A system configuration file must contains the following:
<itemize>
<item> <ref id="machine" name="Machine Type"></item>
<item> <ref id="cpu" name="CPU Type"></item>
<item> <ref id="sysid" name="System Identification"></item>
<item> <ref id="maxusers" name="Maximum number of users"></item>
</itemize></p>
<sect2><heading>Machine Type<label id="machine"></heading><p>
machine <em>"type"</em></p><p>
The machine type indicates the type of system on which FreeBSD will
run.</p> <p>The machine type tells the system that it can find the
data files in "/sys/<em>type</em>". This entry should not be
changed.</p> <p>
<verb>
machine "i386"
</verb>
</p></sect2>
<sect2> <heading>CPU Type<label id="cpu"></heading><p>
The CPU type indicates the type or types of CPU's that the kernel will
run on.</p> <p>
The kernel can be built to run on a single CPU type
<verb>
cpu "I586_CPU"
</verb> and would need to be recompiled to run on a '486 or '386
system.</p>
<p>
.. or a single kernel can be built to run on any of multiple CPU's
<verb>
cpu "I386_CPU"
cpu "I486_CPU"
cpu "I586_CPU"
</verb>
Deleting support for unnecesary CPU's may make parts of the system
faster.
</p></sect2>
<sect2><heading>System Identification<label id="sysid"></heading><p>
ident <em>name</em>
The system identification is a moniker attached to the system, and is
often the machine on which the system is to run. For example, the
FreeBSD.org system is named "freefall" and by placing the entry
<verb>
ident FREEFALL
</verb>
in the configuration file would create a global <tt>#define FREEFALL
</tt>
and would include compilation of all the FREEFALL specific changes
found in the source code to be included in the kernel.</p> <p>
This entry is <tt>GENERIC</tt> by default.
<verb>
ident GENERIC
</verb>
</p><p></p> </sect2>
<sect2><heading>Maxusers <em>number</em><label
id="maxusers"></heading><p>
This entry specifies the expected number of simultaneously active users
on the system. This number is used to determine the size of the system
data structures. <verb>
maxusers 10
</verb>
These structures may be found in: <tt>/sys/conf/param.c
</tt> <newline><newline>
It is important to note the difference between users and processes. If
you are running a news server or a httpd server, you would consider
each a single user regardless of how many connections each had. Each
user would
spawn a child process for each connection. Increasing the
<tt>maxusers</tt> will not increase the number of connections. To
increase the number of open connections, increase following
options:<verb>
options "CHILD_MAX=128"
options "OPEN_MAX=128"
</verb>
</p>
</sect2></sect1>
<sect1><heading>Config section</heading><p>
The config directive determines the location of root file system as
well as other key file systems.
<quote>
config <em>kernel</em> <newline>
root [on] <em>root-device</em><newline>
swap [on] <em>swap-device</em> and <em>swap-device</em>
..<newline>
dumps [on] <em>dump-device</em><newline>
args [on] <em>arg-devide</em><newline>
</quote>
The default entry of:
<verb>
config kernel root on wd0 swap on wd0 and wd1 and sd0 and sd1
dumps on wd0</verb>
states that the root partition is on device wd0; swapping is on
device(s) wd0, wd1, sd0, sd1; dumps occur on wd0.</p></sect1>
<sect1><heading> Options</heading><p>
The options directive instructs the compiler to include optional code
in the kernel. For example:<newline><verb>
options "CHILD_MAX=128"
options "OPEN_MAX=128"
options MATH_EMULATE #Support for x87 emulation
#options GPL_MATH_EMULATE #Support for x87 emualtion via
options "COMPAT_43"
options USER_LDT #allow user-level control of
i386 ldt
# These three options provide support for System V Interface
options SYSVSHM
options SYSVSEM
options SYSVMSG
options DDB
options DODUMP
options KTRACE #kernel tracing
options DIAGNOSTIC
options UCONSOLE
options INET #Internet communications
protocols
options ISO
options CCITT #X.25 network layer
options NS #Xerox NS communications
protocols
options TPIP #ISO TP class 4 over IP
options TPCONS #ISO TP class 0 over X.25
options NSIP #XNS over IP
options EON #ISO CLNP over IP
options LLC #X.25 link layer for Ethernets
options HDLC #X.25 link layer for serial
lines
# Internet family options:
options "TCP_COMPAT_42" #emulate 4.2BSD TCP
bugs
options GATEWAY #internetwork gateway
options MROUTING # Multicast routing
options IPFIREWALL #firewall
options IPFIREWALL_VERBOSE #print information about
options IPACCT #ipaccounting
options ARP_PROXYALL # global proxy ARP
options FFS #Fast filesystem
options NFS #Network File System
options NQNFS #Enable NQNFS lease checking
options "CD9660" #ISO 9660 filesystem
options FDESC #File descriptor filesystem
options KERNFS #Kernel filesystem
options LFS #Log filesystem
options MFS #Memory File System
options MSDOSFS #MS DOS File System
options NULLFS #NULL filesystem
options PORTAL #Portal filesystem
options PROCFS #Process filesystem
options UMAPFS #UID map filesystem
options UNION #Union filesystem
options QUOTA #enable disk quotas
#options ALLOW_CONFLICT_DRQ
#options ALLOW_CONFLICT_IOADDR
#options ALLOW_CONFLICT_IRQ
#options ALLOW_CONFLICT_MEMADDR
options "AUTO_EOI_1"
#options "AUTO_EOI_2"
options BOUNCE_BUFFERS
#options DUMMY_NOPS
#options TUNE_1542
#options "PCVT_FREEBSD=210" # pcvt running on FreeBSD 2.1
#options XSERVER # include code for
XFree86
#options FAT_CURSOR # start with block cursor
options HARDFONTS
options "MAXCONS=16"
options FDSEEKWAIT="16"
options COMCONSOLE #prefer serial console to
video console
options COM_MULTIPORT #code for some cards with
shared IRQs
options DSI_SOFT_MODEM #code for DSI
Softmodems
options PROBE_VERBOSE
# One of these is mandatory:
options FFS #Fast filesystem
options NFS #Network File System
# The rest are optional:
options "CD9660" #ISO 9660 filesystem
options FDESC #File descriptor filesystem
options KERNFS #Kernel filesystem
options LFS #Log filesystem
options MFS #Memory File System
options MSDOSFS #MS DOS File System
options NULLFS #NULL filesystem
options PORTAL #Portal filesystem
options PROCFS #Process filesystem
options UMAPFS #UID map filesystem
options UNION #Union filesystem
#
# Disk quotas are supported when this option is enabled. If you
# change the value of this option, you must do a `make clean' in your
# kernel compile directory in order to get a working kernel.
#
options QUOTA #enable disk quotas
</verb>
<sect1><heading>Device Specification</heading><p>
Each device installed (or attached to) the system must be specified to
<em>config</em> so that the devices will be probed at boot time.
Devices not currently installed in the hardware may be specified so
that the kernel generated will support those devices at a later date.
a device specifiaction takes on of the following forms:
<quote><tt>
controller <em> device-name device-info [interrupt-spec]</em><newline>
device <em> device-name device-info interrupt-spec</em><newline>
disk <em> device-name device-info</em><newline>
tape <em> device-name device-info</em><newline></tt></quote>
<verb>
controller scbus0 #base SCSI code
controller isa0
controller bt0 at isa? port "IO_BT0" bio irq ? vector btintr
controller ahc0 at isa? bio irq ? vector ahcintr # port??? iomem?
controller ahb0 at isa? bio irq ? vector ahbintr
controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector
ahaintr
controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector
uhaintr
controller aic0 at isa? port 0x340 bio irq 11 vector aicintr
controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr
controller nca1 at isa? port 0x1f84
controller nca2 at isa? port 0x1f8c
controller nca3 at isa? port 0x1e88
controller nca4 at isa? port 0x350 bio irq 5 vector ncaintr
controller sea0 at isa? bio irq 5 iomem 0xdc000 iosiz 0x2000 vector
seaintr
controller wds0 at isa? port 0x350 bio irq 15 drq 6 vector wdsintr
controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr
controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
controller snd0
controller matcd0 at isa? port ?
#controller matcd1 at isa? port ?
#controller matcd2 at isa? port ?
#controller matcd3 at isa? port ?
controller pci0
controller bt0 at isa? port "IO_BT0" bio irq ? vector btintr
controller ahb0 at isa? bio irq ? vector ahbintr
controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector
ahaintr
controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector
uhaintr
controller aic0 at isa? port 0x340 bio irq 11 vector aicintr
controller pas0 at isa? port 0x1f88
controller pas1 at isa? port 0x1f84
controller pas2 at isa? port 0x1f8c
controller pas3 at isa? port 0x1e88
controller sea0 at isa? bio irq 5 iomem 0xdc000 iosiz 0x2000 vector
seaintr
controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr
disk wd0 at wdc0 drive 0
disk wd1 at wdc0 drive 1
controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr
disk wd2 at wdc1 drive 0
disk wd3 at wdc1 drive 1
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
disk fd0 at fdc0 drive 0
disk fd1 at fdc0 drive 1
tape ft0 at fdc0 drive 2
device lpt0 at isa? port "IO_LPT3" tty irq 7 vector lptintr
device mse0 at isa? port 0x23c tty irq 5 vector mseintr
device psm0 at isa? port "IO_KBD" tty irq 12 vector psmintr
device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr
device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr
device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr
device is0 at isa? port 0x280 net irq 10 drq 7 vector isintr
device ep0 at isa? port 0x300 net irq 10 vector epintr
device el0 at isa? port 0x300 net irq 9 vector elintr
device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr
device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr
device lnc0 at isa? XXX FILL ME IN
device snd5 at isa? port 0x330 irq 6 vector mpuintr
device snd4 at isa? port 0x220 irq 15 drq 6 vector gusintr
device snd3 at isa? port 0x388 irq 10 drq 6 vector pasintr
device snd2 at isa? port 0x220 irq 7 drq 1 vector sbintr
device snd6 at isa? port 0x220 irq 7 drq 5 vector sbintr
device snd7 at isa? port 0x300
device snd1 at isa? port 0x388
device pca0 at isa? tty
device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr
device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr
device ctx0 at isa? port 0x230 iomem 0xd0000
device apm0 at isa?
options APM
controller pci0
device ncr0
device de0
</verb>
This section is usually the largest section of the configuration file.
</p></sect1>
<sect1>
<heading>
Pseudo-devices
</heading><p>
The system has a number of associated <em>Pseudo devices</em>. Pseudo
devices are drivers which add functionality, but have no direct
hardware associated with them. Examples of pseudo devices are pty,
loop, ether, PPP.
<verb># The `loop' pseudo-device is mandatory when networking is
enabled.
# The `ether' pseudo-device provides generic code to handle
# The 'fddi' pseudo-device provides generic code to support FDDI.
# The `sppp' pseudo-device serves a similar role for certain types
# The `sl' pseudo-device implements the Serial Line IP (SLIP) service.
# The `ppp' pseudo-device implements the Point-to-Point Protocol.
# The `bpfilter' pseudo-device enables the Berkeley Packet Filter. Be
# The `disc' pseudo-device implements a minimal network interface,
# The `tun' pseudo-device implements the User Process PPP (iijppp)
pseudo-device ether #Generic Ethernet
pseudo-device fddi #Generic FDDI
pseudo-device sppp #Generic Synchronous PPP
pseudo-device loop #Network loopback device
pseudo-device sl 2 #Serial Line IP
pseudo-device ppp 2 #Point-to-point protocol
pseudo-device bpfilter 4 #Berkeley packet filter
pseudo-device disc #Discard device
pseudo-device tun 1 #Tunnel driver(user process ppp)
pseudo-device pty 16 #Pseudo ttys - can go as high as 64
pseudo-device speaker #Play IBM BASIC-style noises out your
speaker
pseudo-device log #Kernel syslog interface (/dev/klog)
pseudo-device gzip #Exec gzipped a.out's
pseudo-device vn #Vnode driver (turns a file into a device)
pseudo-device snp 3 #Snoop device - to look at pty/vty/etc..
pseudo-device isdn
pseudo-device ii 4
pseudo-device ity 4
pseudo-device itel 2
pseudo-device ispy 1
</verb>
</p>
</sect1>
</sect>
<sect><heading>Rebuilding the kernel</heading><p>
The system assumes that the source tree is located at /sys. Since the
tree is located at /usr/src/sys, we need to create a symbolic link
from your sources (/usr/src/sys) to (/sys)
<verb>
ln -s /usr/src/sys/ /sys
</verb>
At this point, you need to modify your configuration file, usually
GENERIC as follows:
<verb>
cd /sys/i386/conf
vi GENERIC (to edit your configuration)
Refer to the file LINT for
all the configuration options
config GENERIC
cd ../../compile/GENERIC
make depend
make
make install
</verb>
<bf>Note:</bf><newline>
This process renames <tt>/kernel</tt> to <tt>/kernel.old</tt> before
installing the new kernel.<newline>
If there are problems with the new kernel you can still reboot the old
kernel by specifying <tt>/kernel.old</tt> at boot time.<newline>
<bf>New in 2.1:</bf><newline>
If you only need to change hardware settings, you can use the
<em>dset</em> command.<newline>
</p>
</sect>
<sect>
<heading>Sample Entries</heading>
<sect1>
<heading>PPP Support</heading>
<p>
If you're going to run PPP you need to add the following lines:
<verb>
pseudo-device ppp 2 #Point-to-point protocol
</verb>or if it's synchronous PPP, use:<verb>
pseudo-device sppp #Generic Synchronous PPP
</verb>
<verb>
pseudo-device tun 1 #Tunnel driver(user process ppp)
</verb>
</sect1>
<sect1>
<heading>SLIP</heading>
<p>
If you're going to set up a SLIP server you need to add:
<verb>
pseudo-device sl 2 #Serial Line IP
</verb>
</sect1>
<sect1>
<heading>X</heading>
<p>If you're going to run X, you need the following lines:
<verb>
options "PCVT_FREEBSD=210" # pcvt running on FreeBSD 2.1
options XSERVER # include code for
XFree86
options FAT_CURSOR # start with block cursor
pseudo-device pty 16 #Pseudo ttys - can go as high as 64
</verb></p></sect1>
<sect1>
<heading>News/HTTPD Servers</heading>
<p>If you're going to run a news or HTTPD server, you need to
include each server as a single user. DO NOT increase
<tt>maxusers</tt> to 100. Instead set the <tt>"CHLID_MAX= "</tt> and
the <tt>"OPEN_MAX = "</tt> to t
he expected maximum number of connections of the heaviest demanded
server.
</sect1>
<sect1>
<heading>Disk Quotas</heading>
<p>
To enable disk quotas, you need to add the line:<verb>
optionsQUOTA
</verb> You must then do the following to get a working kernel.
<verb>
cd /sys/i386/conf
vi GENERIC (to edit your configuration)
Refer to the file LINT for
all the configuration options
config GENERIC
cd ../../compile/GENERIC
make clean
make depend
make
make install
</verb>
</sect1>
<sect1>
<heading>Firewall</heading>
<p></sect1>
<sect1>
<heading>Next Option</heading>
<p></sect1>
<sect1>
<heading>Next Option</heading>
<p></sect1>
<sect1>
<heading>Next Option</heading>
<p></sect1>
</sect>
<footnote>
<bf>New in 2.1:</bf>
If you only need to change hardware settings, you can use the
<em>dset</em> command.</footnote>
</article>
</linuxdoc>
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199504290437.VAA29892>
