Differences between version 3 and previous revision of HowToKerneld.
Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 3 | Last edited on Sunday, November 28, 2004 12:53:22 am | by AristotlePagaltzis | Revert |
Older page: | version 2 | Last edited on Friday, June 7, 2002 1:06:53 am | by perry | Revert |
@@ -1,1389 +1 @@
-Linux kerneld mini-HOWTO
-!!!Linux kerneld mini-HOWTO
-!Henrik Storner
-
-kerneld-howto@linuxdoc.org
-
-
-
-Copyright (c) 2000 by Linux Documentation
-Project
-
-
-__Revision History__Revision v2.022 May 2000conversion from HTML to !DocBook SGML.----; __Table of Contents__; About the kerneld mini-HOWTO: ; Credits; What is kerneld?: ; Why do I want to use it ?; Where can I pick up the necessary pieces
-?; How do I set it up?: ; Trying out kerneld; How does kerneld know what module
-to load?: ; Block devices; Character devices; Network devices; Binary formats; Line disciplines (slip, cslip and ppp); Network protocol families (IPX,
-!AppleTalk, AX.25); File systems; Devices requiring special
-configuration: ; char-major-10 : Mice, watchdogs and randomness; Loading SCSI drivers: The
-scsi_hostadapter entry; When loading a module isn't enough: The
-post-install entry; Spying on kerneld; Special kerneld uses; Common problems and things that make you wonder
-!!!About the kerneld mini-HOWTO
-
-This document explains how to install and use the automatic
-kernel module loader "kerneld". The latest released
-version of this document can be found at the Linux Documentation
-Project
-
-----
-!!Credits
-
-This document is based on an original HTML version 1.7
-dated July 19, 1997 by Henrik Storner
-`storner@osiris.ping.dkb and was revised and
-translated to !DocBook DTD by Gary Lawrence Murphy
-`garym@teledyn.comb May 20, 2000.
-
-
-
-The following people have contributed to this
-mini-HOWTO at some point:
-
-
-
-
-
-
-*
-
-Bjorn Ekwall bj0rn@blox.se
-
-
-*
-*
-
-Ben Galliart bgallia@luc.edu
-
-
-*
-*
-
-Cedric Tefft cedric@earthling.net
-
-
-*
-*
-
-Brian Miller bmiller@netspace.net.au
-
-
-*
-*
-
-James C. Tsiao
-jtsiao@madoka.jpl.nasa.gov
-
-
-*
-
-If you find errors in this document, please send email to
-`kerneld-howto@linuxdoc.orgb. Your comments,
-encouragement and suggestions are welcome and appreciated, and
-help ensure this guide remains current and accurate.
-
-----
-!!!What is kerneld?
-
-The kerneld feature was introduced during the 1.3
-development kernels by Bjorn Ekwall. It allows kernel modules
-such as device drivers, network drivers and filesystems to be
-loaded automatically when they are needed, rather than having to
-do it manually with __modprobe__ or
-__insmod__.
-
-
-
-And for the more amusing aspects, although these are not
-(yet ?) integrated with the standard kernel:
-
-
-
-
-
-
-*
-
-It can be setup to run a user-program instead
-of the default screen blanker, thus letting you use any
-program as a screen-saver.
-
-
-*
-*
-
-Similar to the screen-blanker support, you can
-also change the standard console beep into something
-completely different.
-
-
-*
-
-kerneld consists of two components:
-
-
-
-
-
-
-*
-
-Support in the Linux kernel for sending
-requests to a daemon requesting a module for a certain
-task.
-
-
-*
-*
-
-A user-space daemon that can figure out what
-modules must be loaded to fulfill the request from the
-kernel.
-
-
-*
-
-Both components must be working for the kerneld support to
-function; it is not enough that only one or the other has been
-setup.
-
-----
-!!Why do I want to use it ?
-
-There are some good reasons for using kerneld. The ones I
-will mention are mine, others have other reasons.
-
-
-
-
-
-
-*
-
-If you have to build kernels for several
-systems that only differ slightly - different kind of network
-card, for instance - then you can build a single kernel and
-some modules, instead of having to build individual kernels
-for each system.
-
-
-*
-*
-
-Modules are easier for developers to test.
-You don't need to reboot the system to load and unload the
-driver; this applies to all modules, not just kerneld-loaded
-ones.
-
-
-*
-*
-
-It cuts down on the kernel memory usage
-leaving more memory available for applications. Memory used by
-the kernel is ''never'' swapped out, so if
-you have 100Kb worth of unused drivers compiled into your
-kernel, they are simply wasting RAM.
-
-
-*
-*
-
-Some of the things I use, the ftape
-floppy-tape driver, for instance, or iBCS, are only available
-as modules, but I don't want to bother with loading and
-unloading them whenever I need them.
-
-
-*
-*
-
-People making Linux distributions don't have
-to build 284 different boot images: Each user loads the
-drivers he needs for just his hardware. Most modern Linux
-distributions will detect your hardware and will only load
-those modules actually required.
-
-
-*
-
-Of course, there are also reasons why you may not want to
-use it. If you prefer to have just one kernel image file with
-all of your drivers built in, you are reading the wrong
-document.
-
-----
-!!Where can I pick up the necessary pieces
-?
-
-The support in the Linux kernel was introduced with Linux
-1.3.57. If you have an earlier kernel version, you will need to
-upgrade if you want the kerneld support. The current Linux
-kernel sources can be found at most Linux FTP archive sites
-including:
-
-
-
-
-
-
-*
-
-Kernel.Org
-Archive
-
-
-*
-*
-
-Metalab Linux
-Archive
-
-
-*
-*
-
-TSX-11
-at MIT
-
-
-*
-
-The user-space daemon is included with the
-modules package. These are normally
-available from the same place as the kernel sources
-
-
-
-
-__Note: __If you want to try module-loading with the latest
-''development'' kernels, you should use the
-newer modutils package and not the
-modules. Always check the
-Documentation/Changes file in the kernel
-sources for the minimum required version number for your kernel
-image. Also see about the problems with modules
-and 2.1 kernels.
-
-----
-!!!How do I set it up?
-
-First get the necessary parts: A suitable kernel and the
-latest modules package. Then you
-should install the module utilities as per the instructions
-included in the package. Pretty simple: Just unpack the sources
-and run __make install__. This compiles and
-installs the following programs in /sbin:
-__genksysm__, __insmod__,
-__lsmod__, __modprobe__,
-__depmod__ and __kerneld__. I
-recommend you add some lines to your startup-scripts to do some
-necessary setup whenever you boot Linux. Add the following lines
-to your /etc/rc.d/rc.S file (if you are
-running Slackware), or to
-/etc/rc.d/rc.sysinit if you are running
-!SysVinit, i.e. Debian, Corel, !RedHat, Mandrake or Caldera:
-
-
-
- # Start kerneld - this should happen very early in the
-# boot process, certainly BEFORE you run fsck on filesystems
-# that might need to have disk drivers autoloaded
-if
[[ -x /sbin/kerneld
]
-then
-/sbin/kerneld
-fi
-# Your standard fsck commands go
here
-# And you mount command to mount the root fs read-write
-# Update kernel-module dependencies file
-# Your root-fs MUST be mounted read-write by now
-if [[ -x /sbin/depmod ]
-then
-/sbin/depmod -a
-fi
-
-These commands may already be installed in your SysV init
-scripts. The first part starts kerneld itself. The second calls
-__depmod -a__ at startup to build a list of all
-available modules and analyzes their inter-dependencies. The
-depmod map then tells kerneld if one module needs to have
-another loaded before it will itself load.
-
-
-
-__Note: __Recent versions of kerneld have an option to link with the
-GNU gdbm library, libgdbm. If you
-enable this when building the module utilities,
-''kerneld will not start if libgdbm is not
-available'' which may well be the case if you have
-/usr on a separate partition and start
-kerneld before /usr is mounted. The
-recommended solution is to move
-/usr/lib/libgdbm to
-/lib, or to link kerneld
-statically.
-
-
-
-Next, unpack the kernel sources, configure and build a
-kernel to your liking. If you have never done this before, you
-should definitely read the README file at the top level of the
-Linux sources. When you run ''make xconfig''
-to configure the kernel, you should pay attention to some
-questions that appear early on:
-
-
- Enable loadable module support (CONFIG_MODULES) [[Y/n/?] Y
-
-You need to select the loadable module support, or there
-will be no modules for kerneld to load! Just say Yes.
-
-
- Kernel daemon support (CONFIG_KERNELD) [[Y/n/?] Y
-
-This, of course, is also necessary. Then, a lot of the
-things in the kernel can be built as modules - you will see
-questions like
-
-
- Normal floppy disk support (CONFIG_BLK_DEV_FD) [[M/n/y/?]
-
-where you can answer with an M for
-"Module". Generally, only the drivers necessary for
-you to boot up your system should be built into the kernel; the rest
-can be built as modules.
-
-
-
-
-
-
-__Essential drivers__
-
-Essential drivers
-required to boot your system must be compiled into the core
-kernel and cannot be loaded as modules. Typically this will
-include the hard-disk driver and the driver for the root
-filesystem. If you have a dual-boot machine and rely on files
-found in the foreign partition, you must also compile support
-for that filesystem into the core kernel.
-
-
-
-When you have gone through the __make
-config__, compile and install the new
-kernel and the modules with __make dep clean bzlilo
-modules modules_install__.
-
-
-
-Phew.
-
-
-
-__Compiling a Kernel Image: __The
-__make zImage__ command will stop short of
-installing a kernel and will leave the new kernel image in the
-file arch/i386/boot/zImage. To use this
-image, you will
-need to copy it to where you keep your boot-image and install it
-manually with LILO.
-
-
-
-For more information about configuring, building and
-installing your own kernel, check out the Kernel-HOWTO posted
-regularly to comp.os.linux.answers, and
-available from the Linux
-Documentation Project and its mirrors.
-
-----
-!!Trying out kerneld
-
-Now reboot with the new kernel. When the system comes back
-up, you can run __ps ax__, and you should see a
-line for kerneld:
-
-
- PID TTY STAT TIME COMMAND
-59 ? S :01 /sbin/kerneld
-
-One of the nice things with kerneld is that once you have
-the kernel and the daemon installed, very little setup is
-needed. For a start, try using one of the drivers that you built
-as a module; it is more likely than not that it will work
-without further configuration. If I build the floppy driver as a
-module, I could put a DOS floppy in the drive and type
-
-
- osiris:~ $ mdir a:
-Volume in drive A has no label
-Volume Serial Number is 2E2B-1102
-Directory for A:/
-binuti~1 gz 1942 02-14-1996 11:35a binutils-2.6..6-2.6..7.diff.gz
-libc-5~1 gz 24747 02-14-1996 11:35a libc-5.3.4-5.3.5.diff.gz
-2 file(s) 26689 bytes
-
-The floppy driver works! It gets loaded automatically
-by kerneld when I try to use the floppy disk.
-
-
-
-To see that the floppy module is indeed loaded, you can
-run __/sbin/lsmod__ to list all currently
-loaded modules:
-
-
- osiris:~ $ /sbin/lsmod
-Module: #pages: Used by:
-floppy 11 0 (autoclean)
-
-The "(autoclean)" means that the module will
-automatically be removed by kerneld when it has not been used
-for more than one minute. So the 11 pages of memory (= 44kB,
-one page is 4 kB) will only be used while I access the floppy
-drive - if I don't use the floppy for more than a minute, they
-are freed. Quite nice, if you are short of memory for your
-applications!
-
-----
-!!!How does kerneld know what module
-to load?
-
-Although kerneld comes with builtin knowledge about the
-most common types of modules, there are situations where kerneld
-will not know how to handle a request from the kernel. This is
-the case with things like CD-ROM drivers or network drivers,
-where there are more than one possible module that can be
-loaded.
-
-
-
-The requests that the kerneld daemon gets from the kernel
-is for one of the following items:
-
-
-
-
-
-
-*
-
-a block-device driver
-
-
-*
-*
-
-a character-device driver
-
-
-*
-*
-
-a binary format
-
-
-*
-*
-
-a tty line discipline
-
-
-*
-*
-
-a filesystem
-
-
-*
-*
-
-a network device
-
-
-*
-*
-
-a network service (e.g. rarp)
-
-
-*
-*
-
-a network protocol (e.g. IPX)
-
-
-
-*
-
-The kerneld determines what module should be loaded by
-scanning the configuration file
-/etc/conf.modules[[1]. There are
-two kinds of entries in this file: Paths where the module-files
-are located, and aliases assigning the module to be loaded for a
-given service. If you don't have this file already, you could
-create it by running
-
-
-
- /sbin/modprobe -c | grep -v '^path' /etc/conf.modules
-
-If you want to add yet another path directive to the
-default paths, you ''must include all the default paths
-as well'', since a path directive in
-/etc/conf.modules will
-''replace''all the ones that modprobe knows by
-default!
-
-
-
-Normally you don't want to add any paths by your own,
-since the built-in set should take care of all normal setups
-(and then some...), I promise!
-
-
-
-On the other hand, if you just want to add an alias or an
-option directive, your new entries in
-/etc/conf.modules will be
-''added'' to the ones that modprobe already
-knows. If you should ''redefine'' an alias or
-an option, your new entries in
-/etc/conf.modules will override the
-built-in ones.
-
-----
-!!Block devices
-
-If you run __/sbin/modprobe -c__, you
-will get a listing of the modules that kerneld knows about, and
-what requests they correspond to. For instance, the request that
-ends up loading the floppy driver is for the block-device that
-has major number 2:
-
-
- osiris:~ $ /sbin/modprobe -c | grep floppy
-alias block-major-2 floppy
-
-Why block-major-2 ? Because the
-floppy devices /dev/fd* use major device 2
-and are block devices:
-
-
-
- osiris:~ $ ls -l /dev/fd0 /dev/fd1
-brw-rw-rw- 1 root root 2, 0 Mar 3 1995 /dev/fd0
-brw-r--r-- 1 root root 2, 1 Mar 3 1995 /dev/fd1----
-!!Character devices
-
-Character devices are dealt with in a similar
-way. E.g. the ftape floppy tape driver sits on major-device
-27:
-
-
- osiris:~ $ ls -lL /dev/ftape
-crw-rw---- 1 root disk 27, 0 Jul 18 1994 /dev/ftape
-
-However, kerneld does not by default know about the
-ftape driver - it is not listed in the output from
-__/sbin/modprobe -c__. So to setup kerneld to
-load the ftape driver, I must add a line to the kerneld
-configuration file, /etc/conf.modules:
-
-
-
- alias char-major-27 ftape----
-!!Network devices
-
-You can also use the device name instead of the
-char-major-xxx or
-block-major-yyy setup. This is especially
-useful for network drivers. For example, a driver for an
-ne2000 netcard acting as eth0 would be
-loaded with
-
-
- alias eth0 ne
-
-If you need to pass some options to the driver, for
-example to tell the module about what IRQ the netcard is
-using, you must add an "options" line:
-
-
- options ne irq=5
-
-This will cause kerneld to load the NE2000 driver with
-the command
-
-
- /sbin/modprobe ne irq=5
-
-Of course, the actual options available are specific to
-the module you are loading.
-
-----
-!!Binary formats
-
-Binary formats are handled in a similar way. Whenever
-you try to run a program that the kernel does not know how to
-load, kerneld gets a request for
-binfmt-xxx, where
-xxx is a number determined from the first
-few bytes of the executable. So, the kerneld configuration to
-support loading the binfmt_aout module for ZMAGIC (a.out)
-executables is
-
-
-
- alias binfmt-267 binfmt_aout
-
-Since the magic number for ZMAGIC files is 267, if you
-check /etc/magic, you will see the number
-0413; keep in mind that /etc/magic uses
-octal numbers where kerneld uses decimal, and octal 413 =
-decimal 267. There are actually three slightly different
-variants of a.out executables (NMAGIC, QMAGIC and ZMAGIC), so
-for full support of the binfmt_aout module we need
-
-
-
- alias binfmt-264 binfmt_aout # pure executable (NMAGIC)
-alias binfmt-267 binfmt_aout # demand-paged executable (ZMAGIC)
-alias binfmt-204 binfmt_aout # demand-paged executable (QMAGIC)
-
-a.out, Java and iBCS binary formats are recognized
-automatically by kerneld, without any configuration.
-
-----
-!!Line disciplines (slip, cslip and ppp)
-
-Line disciplines are requested with
-tty-ldisc-x, with
-x
-being usually 1 (for SLIP) or 3 (for PPP). Both of these are
-known by kerneld automatically.
-
-
-
-Speaking of ppp, if you want kerneld to load the
-bsd_comp data compression module for ppp, then you must add
-the following two lines to your
-/etc/conf.modules:
-
-
- alias tty-ldisc-3 bsd_comp
-alias ppp0 bsd_comp----
-!!Network protocol families (IPX,
-!AppleTalk, AX.25)
-
-Some network protocols can be loaded as modules as
-well. The kernel asks kerneld for a protocol family (e.g. IPX)
-with a request for
-net-pf-X where
-X is a number indicating what family is
-wanted. E.g. net-pf-3 is AX.25,
-net-pf-4 is IPX and
-net-pf-5 is !AppleTalk; These numbers are
-determined by the AF_AX25, AF_IPX etc. definitions in the
-linux source file include/linux/socket.h.
-So to autoload the IPX module, you would need an entry like
-this in /etc/conf.modules:
-
-
- alias net-pf-4 ipx
-
-See Common Problems for information
-about how you can avoid some annoying boot-time messages
-related to undefined protocol families.
-
-----
-!!File systems
-
-kerneld requests for filesystems are simply the name of
-the filesystem type. A common use of this would be to load the
-isofs module for CD-ROM filesystems, i.e. filesystems of type
-iso9660:
-
-
- alias iso9660 isofs----
-!!!Devices requiring special
-configuration
-
-Some devices require a bit of extra configuration beyond the
-normal aliasing of a device to a module.
-
-
-
-
-
-
-*
-
-Character devices on major number 10: The miscellaneous
-devices
-
-
-*
-*
-
-SCSI devices
-
-
-
-*
-*
-
-Devices that require
-special initialization
-
-
-*----
-!!char-major-10 : Mice, watchdogs and randomness
-
-Hardware devices are usually identified through their
-major device numbers, e.g. ftape is
-char-major-27. However, if you look through
-the entries in /dev for char major 10,
-you will see that this is a bunch of very different devices,
-including
-
-
-
-
-
-
-*
-
-Mice of various sorts (bus mice, PS/2
-mice)
-
-
-*
-*
-
-Watchdog devices
-
-
-*
-*
-
-The kernel random
-device
-
-
-*
-*
-
-APM (Advanced Power Management) interface
-
-
-
-*
-
-These devices are controlled by several different
-modules, not a single one, and therefore the kerneld
-configuration for these ''misc. devices''
-use the major number ''and'' the minor
-number:
-
-
- alias char-major-10-1 psaux # For PS/2 mouse
-alias char-major-10-130 wdt # For WDT watchdog
-
-You need a kernel version 1.3.82 or later to use this;
-earlier versions do not pass the minor number to kerneld,
-making it impossible for kerneld to figure out which of the
-misc. device modules to load.
-
-----
-!!Loading SCSI drivers: The
-scsi_hostadapter entry
-
-Drivers for SCSI devices consist of a driver for the
-SCSI host adapter (e.g. an Adaptec 1542), and a driver for the
-type of SCSI device you use, e.g. a hard disk, a CD-ROM or a
-tape-drive. All of these can be loaded as modules. However,
-when you want to access e.g. the CD-ROM drive that is
-connected to the Adaptec card, the kernel and kerneld only
-knows that it needs to load the sr_mod
-module in order to support SCSI CD-ROM's; it does not know
-what SCSI controller the CD-ROM is connected to, and hence
-does not know what module to load to support the SCSI
-controller.
-
-
-
-To resolve this, you can add an entry for the SCSI
-driver module to your /etc/conf.modules
-that tells kerneld which of the many possible SCSI controller
-modules it should load:
-
-
- alias scd0 sr_mod # sr_mod for SCSI CD-ROM's ...
-alias scsi_hostadapter aha1542 # ... need the Adaptec driver
-
-This only works with kernel version 1.3.82 or later.
-
-
-
-This works if you have only one SCSI controller. If you
-have more than one, things become a little more
-difficult.
-
-
-
-In general, you cannot have kerneld load a driver for a
-SCSI host adapter, if a driver for another host adapter is
-already installed. You must either build both drivers into
-your kernel (not as modules), or load the modules
-manually.
-
-
-
-__Tip: __There ''is'' a way that you can
-have kerneld load multiple SCSI drivers. James Tsiao came up
-with this idea:
-
-
-
- You can easily have kerneld load the second scsi
-driver by setting up the dependency in your modules.dep by
-hand. You just need an entry like:
-
-
- /lib/modules/2..30/scsi/st.o: /lib/modules/2..30/scsi/aha1542.o
-
-To have kerneld load the
-aha1542.o before it loads
-st.o. My machine at home is set up
-almost exactly like the setup above, and it works fine for
-all my secondary scsi devices, including tape, cd-rom, and
-generic scsi devices. The drawback is that
-__depmod -a__ can't autodetect these
-dependencies, so the user needs to add them by hand, and
-not run __depmod -a__ on boot up. But once
-it is set up, kerneld will autoload the
-aha1542.o just
-fine.
-
-
-
-You should be aware, that this technique only works if
-you have different kinds of SCSI devices on the two
-controllers, for example, hard disks on one controller, and
-cd-rom drives, tapes or generic SCSI devices on another.
-
-----
-!!When loading a module isn't enough: The
-post-install entry
-
-Sometimes, just loading the module is not enough to get
-things working. For instance, if you have your sound card
-compiled as a module, it is often convenient to set a certain
-volume level. Only problem is, the setting vanishes the next
-time the module is loaded. Here is a neat trick from Ben
-Galliart (`bgallia@luc.edub):
-
-
-
-The final solution required installing the setmix package and then
-adding the following line to my
-/etc/conf.modules:
-
-
-post-install sound /usr/local/bin/setmix -f /etc/volume.conf
-
-What this does is that after the sound module is loaded,
-kerneld runs the command indicated by the
-post-install sound entry. So the sound
-module gets configured with the command
-__/usr/local/bin/setmix -f
-/etc/volume.conf__.
-
-
-
-This may be useful for other modules as well, for
-example the lp module can be configured
-with the tunelp program by adding
-
-
-
- post-install lp tunelp options
-
-For kerneld to recognize these options, you will need a
-version of kerneld that is 1.3.69f or later.
-
-
-
-__Note: __An earlier version of this mini-HOWTO mentioned a
-pre-remove option, that might be used to run a command just
-before kerneld removed a module. However, this has never
-worked and its use is therefore discouraged - most likely,
-this option will disappear in a future kerneld release. The
-whole issue of module settings is undergoing some change at
-the moment, and may look different on your system by the
-time you read this.
-
-----
-!!!Spying on kerneld
-
-If you have tried everything, and just cannot figure out
-what the kernel is asking kerneld to do, there is a way of
-seeing the requests that kerneld receives, and hence to figure
-out what should go into /etc/conf.modules:
-The __kdstat__ utility.
-
-
-
-This nifty little program comes with the modules-package,
-but it is not compiled or installed by default. To build it, go
-to the directory where you have the kerneld sources and type
-__make kdstat__. Then, to make kerneld display
-information about what it is doing, run __kdstat debug
-__ and kerneld will start spewing messages on the
-console about what it is doing. If you then try and run the
-command that you want to use, you will see the kerneld requests;
-these can be put into /etc/conf.modules and
-aliased to the module needed to get the job done.
-
-
-
-To turn off the debugging, run __/sbin/kdstat
-nodebug__.
-
-----
-!!!Special kerneld uses
-
-I knew you would ask about how to setup the screen-saver
-module!
-
-
-
-The kerneld/GOODIES directory in
-modules package has a couple of kernel patches for screen-saver
-and console-beep support in kerneld; these are not yet part of
-the official kernel, so you will need to install the
-kernel-patches and rebuild the kernel.
-
-
-
-To install a patch, you use the patch command:
-
-
- cd /usr/src/linux
-patch -s -p1 /usr/src/modules-*/kerneld/GOODIES/blanker_patch
-
-Then rebuild and install the new kernel.
-
-
-
-When the screen-saver triggers, kerneld will run the
-command /sbin/screenblanker; this file may
-be anything you like, for example, a shell script that runs your
-favorite screen-saver.
-
-
-
-When the kernel wants to unblank the screen, it sends a
-SIGQUIT signal to the process running
-/sbin/screenblanker. Your shell script or
-screen-saver should trap this, and terminate. Remember to restore
-the screen to the original text mode!
-
-----
-!!!Common problems and things that make you wonder; 1. Why do I get Cannot locate module for
-net-pf-X messages when I
-run __/sbin/ifconfig__?; 2. After starting kerneld, my system slows to a crawl
-when I activate my ppp-connection; 3. kerneld does not load my SCSI driver!; 4. modprobe complains about
-gcc2_compiled being
-undefined; 5. My sound driver keeps forgetting its settings for
-volume etc; 6. DOSEMU needs some modules; how can I get kerneld to
-load those ?; 7. Why do I get Ouch, kerneld timed out,
-message failed messages ?; 8. Mount doesn't wait for kerneld to load the
-filesystem module; 9. kerneld fails to load the ncpfs
-module; 10. kerneld fails to load the smbfs
-module; 11. I built everything as modules, and now my system
-cannot boot or kerneld fails to load the root filesystem
-module!; 12. kerneld will not load at boot time; it complains
-about libgdbm; 13. I get Cannot load module xxx but
-I just reconfigured my kernel without
-xxx support!; 14. I rebuilt my kernel and modules, and still get
-messages about unresolved symbols when
-booting; 15. I installed Linux 2.1/2.3 and now I cannot
-load ''any'' modules!; 16. What about dial-on-demand networking?
-
-__1. __Why do I get Cannot locate module for
-net-pf-X messages when I
-run __/sbin/ifconfig__?
-
-
-
-__ __Around kernel version 1.3.80, the networking code
-was changed to allow loading protocol families (e.g. IPX,
-AX.25 and !AppleTalk) as modules. This caused the addition
-of a new kerneld request:
-net-pf-X, where
-X is a number identifying the protocol
-(see
-/usr/src/linux/include/linux/socket.h
-for the meaning of the various numbers). Unfortunately,
-__ifconfig__ accidentally triggers these
-messages, so a lot of people get a couple of messages
-logged when the system boots and it runs
-__ifconfig__ to setup the loopback
-device. The messages are harmless, and you can disable
-them by adding the lines
-
-
- alias net-pf-3 off # Forget AX.25
-alias net-pf-4 off # Forget IPX
-alias net-pf-5 off # Forget !AppleTalk
-
-to /etc/conf.modules. Of
-course, if you do use IPX as a module, you should not add
-a line to disable IPX.
-
-
-
-__2. __After starting kerneld, my system slows to a crawl
-when I activate my ppp-connection
-
-
-
-__ __There have been a couple of reports of this. It
-seems to be an unfortunate interaction between kerneld and
-the tkPPP script that is used
-on some systems to setup and monitor the PPP
-connection. The script apparently runs loops while running
-__ifconfig__. This triggers kerneld, to
-look for the
-net-pf-X modules
-(see above), keeping the system load high and possibly
-pouring lots of Cannot locate module for
-net-pf-X messages
-into the system log. There is no known workaround, other
-than not use tkPPP, or change
-it to use some other way of monitoring the
-connection.
-
-
-
-__3. __kerneld does not load my SCSI driver!
-
-
-
-__ __Add an entry for the SCSI hostadapter to your
-/etc/conf.modules. See the
-description of the scsi_hostadapter
-entry above.
-
-
-
-__4. __modprobe complains about
-gcc2_compiled being
-undefined
-
-
-
-__ __This is a bug in the module utilities, that show up
-only with binutils 2.6..9 and later, and it is also
-documented in the release note for the binutils. So read
-that, or fetch an upgrade to the module-utilities that fix
-this bug.
-
-
-
-__5. __My sound driver keeps forgetting its settings for
-volume etc
-
-
-
-__ __The settings for a module are stored inside the
-module itself when it is loaded. So when kerneld
-auto-unloads a module, any settings you have made are
-forgotten, and the next time the module loads it reverts
-to the default settings.
-
-
-
-You can tell kerneld to configure a module by
-running a program after the module has been
-auto-loaded. See Pre/Post Install on the
-post-install entry.
-
-
-
-__6. __DOSEMU needs some modules; how can I get kerneld to
-load those ?
-
-
-
-__ __You cannot. None of the dosemu versions, official or
-development versions, support loading the dosemu modules
-through kerneld. However, if you are running kernel 2..26
-or later, you do not need the special dosemu modules any
-longer; just upgrade dosemu to .66.1 or higher.
-
-
-
-__7. __Why do I get Ouch, kerneld timed out,
-message failed messages ?
-
-
-
-__ __When the kernel sends a request off to to kerneld,
-it expects to receive an acknowledgment back within one
-second. If kerneld does not send this acknowledgment,
-this message is logged. The request is retransmitted, and
-should get through eventually.
-
-
-
-This usually happens on systems with a very high
-load. Since kerneld is a user-mode process, it is
-scheduled just like any other process on the system. At
-times of high load, it may not get to run in time to send
-back the acknowledgment before the kernel times
-out.
-
-
-
-If this happens even when the load is light, try
-restarting kerneld. Kill the kerneld process, and start
-it again with the command __/usr/sbin/kerneld__. If the problem persists,
-you should mail a bug report to
-`linux-kernel@vger.rutgers.edub, but
-''please'' make sure that your versions
-of the kernel, kerneld and the module utilities are
-up-to-date before posting about the problem. Check the
-requirements in
-linux/Documentation/Changes
-
-
-
-__8. __Mount doesn't wait for kerneld to load the
-filesystem module
-
-
-
-__ __There has been a number of reports that the mount(8)
-command does not wait for kerneld to load the filesystem
-module. __lsmod__ does show that kerneld
-loads the module, and if you repeat the mount command
-immediately it will succeed. This appears to be a bug in
-the module-utilities version 1.3.69f that affects some
-Debian users. It can be fixed by getting a later version
-of the module-utilities.
-
-
-
-__9. __kerneld fails to load the ncpfs
-module
-
-
-
-__ __You need to compile the ncpfs utilities with
--DHAVE_KERNELD. See the
-ncpfs
-Makefile.
-
-
-
-__10. __kerneld fails to load the smbfs
-module
-
-
-
-__ __You are using an older version of the
-smbmount utilities. Get the
-latest version (.10 or later) from the
-SMBFS archive one TSX-11
-
-
-
-__11. __I built everything as modules, and now my system
-cannot boot or kerneld fails to load the root filesystem
-module!
-
-
-
-__ __You cannot modularize
-''everything'': The kernel must have
-enough drivers built in for it to be able to mount your
-root filesystem, and run the necessary programs to start
-kerneld[[2]. You cannot modularize
-
-
-
-
-
-
-*
-
-the driver for the hard disk
-where your root filesystem lives
-
-
-*
-*
-
-the root filesystem driver itself
-
-
-
-*
-*
-
-the binary format loader for init,
-kerneld and other programs
-
-
-*
-
-__12. __kerneld will not load at boot time; it complains
-about libgdbm
-
-
-
-__ __Newer versions of kerneld need the GNU dbm library,
-libgdbm.so, to run. Most
-installations have this file in
-/usr/lib, but you are probably
-starting kerneld before the /usr
-filesystem is mounted. One symptom of this is that kerneld
-will not start during boot-up (from your rc-scripts), but
-runs fine if you start it by hand after that system is
-up. The solution is to either move the kerneld startup to
-after your /usr is mounted, or move
-the gdbm library to your root filesystem, e.g. to
-/lib.
-
-
-
-__13. __I get Cannot load module xxx but
-I just reconfigured my kernel without
-xxx support!
-
-
-
-__ __The Slackware installation (possibly others) builds
-a default /etc/rc.d/rc.modules which
-does an explicit modprobe on a variety of modules. Exactly
-which modules get modprobed depends on the original
-kernel's configuration. You have probably reconfigured
-your kernel to exclude one or more of the modules that is
-getting modprobed in rc.modules, thus, the error
-message(s). Update your rc.modules by commenting out any
-modules you no longer use, or remove the
-rc.modules entirely and let kerneld
-load the modules when they are needed.
-
-
-
-__14. __I rebuilt my kernel and modules, and still get
-messages about unresolved symbols when
-booting
-
-
-
-__ __You probably reconfigured/rebuilt your kernel and
-excluded some modules. You've got some old modules that
-you no longer use hanging around in the
-/lib/modules directory. The easiest
-fix is to delete your
-/lib/modules/x.y.z
-directory and do a __make modules_install__
-from the kernel source directory again. Note that this
-problem only occurs when reconfiguring your kernel without
-changing versions. If you see this error when moving to a
-newer kernel version you've got some other problem.
-
-
-
-__15. __I installed Linux 2.1/2.3 and now I cannot
-load ''any'' modules!
-
-
-
-__ __Odd numbered Linux are development kernels. As such,
-it should be expected that things break from time to
-time. One of the things that has changed significantly is
-the way modules are handled, and where the kernel and
-modules are loaded into memory.
-
-
-
-In brief, if you want to use modules with a
-development kernel, you must
-
-
-
-
-
-
-*
-
-read the
-Documentation/Changes file and see
-what packages need upgrading on your system
-
-
-*
-*
-
-use the latest modutils package,
-available from !AlphaBits on
-Red Hat or the mirror site at TSX-11
-
-
-*
-
-I recommend using at least kernel 2.1.29, if you
-want to use modules with a 2.1 kernel.
-
-
-
-__16. __What about dial-on-demand networking?
-
-
-
-__ __kerneld originally had some support for establishing
-dial-up network connections on demand; trying to send
-packets to a network without being connected would cause
-kerneld to run the
-/sbin/request_route script to setup a
-PPP or SLIP connection.
-
-
-
-This turned out to be a bad idea. Alan Cox of Linux
-networking fame wrote on the linux-kernel mailing list
-
-
-
-The request-route stuff is obsolete, broken and
-not required [[...] Its also removed from 2.1.x
-trees.
-
-
-
-Instead of using the request-route script and
-kerneld, I highly recommend Eric Schenk's diald
-package to manage your demand dialing.
-
-
-!Notes
-[[1]
-
-Some
-distributions call this file
-modules.conf
-
-[[2]
-
-Actually, this is not true. Late
-1.3.x and all 2.x kernels support the use of an initial
-ram-disk that is loaded by LILO or LOADLIN; it is possible
-to load modules from this disk very early in the boot
-process. How to do it is described in the
-linux/Documentation/initrd.txt file
-that comes with the kernel source-files
.
+Describe
[HowToKerneld
] here.