Chapter 4. Kernel Configuration
The Linux kernel configuration is usually found in the kernel source in
the file: /usr/src/linux/.config . It is not
recommended to edit this file directly but to use one of these configuration
options:
make config - starts a character based
questions and answer session
make menuconfig - starts a
terminal-oriented configuration tool (using ncurses)
make xconfig - starts a
X based configuration tool
The descriptions of these selections that is displayed by the associated
help button can be found in the flat ASCII file:
/usr/src/linux/Documentation/Configure.help
Ultimately these configuration tools edit the .config
file. An option will either indicate some driver is built into the
kernel ("=y") or will be built as a module ("=m") or is not selected.
The unselected state can either be indicated by a line starting with
"#" (e.g. "# CONFIG_SCSI is not set") or by the absence of the relevant
line from the .config file.
The 3 states of the main selection option for the SCSI subsystem (which
actually selects the SCSI mid level driver) follow. Only one of these
should appear in an actual .config file:
CONFIG_SCSI=y
CONFIG_SCSI=m
# CONFIG_SCSI is not set
|
Some other common SCSI configuration options are:
CONFIG_BLK_DEV_SD [disk (sd) driver]
CONFIG_SD_EXTRA_DEVS [extra slots for disks added later]
CONFIG_BLK_DEV_SR [SCSI cdrom (sr) driver]
CONFIG_BLK_DEV_SR_VENDOR [allow vendor specific cdrom commands]
CONFIG_SR_EXTRA_DEVS [extra slots for cdroms added later]
CONFIG_CHR_DEV_ST [tape (st) driver]
CONFIG_CHR_DEV_OSST [OnSteam tape (osst) driver]
CONFIG_CHR_DEV_SG [SCSI generic (sg) driver]
CONFIG_DEBUG_QUEUES [for debugging multiple queues]
CONFIG_SCSI_MULTI_LUN [allow probes above lun 0]
CONFIG_SCSI_CONSTANTS [symbolic decode of SCSI errors]
CONFIG_SCSI_LOGGING [allow logging to be runtime selected]
CONFIG_SCSI_<ll_driver> [numerous lower level adapter drivers]
CONFIG_SCSI_DEBUG [lower level driver for debugging]
CONFIG_SCSI_PPA [older parallel port zip drives]
CONFIG_SCSI_IMM [newer parallel port zip drives]
CONFIG_BLK_DEV_IDESCSI [ide-scsi pseudo adapter]
CONFIG_I2O_SCSI [scsi command set over i2o bus]
CONFIG_SCSI_PCMCIA [for SCSI HBAs on PCMCIA bus]
CONFIG_USB_STORAGE [usb "mass storage" type]
CONFIG_MAGIC_SYSRQ [Alt+SysRq+S for emergency sync]
[Alt+SyrRq+U for emergency remount ro]
|
If the root file system is on a SCSI disk then it makes sense
to build into the kernel the SCSI mid level, the sd driver and
the host adapter driver that the disk is connected to. In most cases
it is usually safe to build the sr, st and sg drivers as modules so
that they are loaded as required. If a device like a scanner is on
a separate adapter then its driver may well be built as a module. In
this case, that adapter driver will need to be loaded before the
scanner will be recognized.
Linux distributions have many of the SCSI subsystem drivers built as
modules since building all of them in would lead to a very
large kernel that would exceed the capabilities of the boot loader.
This leads to a "chicken and the egg" problem in which the SCSI
drivers are needed to load the root file system and vice versa. The
2 phase load used by the initrd device addresses this problem
(see Chapter 6 for more details).