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

📄 ch-kernel-modules.html

📁 Redhat9中文官方文档, 初学者必备
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML><HEAD><TITLE>内核模块</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+"><LINKREL="HOME"TITLE="Red Hat Linux 9"HREF="index.html"><LINKREL="UP"TITLE="系统配置"HREF="part-sysconfig.html"><LINKREL="PREVIOUS"TITLE="校验引导装载程序"HREF="s1-kernel-bootloader.html"><LINKREL="NEXT"TITLE="其它资料"HREF="s1-kernel-modules-additional-resources.html"><LINKREL="STYLESHEET"TYPE="text/css"HREF="rhdocs-man.css"><METAHTTP-EQUIV="Content-Type"CONTENT="text/html; charset=gb2312"></HEAD><BODYCLASS="CHAPTER"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">Red Hat Linux 9: Red Hat Linux 定制指南</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="s1-kernel-bootloader.html"ACCESSKEY="P">后退</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="s1-kernel-modules-additional-resources.html"ACCESSKEY="N">前进</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="CHAPTER"><H1><ANAME="CH-KERNEL-MODULES"></A>31. 内核模块</H1><P>      Linux 内核具有模块化设计。在引导时,只有少量的驻留内核被载入内存。这之后,无论何时用户要求使用驻留内核中没有的功能,某<ICLASS="FIRSTTERM">内核模块(kernel      module)</I>,有时又称<ICLASS="FIRSTTERM">驱动程序(driver)</I>。就会被动态地载入内存。    </P><P>      在安装过程中,系统上的硬件会被探测。基于探测结果和用户提供的信息,安装程序会决定哪些模块需要在引导时被载入。安装程序会设置动态载入机制来透明地运行。    </P><P>      如果安装后添加了新硬件,而这个硬件需要一个内核模块,系统必须被配置来为新硬件载入正确的内核模块。当系统使用新硬件引导后,<BCLASS="APPLICATION">Kudzu</B>      程序会运行,如果新硬件被支持,它就会被检测到,该程序还会为它配置模块。你也可以通过编辑模块配置文件      <TTCLASS="FILENAME">/etc/modules.conf</TT> 来手工指定这个模块。    </P><DIVCLASS="NOTE"><P></P><TABLECLASS="NOTE"WIDTH="100%"BORDER="0"><TR><TDWIDTH="25"ALIGN="CENTER"VALIGN="TOP"><IMGSRC="./stylesheet-images/note.png"HSPACE="5"ALT="注记"></TD><THALIGN="LEFT"VALIGN="CENTER"><B>注记</B></TH></TR><TR><TD>&nbsp;</TD><TDALIGN="LEFT"VALIGN="TOP"><P>	用来显示 X 窗口系统界面的视频卡模块是 <TTCLASS="FILENAME">XFree86</TT>	软件包的一部分,而不是内核的一部分;因此,本章并不应用于该模块。      </P></TD></TR></TABLE></DIV><P>      例如,如果某系统包括了一个 SMC EtherPower 10 PCI 网卡,模块配置文件包含以下行:    </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMPUTEROUTPUT">alias eth0 tulip</TT></PRE></TD></TR></TABLE><P>      如果系统上添加了第二个网卡,它和第一个网卡一模一样,在      <TTCLASS="FILENAME">/etc/modules.conf</TT> 中添加这一行:    </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMPUTEROUTPUT">alias eth1 tulip</TT></PRE></TD></TR></TABLE><P>      要获得内核模块的字母顺序列表以及这些模块所支持的硬件,请参阅<ICLASS="CITETITLE">《Red Hat Linux 参考指南》</I>。    </P><DIVCLASS="SECT1"><H1CLASS="SECT1"><ANAME="S1-KERNEL-MODULE-UTILS"></A>31.1. 内核模块工具</H1><P>	如果安装了 <TTCLASS="FILENAME">modutils</TT> 软件包,你还可以使用一组管理内核模块的命令。使用这些命令来判定模块是否被成功地载入了,或为一件新硬件试验不同的模块。      </P><P>	<TTCLASS="COMMAND">/sbin/lsmod</TT> 命令显示了当前载入了的模块列表。例如:      </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMPUTEROUTPUT">Module                  Size  Used by    Not taintediptable_filter          2412   0 (autoclean) (unused)ip_tables              15864   1 [iptable_filter]nfs                    84632   1 (autoclean)lockd                  59536   1 (autoclean) [nfs]sunrpc                 87452   1 (autoclean) [nfs lockd]soundcore               7044   0 (autoclean)ide-cd                 35836   0 (autoclean)cdrom                  34144   0 (autoclean) [ide-cd]parport_pc             19204   1 (autoclean)lp                      9188   0 (autoclean)parport                39072   1 (autoclean) [parport_pc lp]autofs                 13692   0 (autoclean) (unused)e100                   62148   1microcode               5184   0 (autoclean)keybdev                 2976   0 (unused)mousedev                5656   1hid                    22308   0 (unused)input                   6208   0 [keybdev mousedev hid]usb-uhci               27468   0 (unused)usbcore                82752   1 [hid usb-uhci]ext3                   91464   2jbd                    56336   2 [ext3]</TT></PRE></TD></TR></TABLE><P>	对每行而言,第一列是模块名称;第二列是模块大小;第三列是用量计数。      </P><P>	用量计数后面的信息对每个模块而言都有所不同。如果	<TTCLASS="COMPUTEROUTPUT">(unused)</TT> 被列在某模块的那行中,该模块当前就没在使用。如果	<TTCLASS="COMPUTEROUTPUT">(autoclean)</TT> 被列在某模块的那行中,该模块可以被	<TTCLASS="COMMAND">rmmod -a</TT> 命令自动清洗。当这个命令被执行后,所有自从上次被自动清洗后未被使用的被标记了“autoclean”的模块都会被卸载。Red Hat Linux	不默认执行自动清洗行动。      </P><P>	如果模块名称被列举在行尾的括号内,括号内的模块就依赖于列举在这一行的第一列中的模块。例如,在以下行中:      </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMPUTEROUTPUT">usbcore                82752   1 [hid usb-uhci]</TT></PRE></TD></TR></TABLE><P>	hid 和 usb-uhci 内核模块依赖于 usbcore 模块。      </P><P>	<TTCLASS="COMMAND">/sbin/lsmod</TT> 输出和查看 <TTCLASS="FILENAME">/proc/modules</TT> 的输出相同。      </P><P>	要载入内核模块,使用 <TTCLASS="COMMAND">/sbin/modprobe</TT>	命令,然后跟着内核模块的名称。按照默认设置,<TTCLASS="COMMAND">modprobe</TT>	试图从 <TTCLASS="FILENAME">/lib/modules/<TTCLASS="REPLACEABLE"><I>&#60;kernel-version&#62;</I></TT>/kernel/drivers/</TT>	子目录中载入模块。每类模块都有一个子目录,如用于网络接口驱动程序的	<TTCLASS="FILENAME">net/</TT> 子目录。某些内核模块有模块依赖关系,这意味着你必须首先载入其它模块才能载入这些模块。	<TTCLASS="COMMAND">/sbin/modprobe</TT> 命令检查这些依赖关系,并在载入指定模块前载入满足这些依赖关系的模块。      </P><P>	例如:      </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMMAND">/sbin/modprobe hid</TT></PRE></TD></TR></TABLE><P>	这个命令载入任何满足依赖关系的模块,然后再载入 <TTCLASS="FILENAME">hid</TT> 模块。      </P><P>	要在 <TTCLASS="COMMAND">/sbin/modprobe</TT>	执行命令的时候把它们都显示在屏幕上,使用 <TTCLASS="OPTION">-v</TT> 选项。例如:      </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMMAND">/sbin/modprobe -v hid</TT></PRE></TD></TR></TABLE><P>	所显示的输出和下面相似:      </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMMAND">/sbin/insmod /lib/modules/2.4.20-2.47.1/kernel/drivers/usb/hid.oUsing /lib/modules/2.4.20-2.47.1/kernel/drivers/usb/hid.oSymbol version prefix 'smp_'</TT></PRE></TD></TR></TABLE><P>	你还可以使用 <TTCLASS="COMMAND">/sbin/insmod</TT> 命令来载入内核模块;不过它不解决依赖关系。因此,推荐你使用	<TTCLASS="COMMAND">/sbin/modprobe</TT> 命令。      </P><P>	要卸载内核模块,使用 <TTCLASS="COMMAND">/sbin/rmmod</TT>	命令和模块名称。<TTCLASS="COMMAND">rmmod</TT> 工具只卸载不在使用的、和不是被正使用的模块所依赖的模块。      </P><P>	例如:      </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMMAND">/sbin/rmmod hid</TT></PRE></TD></TR></TABLE><P>	这个命令卸载 <TTCLASS="FILENAME">hid</TT> 内核模块。      </P><P>	另一个有用的模块工具是 <TTCLASS="COMMAND">modinfo</TT>。使用 <TTCLASS="COMMAND">/sbin/modinfo</TT>	命令来显示关于内核模块的信息。一般语法是:      </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMMAND">/sbin/modinfo <TTCLASS="REPLACEABLE"><I>[options]</I></TT> <TTCLASS="REPLACEABLE"><I>&#60;module&#62;</I></TT></TT></PRE></TD></TR></TABLE><P>	包括 <TTCLASS="COMMAND">-d</TT> 在内的选项显示了关于模块的简短描述,<TTCLASS="COMMAND">-p</TT>	选项列举了模块所支持的参数。要获取选项的完整列表,请参阅	<TTCLASS="COMMAND">modinfo</TT> 的说明书页(<TTCLASS="COMMAND">man modinfo</TT>)。      </P></DIV></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><AHREF="s1-kernel-bootloader.html"ACCESSKEY="P">后退</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="index.html"ACCESSKEY="H">起点</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="s1-kernel-modules-additional-resources.html"ACCESSKEY="N">前进</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">校验引导装载程序</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="part-sysconfig.html"ACCESSKEY="U">上级</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">其它资料</TD></TR></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

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