<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LinuxSense &#187; 内核模块</title>
	<atom:link href="http://www.linuxsense.org/archives/tag/%e5%86%85%e6%a0%b8%e6%a8%a1%e5%9d%97/feed" rel="self" type="application/rss+xml" />
	<link>http://www.linuxsense.org</link>
	<description>分享Linux技术的点点滴滴</description>
	<lastBuildDate>Sat, 01 Aug 2009 05:23:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Linux的内核模块管理命令</title>
		<link>http://www.linuxsense.org/archives/414.html</link>
		<comments>http://www.linuxsense.org/archives/414.html#comments</comments>
		<pubDate>Fri, 14 Nov 2008 08:11:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux命令]]></category>
		<category><![CDATA[内核模块]]></category>

		<guid isPermaLink="false">http://www.linuxsense.org/?p=414</guid>
		<description><![CDATA[内核模块管理是学习Linux的一个重要的必经之路，如果不断的使用新硬件可能这方面更显得尤为重要。
1. lsmod 列出已经加载的内核模块
lsmod 是列出目前系统中已加载的模块的名称及大小等；另外我们还可以查看 /proc/modules ，我们一样可以知道系统已经加载的模块。
 
2.modinfo 查看模块信息
modinfo 可以查看模块的信息，通过查看模块信息来判定这个模块的用途。
 
3.modprobe 挂载新模块以及新模块相依赖的模块
  modprobe 我们常用的功能就是挂载模块，在挂载某个内核模块的同时，这个模块所依赖的模块也被同时挂载；当然modprobe 也有列出内核所有模块，还有移除模块的功能；下在我们举个例子说一说咱们常用的功能和参数；
    modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-o ] [parameters...]3WiLinux联盟
    modprobe -r [-n] [-i] [-v] &#8230;3WiLinux联盟
    modprobe -l -t [ -a ...]
 
我们可以看到在/etc/modprobe.conf文件中存在的内容形式如下：
 
alias scsi_hostadapter mptbase3WiLinux联盟
alias scsi_hostadapter1 mptspi
 
最后一列是模块名字，中间的是模块的别名。那么如果我们知道了一个模块的名字，怎么知道它的别名呢？用下面的命令就可以：
#modprobe -c 3WiLinux联盟
可以查看所有模块的别名3WiLinux联盟
3WiLinux联盟
#modprobe -c 模块名 &#124;grep 模块名
 
 
modprobe -l 是列出内核中所有的模块，包括已挂载和未挂载的；通过modprobe -l ，我们能查看到我们所需要的模块，然后根据我们的需要来挂载；其实modprobe -l 读取的模块列表就位于 /lib/modules/&#8217;uname -r&#8217; 目录中；其中uname -r [...]]]></description>
			<content:encoded><![CDATA[<p>内核模块管理是学习Linux的一个重要的必经之路，如果不断的使用新硬件可能这方面更显得尤为重要。</p>
<p><strong>1. lsmod 列出已经加载的内核模块</strong><br />
lsmod 是列出目前系统中已加载的模块的名称及大小等；另外我们还可以查看 /proc/modules ，我们一样可以知道系统已经加载的模块。<br />
 <br />
<strong>2.modinfo 查看模块信息</strong><br />
modinfo 可以查看模块的信息，通过查看模块信息来判定这个模块的用途。<br />
 <br />
<strong>3.modprobe 挂载新模块以及新模块相依赖的模块</strong><br />
  modprobe 我们常用的功能就是挂载模块，在挂载某个内核模块的同时，这个模块所依赖的模块也被同时挂载；当然modprobe 也有列出内核所有模块，还有移除模块的功能；下在我们举个例子说一说咱们常用的功能和参数；<br />
    modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-o ] [parameters...]3WiLinux联盟<br />
    modprobe -r [-n] [-i] [-v] &#8230;3WiLinux联盟<br />
    modprobe -l -t [ -a ...]<br />
 <br />
我们可以看到在/etc/modprobe.conf文件中存在的内容形式如下：<br />
 <br />
alias scsi_hostadapter mptbase3WiLinux联盟<br />
alias scsi_hostadapter1 mptspi<br />
 </p>
<p>最后一列是模块名字，中间的是模块的别名。那么如果我们知道了一个模块的名字，怎么知道它的别名呢？用下面的命令就可以：</p>
<p>#modprobe -c 3WiLinux联盟<br />
可以查看所有模块的别名3WiLinux联盟<br />
3WiLinux联盟<br />
#modprobe -c 模块名 |grep 模块名<br />
 </p>
<p> </p>
<p>modprobe -l 是列出内核中所有的模块，包括已挂载和未挂载的；通过modprobe -l ，我们能查看到我们所需要的模块，然后根据我们的需要来挂载；其实modprobe -l 读取的模块列表就位于 /lib/modules/&#8217;uname -r&#8217; 目录中；其中uname -r 是内核的版本；<br />
 </p>
<p>  注意： 模块名是不能带有后缀的，我们通过modprobe -l 所看到的模块，都是带有.ko 或.o后缀；</p>
<p><strong>4.rmmod 移除已挂载模块</strong></p>
<p><strong>5.depmod 创建模块依赖关系的列表</strong></p>
<p>这个模块管理工具是创建模块依赖关系的列表，有几个参数我们注意一下就行了，目前的的Linux 发行版所用的内核是2.6x版本，是自动解决依赖关系，所以这个命令知道就行了；模块之前也有依赖关系，比如我们想驱动USB 移动硬盘，目前有两种驱动，一种是udev ，在内核中有，但目前不太稳定；另一种办法是用usb-storage驱动，而usb-storage 依赖的模块是scsi 模块，所以我们要用usb-storage 的模块，也得把scsi 编译安装；</p>
<p>    再举个例子：sata的硬盘，在Linux中的设备表示的是/dev/sd* ，比如 /dev/sda，/dev/sdb 等&#8230; 系统要驱动 sata硬盘，则需要把sata在内核中选中，或编译成模块，或内置于内核之中，在此同时，还需要在内核中选中ide ，scsi 的支持等；</p>
<p>    depmod 工具的洋文原意：depmod — program to generate modules.dep and map files.（我译的：为modules.dep 文件或映射文件创建依赖关系）</p>
<p>    [root@localhost beinan]# depmod -a 注：为所有列在/etc/modprobe.conf 或/etc/modules.conf 中的所有模块创建依赖关系，并且写入到modules.dep文件；3WiLinux联盟<br />
    [root@localhost beinan]# depmod -e 注：列出已挂载但不可用的模块；3WiLinux联盟<br />
    [root@localhost beinan]# depmod -n 注：列出所有模块的依赖关系，但仅仅是输出出来 （Write the dependency file on stdout only）</p>
<p>    注：modules.dep 位于 /lib/modules/内核版本 目录</p>
<p><strong>6.insmod 挂载模块</strong></p>
<p>insmod 这个工具，和modprobe 有点类似，但功能上没有modprobe 强，modprobe 在挂载模块是不用指定模块文件的路径，也不用带文件的后缀.o 或.ko ；而insmod 需要的是模块的所在目录的绝对路径，并且一定要带有模块文件名后缀的(modulefile.o 或modulesfile.ko ）</p>
<p><strong>7.与内核模块加载相关的配置文件</strong></p>
<p>模块的配置文件 modules.conf 或 modprobe.conf</p>
<p>    内核模块的开机自动挂载模块一般是位于一个配置文件，一般的Linux发行版本都有 /etc/modules.conf 或 /etc/modprobe.conf 。比如Fedora Core 4.0 内核模块开机自动加载文件是 /etc/modprobe.conf ；在这个文件中，一般是写入模块的加载命令或模块的别名的定义等；比如我们在modules.conf 中可能会发行类似的一行 ；</p>
<p>    alias eth0 8139too</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linuxsense.org/archives/414.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
