This page covers the next two sections of make menuconfig. I am lumping them together to keep the number of required pages at this site to a minimum.
Arrow key down to the next area on the make menuconfig menu:
[*] Enable loadable module support --->
When you hit <Select> at this point, you will bring up the following page:
--- Enable loadable module support
While I personally prefer monolithic kernels, there are times that modules are the preferred way to work with a driver. In some cases, namely wireless networking, modules are a must. In others, the driver in question exists only as a module.
[ ] Forced module loading
Note that the use of [ ] Forced module loading is not recommended, and will taint the kernel. According to < Help >, "Allow loading of modules without version information (ie. modprobe --force). Forced module loading sets the 'F' (forced) taint flag and is usually a really bad idea." For this reason, this setting defauls to off, and should stay that way.
[*] Module unloading
Module unloading allows modules to be unloaded from memory when the device/function controlled by said module isn't in operation. In general, this is a pretty good idea. For this reason, this setting defaults to on.
[ ] Forced module unloading
Just as noted above, the use of [ ] Forced module unloading is also not recommended, and will also taint the kernel. Further, forcing the unloading of certain modules can cause locks and functional slow-downs.
[ ] Module versioning support
Turning this setting on allows you to use kernel modules compiled from different kernel versions. Even on its face, this is a bad idea. This setting defaults to off.
[ ] Source checksum for all modules
This setting is mostly used for troubleshooting the source files used to create a module. Most people will have no interest in this setting. For that reason, this setting defaults to off.
< Exit > out of [*] Enable loadable module support ---> and arrow down to:
-*- Enable the block layer --->
When you hit <Select> at this point, you will bring up the following page:
When you <Select> at this point, you bring up the following options:--- Enable the block layer
According to < Help >: If this option is disabled, block device files will become unusable, and some filesystems (such as ext3) will become unavailable. That's probably why this option is "hardwired" into the kernel.
[*] Support for large (2TB+) block devices and files
If you have a two terabyte or larger in a machine or network accessible volume, this setting should be turned on. Since two terabytes is about average at the time of this edit, it makes sense to have this as a default.
[*] Block layer SG support v4
[ ] Block layer SG support v4 helper lib
If you have SCSI drives (which means everyone (SATA=SCSI)), these two settings allow for (SG) SCSI generic support. A recently added requirement for udev, the first of these settings defaults to on. The latter is currently under experimentation. It will most likely be enabled with the next batch of kernel settings.
[ ] Block layer data integrity support
Also under experimentation, this bit of code allows extra information to be stored and retrieved in order to add data protection. This will most likely be turned on with the next batch of kernel settings.
[ ] Block layer bio throttling support
This setting is used to limit the IO rate to a device. That doesn't fit well into the kernel seed philosophy, and this setting is off by default.
IO Schedulers --->
Move down to IO Schedulers ---> and <Select>. You will see the following options:
< > Deadline I/O scheduler
The goal of the deadline io scheduler is to attempt to guarantee a start service time for a request.
<*> CFQ I/O scheduler
The CFQ I/O scheduler tries to distribute bandwidth equally among all processes.
Default I/O scheduler (CFQ) --->
<*> CFQ I/O scheduler is the default setting.
The next group of settings, Processor type and features ---> will be discussed on Page 3.
Cheers,
Pappy