modules.txt
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:9k
- This file describes the strategy for dynamically loadable modules
- in the Linux kernel. This is not a technical description on
- the internals of module, but mostly a sample of how to compile
- and use modules.
- Note: You should ensure that the modutils-X.Y.Z.tar.gz you are using
- is the most up to date one for this kernel. The "X.Y.Z" will reflect
- the kernel version at the time of the release of the modules package.
- Some older modules packages aren't aware of some of the newer modular
- features that the kernel now supports. The current required version
- is listed in the file linux/Documentation/Changes.
- * * * NOTE * * *
- The kernel has been changed to remove kerneld support and use
- the new kmod support. Keep this in mind when reading this file. Kmod
- does the exact same thing as kerneld, but doesn't require an external
- program (see Documentation/kmod.txt)
- In the beginning...
- -------------------
- Anyway, your first step is to compile the kernel, as explained in the
- file linux/README. It generally goes like:
- make config
- make dep
- make clean
- make zImage or make zlilo
- In "make config", you select what you want to include in the "resident"
- kernel and what features you want to have available as loadable modules.
- You will generally select the minimal resident set that is needed to boot:
- The filesystem of your root partition
- A scsi driver, but see below for a list of SCSI modules!
- Normal hard drive support
- Net support (CONFIG_NET)
- TCP/IP support (CONFIG_INET), but no drivers!
- plus those things that you just can't live without...
- The set of modules is constantly increasing, and you will be able to select
- the option "m" in "make config" for those features that the current kernel
- can offer as loadable modules.
- You also have a possibility to create modules that are less dependent on
- the kernel version. This option can be selected during "make config", by
- enabling CONFIG_MODVERSIONS, and is most useful on "stable" kernel versions,
- such as the kernels from the 1.2 and 2.0 series.
- If you have modules that are based on sources that are not included in
- the official kernel sources, you will certainly like this option...
- Here is a sample of the available modules included in the kernel sources:
- Most filesystems: minix, msdos, umsdos, sysv, isofs, hpfs,
- smbfs, nfs
- Mid-level SCSI support (required by top and low level scsi drivers).
- Most low-level SCSI drivers: (i.e. aha1542, in2000)
- All SCSI high-level drivers: disk, tape, cdrom, generic.
- Most Ethernet drivers: (too many to list, please see the file
- ./Documentation/networking/net-modules.txt)
- Most CDROM drivers:
- aztcd: Aztech,Orchid,Okano,Wearnes
- cm206: Philips/LMS CM206
- gscd: Goldstar GCDR-420
- mcd, mcdx: Mitsumi LU005, FX001
- optcd: Optics Storage Dolphin 8000AT
- sjcd: Sanyo CDR-H94A
- sbpcd: Matsushita/Panasonic CR52x, CR56x, CD200,
- Longshine LCS-7260, TEAC CD-55A
- sonycd535: Sony CDU-531/535, CDU-510/515
- And a lot of misc modules, such as:
- lp: line printer
- binfmt_elf: elf loader
- binfmt_java: java loader
- isp16: cdrom interface
- serial: the serial (tty) interface
- When you have made the kernel, you create the modules by doing:
- make modules
- This will compile all modules and update the linux/modules directory.
- In this directory you will then find a bunch of symbolic links,
- pointing to the various object files in the kernel tree.
- Now, after you have created all your modules, you should also do:
- make modules_install
- This will copy all newly made modules into subdirectories under
- "/lib/modules/kernel_release/", where "kernel_release" is something
- like 2.0.1, or whatever the current kernel version is...
- As soon as you have rebooted the newly made kernel, you can install
- and remove modules at will with the utilities: "insmod" and "rmmod".
- After reading the man-page for insmod, you will also know how easy
- it is to configure a module when you do "insmod" (hint: symbol=value).
- Nifty features:
- ---------------
- You also have access to two utilities: "modprobe" and "depmod", where
- modprobe is a "wrapper" for (or extension to) "insmod".
- These utilities use (and maintain) a set of files that describe all the
- modules that are available for the current kernel in the /lib/modules
- hierarchy as well as their interdependencies.
- Using the modprobe utility, you can load any module like this:
- /sbin/modprobe module
- without paying much attention to which kernel you are running, or what
- other modules this module depends on.
- With the help of the modprobe configuration file: "/etc/modules.conf"
- you can tune the behaviour of modprobe in many ways, including an
- automatic setting of insmod options for each module.
- And, yes, there _are_ man-pages for all this...
- To use modprobe successfully, you generally place the following
- command in your /etc/rc.d/rc.S script. (Read more about this in the
- "rc.hints" file in the module utilities package, "modutils-x.y.z.tar.gz".)
- /sbin/depmod -a
- This computes the dependencies between the different modules.
- Then if you do, for example
- /sbin/modprobe umsdos
- you will automatically load _both_ the msdos and umsdos modules,
- since umsdos runs piggyback on msdos.
- Using modinfo:
- --------------
- Sometimes you need to know what parameters are accepted by a
- module or you've found a bug and want to contact the maintainer.
- Then modinfo comes in very handy.
- Every module (normally) contains the author/maintainer,
- a description and a list of parameters.
- For example "modinfo -a eepro100" will return:
- Maintainer: Andrey V. Savochkin <saw@saw.sw.com.sg>
- and "modinfo -d eepro100" will return a description:
- Intel i82557/i82558 PCI EtherExpressPro driver
- and more important "modinfo -p eepro100" will return this list:
- debug int
- options int array (min = 1, max = 8)
- full_duplex int array (min = 1, max = 8)
- congenb int
- txfifo int
- rxfifo int
- txdmacount int
- rxdmacount int
- rx_copybreak int
- max_interrupt_work int
- multicast_filter_limit int
- The "ultimate" utility:
- -----------------------
- OK, you have read all of the above, and feel amply impressed...
- Now, we tell you to forget all about how to install and remove
- loadable modules...
- With the kerneld daemon, all of these chores will be taken care of
- automatically. Just answer "Y" to CONFIG_KERNELD in "make config",
- and make sure that /sbin/kerneld is started as soon as possible
- after boot and that "/sbin/depmod -a" has been executed for the
- current kernel. (Read more about this in the module utilities package.)
- Whenever a program wants the kernel to use a feature that is only
- available as a loadable module, and if the kernel hasn't got the
- module installed yet, the kernel will ask the kerneld daemon to take
- care of the situation and make the best of it.
- This is what happens:
- - The kernel notices that a feature is requested that is not
- resident in the kernel.
- - The kernel sends a message to kerneld, with a symbolic
- description of the requested feature.
- - The kerneld daemon asks e.g. modprobe to load a module that
- fits this symbolic description.
- - modprobe looks into its internal "alias" translation table
- to see if there is a match. This table can be reconfigured
- and expanded by having "alias" lines in "/etc/modules.conf".
- - insmod is then asked to insert the module(s) that modprobe
- has decided that the kernel needs. Every module will be
- configured according to the "options" lines in "/etc/modules.conf".
- - modprobe exits and kerneld tells the kernel that the request
- succeeded (or failed...)
- - The kernel uses the freshly installed feature just as if it
- had been configured into the kernel as a "resident" part.
- The icing of the cake is that when an automatically installed module
- has been unused for a period of time (usually 1 minute), the module
- will be automatically removed from the kernel as well.
- This makes the kernel use the minimal amount of memory at any given time,
- making it available for more productive use than as just a placeholder for
- unused code.
- Actually, this is only a side-effect from the _real_ benefit of kerneld:
- You only have to create a minimal kernel, that is more or less independent
- of the actual hardware setup. The setup of the "virtual" kernel is
- instead controlled by a configuration file as well as the actual usage
- pattern of the current machine and its kernel.
- This should be good news for maintainers of multiple machines as well as
- for maintainers of distributions.
- To use kerneld with the least amount of "hassle", you need modprobe from
- a release that can be considered "recent" w.r.t. your kernel, and also
- a configuration file for modprobe ("/etc/modules.conf").
- Since modprobe already knows about most modules, the minimal configuration
- file could look something like this:
- alias scsi_hostadapter aha1542 # or whatever SCSI adapter you have
- alias eth0 3c509 # or whatever net adapter you have
- # you might need an "options" line for some net adapters:
- options 3c509 io=0x300 irq=10
- # you might also need an "options" line for some other module:
- options cdu31a cdu31a_port=0x1f88 sony_pas_init=1
- You could add these lines as well, but they are only "cosmetic":
- alias net-pf-3 off # no ax25 module available (yet)
- alias net-pf-4 off # if you don't use the ipx module
- alias net-pf-5 off # if you don't use the appletalk module
- Written by:
- Jacques Gelinas <jacques@solucorp.qc.ca>
- Bjorn Ekwall <bj0rn@blox.se>