This page was put together by merging parts of the Linux NET-2/NET-3 HOWTO and the Linux Kernel HOWTO so that most of the present (November 1995) kernel options are documented in one place instead of two. Please refer to both documents for additional information.
Note: Some of this is reiteration/clarification of a similar
section in Linus' README file.
The command 'make config' while in /usr/src/linux starts
a configure script which asks you many questions. It requires bash,
so verify that bash is /bin/bash, /bin/sh,
or $BASH.
You are ready to answer the questions, usually with 'y' (yes) or
'n' (no). Some of the
more obvious and non-critical options are not described here; see the section
"Other configuration options" for short descriptions of a few others.
If you don't have a math coprocessor (you have a bare 386 or
486SX), you must say 'y' to this. If you do have a coprocessor and
you still say 'y', don't worry too much -- the coprocessor is
still used and the emulation ignored. The only consequence is that the
kernel will be larger (costing RAM).
You probably need to support this; it means that the kernel will support standard PC hard disks, which most people have. This driver does not include SCSI drives; they come later in the configuration.
You will then be asked about the "old disk-only" and "new IDE" drivers. You want to choose one of them; the main difference is that the old driver only supports two disks on a single interface, and the new one supports a secondary interface and IDE/ATAPI cdrom drives. The new driver is 4k larger than the old one and is also supposedly "improved," meaning that aside from containing a different number of bugs, it might improve your disk performance, especially if you have newer hardware.
In principle, you would only say 'y' if your machine is on a network
such as the internet, or you want to use SLIP, PPP, term, etc to
dial up for internet access. However, as many packages (such as X windows)
require networking support even if your machine does not live on a real
network, you should say 'y'. Later on, you will be asked if you
want to support TCP/IP networking; again, say 'y' here if you
are not absolutely sure.
There exist buggy 386 DMA controllers
which have problems with addressing anything more than 16 MB of
RAM; you want to say 'y' in the (rare) case that you have one.
One of the best definitions of IPC (Interprocess Communication) is in the
Perl book's glossary. Not surprisingly, Perl employs it to let processes
talk to each other, as well as many other packages, so it is not a good
idea to say n unless you know exactly what you are doing.
Newer kernels have a number of options that you are asked about when
you do a make config. Generally you will not need to change
these, but some of the options might be useful to you in certain
circumstances.
This one is obvious, it selects whether you configure the tcp/ip suite of protocols into your kernel. Chances are if you are reading this then you will want to answer 'y' to this one.
This determines what your kernel will do when it receives a datagram that has a destination address that is not one of its own devices. You must have this option selected if you want your kernel to act as an IP router. Most SLIP and PPP servers will want this option selected.
This is alpha test code support for IP multicasting, examples of which include services such as 'Internet Talk Radio' and live video. You will need additional programs to make use of this facility, this is just the kernel support.
This option allows you to provide flexible security options for your linux machine. You can selectively enable/disable access to tcp/ip ports from any address ranges you choose. This also needs additional programs to support it.
This option is for those people that want to use their Linux machine to provide internet connectivity to others on a commercial basis. It allows you to count and record incoming and outgoing bytes on a per port and address basis. With the addition of suitable software this would allow you to produce seperate usage charges for each person using your systems networking capabilities.
A network tunneling driver encapsulates packets of one protocol type within packets of another protocol type. It sends them out over the network to a relay (or destination) where the packet is unwrapped and is forwarded to it's ultimate destination. Packet tunneling is useful in situations where you want to route packets of a non-standard protocol type over the common network. A good example of this is 'IPX encapsulation', in which IPX packets from a DOS network are routed across an IP network by encapsulating them in IP packets.
This option provides a work-around for a bug that causes problems when using the PC/TCP networking programs to talk to your linux machine. There is a PC/TCP bug which provokes a difficult to remedy Linux bug, and this option prevents the two clashing. Normally you would leave this disabled, but if you have users on your network who use PC/TCP then you may have to enable this option to prevent problems.
This option allows you to configure the RARP protocol into your kernel. This option was added to allow the booting of Sun 3 systems. This is not generally very useful otherwise.
This option selects whether you assume that your whole subnet is directly connected to your linux machine, or whether it might be bridged or otherwise subdivided at a lower layer. In practise it will make little difference if you leave it set at the default.
This is a timing option that determines when a datagram should be transmitted. The default setting provides for the best throughput in most situations and you should leave this set as it is, as disabling it will degrade your throughput. This option can be selectively changed from within a program with a socket option, and you would normally be much better off leaving it set at the default and specifically writing your programs to disable the NAGLE algorithm if they require extremely fast interactivity.
This option selects whether you compile the IPX protocol support into your kernel. The IPX protocol is an internetworking protocol similar in function to the IP protocol. This protocol is one of those used by the Novell suite.
This option selects whether you compile in the Amateur Radio AX.25 protocol suite. If you select this option then a new class of network sockets are available for programming. The AX.25 protocol is used primarily by Amateur Radio Operators for packet radio use.
This optimizes the kernel for use on a 486 processor. The new kernel will be slightly larger, but will work fine on a 386.
If you have a SCSI device, say 'y'. You will be prompted for
further information, such as support for CD-ROM, disks, and what kind
of SCSI adapter you have. See the SCSI-HOWTO for greater detail.
If you have a network card, or you would like to use SLIP, PPP, or a
parallel port adapter, say 'y'. The config script will prompt
for which kind of card you have, and which protocol to use.
The configure script then asks if you wish to support the following filesystems:
Newer distributions don't create minix filesystems, and many people don't use it, but it may still be a good idea to configure this one. Some "rescue disk" programs use it, and still more floppies may have a minix filesystem, since the minix filesystem is fairly optimal for floppy disks.
This was the first version of the extended filesystem, which is no longer in widespread use. Chances are, you'll know it if you need it.
This is widely used in new distributions. You
probably have one of these, and need to say 'y'.
At one time, this was not uncommon, but at the time of this writing, I did not know of anyone using it.
If you want to use your MS-DOS hard disk
partitions, or mount MS-DOS formatted floppy disks, say 'y'.
This filesystem expands an MS-DOS filesystem with usual Unix-like features such as long filenames. It is not useful for people (like me) who "don't do DOS."
Another one of the greatest things since powdered milk (idea
shamelessly stolen from Bell Labs, I guess). One doesn't make a proc
filesystem on a disk; this is a filesystem interface to the kernel and
processes. Many process listers (such as 'ps') use it. Try
'cat /proc/meminfo' or 'cat /proc/devices' sometime.
Some shells (rc, in particular) use /proc/self/fd (known as
/dev/fd
on other systems) for I/O. You should almost certainly say 'y' to
this; many important linux tools depend on it.
If your machine lives on a network and you want to share files with other
systems using NFS, say 'y'.
Found on most CD-ROMs.
At the time of this writing, a read-only fs for OS/2 HPFS.
For partitions of System V and Coherent systems (These are other PC Unix variants).
Ok, type 'mount'. The output will look something like this:
blah# mount
/dev/hda1 on / type ext2 (defaults)
/dev/hda3 on /usr type ext2 (defaults)
none on /proc type proc (defaults)
/dev/fd0 on /mnt type msdos (defaults)
Look at each line; the word next to 'type' is the filesystem
type. In this example, my / and /usr filesystems are
second extended, I'm using /proc, and there's a floppy
disk mounted using the msdos (bleah) filesystem.
You can try 'cat /proc/filesystems' if you have /proc
currently enabled; it will list your current kernel's filesystems.
The configuration of rarely-used, non-critical filesystems can cause kernel bloat; see the section on modules for a way to avoid this.
Here, you enable the drivers for your printer, busmouse, PS/2 mouse
(many notebooks use the PS/2 mouse protocol for their built-in trackballs),
some tape drives, and other such "character" devices. Say 'y'
when appropriate.
Note: Selection is a program which allows the use of the mouse outside of X Windows for cut and paste between virtual consoles. It's fairly nice if you have a serial mouse, because it coexists well with X Windows, but you need to do special tricks for others. Selection support was a configuration option at one time, but is now standard.
If you feel a great desire to hear biff bark, say
'y',
and later on, another config program will compile and ask you all about your
sound board. (A note on sound card configuration: when it asks you if you
want to install the full version of the driver, you can say 'n'
and save some kernel memory by picking only the features which you deem
necessary.)
>From Linus' README:
the "kernel hacking" configuration details usually result in a bigger or slower kernel (or both), and can even make the kernel less stable by configuring some routines to actively try to break bad code to find kernel problems (kmalloc()). Thus you should probably answer 'n' to the questions for a "production" kernel.
Last Modified: 11 December 1995
St. Louis Unix Users Group - Linux SIG