⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modules.txt

📁 嵌入式系统设计与实例开发源码
💻 TXT
字号:
This file describes the strategy for dynamically loadable modulesin the Linux kernel. This is not a technical description onthe internals of module, but mostly a sample of how to compileand use modules.Note: You should ensure that the modutils-X.Y.Z.tar.gz you are usingis the most up to date one for this kernel. The "X.Y.Z" will reflectthe kernel version at the time of the release of the modules package.Some older modules packages aren't aware of some of the newer modularfeatures that the kernel now supports.  The current required versionis listed in the file linux/Documentation/Changes.* * * NOTE * * *The kernel has been changed to remove kerneld support and usethe new kmod support.  Keep this in mind when reading this file.  Kmoddoes the exact same thing as kerneld, but doesn't require an externalprogram (see Documentation/kmod.txt)In the beginning...-------------------Anyway, your first step is to compile the kernel, as explained in thefile linux/README.  It generally goes like:	make config	make dep	make clean	make zImage or make zliloIn "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 selectthe option "m" in "make config" for those features that the current kernelcan offer as loadable modules.You also have a possibility to create modules that are less dependent onthe kernel version.  This option can be selected during "make config", byenabling 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 inthe 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) interfaceWhen you have made the kernel, you create the modules by doing:	make modulesThis 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_installThis will copy all newly made modules into subdirectories under"/lib/modules/kernel_release/", where "kernel_release" is somethinglike 2.0.1, or whatever the current kernel version is...As soon as you have rebooted the newly made kernel, you can installand remove modules at will with the utilities: "insmod" and "rmmod".After reading the man-page for insmod, you will also know how easyit is to configure a module when you do "insmod" (hint: symbol=value).Nifty features:---------------You also have access to two utilities: "modprobe" and "depmod", wheremodprobe is a "wrapper" for (or extension to) "insmod".These utilities use (and maintain) a set of files that describe all themodules that are available for the current kernel in the /lib/moduleshierarchy as well as their interdependencies.Using the modprobe utility, you can load any module like this:	/sbin/modprobe modulewithout paying much attention to which kernel you are running, or whatother 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 anautomatic setting of insmod options for each module.And, yes, there _are_ man-pages for all this...To use modprobe successfully, you generally place the followingcommand 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 -aThis computes the dependencies between the different modules.Then if you do, for example	/sbin/modprobe umsdosyou 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 amodule 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 driverand 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 intThe "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 removeloadable modules...With the kerneld daemon, all of these chores will be taken care ofautomatically.  Just answer "Y" to CONFIG_KERNELD in "make config",and make sure that /sbin/kerneld is started as soon as possibleafter boot and that "/sbin/depmod -a" has been executed for thecurrent kernel. (Read more about this in the module utilities package.)Whenever a program wants the kernel to use a feature that is onlyavailable as a loadable module, and if the kernel hasn't got themodule installed yet, the kernel will ask the kerneld daemon to takecare 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 modulehas been unused for a period of time (usually 1 minute), the modulewill 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 forunused 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 independentof the actual hardware setup.  The setup of the "virtual" kernel isinstead controlled by a configuration file as well as the actual usagepattern of the current machine and its kernel.This should be good news for maintainers of multiple machines as well asfor maintainers of distributions.To use kerneld with the least amount of "hassle", you need modprobe froma release that can be considered "recent" w.r.t. your kernel, and alsoa configuration file for modprobe ("/etc/modules.conf").Since modprobe already knows about most modules, the minimal configurationfile 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=1You 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 moduleWritten by:	Jacques Gelinas <jacques@solucorp.qc.ca>	Bjorn Ekwall <bj0rn@blox.se>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -