




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.6.28内核中安装sctp模块的 问题 曾经在之前的较早的几个内核版本(2.6.12 和2.6.18)中修改过sctp的代码,当时编译sctp模块就直接用make CONFIG_IP_SCTP=m -C /usr/src/linux-2.6.28 M=/usr/src/linux-2.6.28/net/sctp modules然后insmod sctp.ko就ok了但是在比较新的内核2.6.28中,修改了部分 源代码后,编译通过了,但是insmod sctp.ko 时报错:insmod: error inserting sctp.ko: -1 Unknown symbol in module dmesg打印出的信息是:sctp: Unknown symbol crc32c_le 原以为是自己修改的代码中含有了未知的函数或符号,将所有新引入的的函数都使用EXPORT_SYMBOL导出后依然是有这个错误!后来使用了modprobe,居然安装成功了,lsmod |grep sctp之后可见:sctp 163480 2libcrc32c 6528 1 sctpipv6 230352 27 sctp从左到右依次是:模块名、模块大小、被.使用ipv6模块应该是编译进内核的,libcrc32c在2.6.28中应该是动态加载的 所以,问题出在了这里,在编译内核前,将crc32c编译进内核应该就可以直接insmod sctp.ko了参考:/wenlifu71022/archive/2009/06/10/4256196.aspx linux设备驱动有两种加载方式insmod和modprobe,下面谈谈它们用法上的区别1、insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址。写法为: insmod drv.ko2. modprobe则可以一次将有依赖关系的驱动全部加载到内核。不加驱动的具体地址,但需要在安装文件系统时是按照make modues_install的方式安装驱动模块的。驱动被安装在/lib/modules/$(uname -r)/.下。写法为: modprob drv-modprobe 和insmod一样都是用来加载内核module的不过modprobe比较智能,它可以根据module的依赖性来自动为你加载;而insmod就做不到这点/future_fighter/archive/2009/02/04/3862795.aspx lsmod 功能:列出内核已载入模块的状态用法:lsmod描述: lsmod 以美观的方式列出/proc/modules的内容。 输出为: Module(模块名) Size(模块大小) Used by(被.使用) eg. ne2k_pci 8928 0 8390 9472 1 ne2k_pci 在/proc/modules中相应的是: (模块名,模块大小,被.使用,模块地址(猜的,以后确认) ne2k_pci 8928 0 - Live 0x3086400 8390 9472 1 ne2k_pci , Live 0xe086000 depmod 功能:分析可加载模块的依赖性,生成modules.dep文件和映射文件。用法:depmod -b basedir -e -F System.map -n -v version -A depmod -e -F System.map -n -v version filename.描述: Linux内核模块可以为其它模块提供提供服务(在代码中使用EXPORT_SYMBOL),这种服务被称作symbols。若第二个模块使用了这个symbol,则该模块很明显依赖于第一个模块。这些依赖关系是非常繁杂的。 depmod读取在/lib/modules/version 目录下的所有模块,并检查每个模块导出的symbol和需要的symbol,然后创建一个依赖关系列表。默认地,该列表写入到/lib/moudules /version目录下的modules.dep文件中。若命令中的filename有指定的话,则仅检查这些指定的模块(不是很有用)。 若命令中提供了version参数,则会使用version所指定的目录生成依赖,而不是当前内核的版本(uname -r 返回的)。 选项: -b basedir -basedir basedir 若你的模块并没有正确的在/lib/mdules/version下,可以指定目录生成依赖。 -e -errsyms 和-F选项一起使用,当一个模块需要的symbol在其它模块里面没有提供时,做出报告。正常情况下,模块没有提供的symbol都在内核中有提供。 -F -filesyms System.map 提供一个System.map文件(在内核编译时生成的)许-e选项报告出unresolved symbol。 -n -dry_run 将结果modules.dep和各种映射文件输出到标准输出(stdout),而不是写到模块目录下。 -A -quick 检查是否有模块比modues.dep中的模块新,若没有,则退出不重新生成文件。 modprobe 功能:Linux内核添加删除模块用法: modprobe -v -V -C config-file -n -i -q -o modulename modulename module parameters . modprobe -r -v -n -i modulename . modprobe -l -t dirname wildcard modprobe -c 描述: modprobe可智能地添加和删除Linux内核模块(为简便起见,模块名中_和-是一样的)。modprobe会查看模块目录/lib/modules/uname -r里面的所有模块和文件,除了可选的/etc/modprobe.conf配置文件和/etc/modprobe.d目录外。 modprobe需要一个最新的modules.dep文件,可以用depmod来生成。该文件列出了每一个模块需要的其他模块,modprobe使用这个去自动添加或删除模块的依赖。 选项: -v -verbose 显示程序在干什么,通常在出问题的情况下,modprobe才显示信息。 -C -config 重载(_,意思取C+的重载)默认配置文件(/etc/modprobe.conf或/etc/modprobe.d)。 -c -showconfig 输出配置文件并退出 -n -dry-run 可以和-v选项一起使用,调试非常有用 -i -ignore-install -ignore-remove 该选项会使得modprobe忽略配置文件中的,在命令行上输入的install和remove命令。 -q -quiet 一般modprobe删除或插入一个模块时,若没有找到会提示错误。使用该选项,会忽略指定的模块,并不提示任何错误信息。 -r -remove 该选项会导致modprobe去删除,而不是插入一个模块。通常没有没有理由去删除内核模块,除非是一些有bug的模块。你的内核也不一定支持模块的卸载。 -V -verssion 版本信息 -f -force 和同时使用-force-vermagic ,-force-modversion一样。使用该选项是比较危险的。 -l -list 列出所有模块 -a -all 插入所有命令行中的模块 -t -type 强制 -l 显示dirname中的模块 -s -syslog 错误信息写入syslog modinfo 功能:显示内核模块的信息用法: modinfo -0 -F field modulename | filename . modinfo -V modinfo -h描述: modinfo列出Linux内核中命令行指定的模块的信息。若模块名不是一个文件名,则会在/lib/modules/version 目录中搜索,就像modprobe一样。 modinfo默认情况下,为了便于阅读,以下面的格式列出模块的每个属性:fieldname : value。 选项: -V -version 版本 -F -field 仅在一行上显示field值,这对于脚本较为有用。常用的field有:author, description, licence, param, depends, alias, filename。 -0 -NULL 使用0字符分隔field值,而不是一个新行。对脚本比较有用。 -a -d -l -p -n 这些分别是author, description, license, param ,filename的简短形式。 insmod 功能:向Linux内核中插入一个模块用法:insmod filename modue options .描述: insmod是一个向内核插入模块的小程序:若文件名是一个连字符-,模块从标准输入输入。大多数用户使用modprobe,因为它比较智能化。 rmmod功能:删除内核中的一模块用法:rmmod -f -w -s -v modulename 描述: rmmod是一个可以从内核中删除模块的小程序,大多数用户使用modprobe -r去删除模块。 选项: -v -verbose 显示程序正在做些什么,一般只显示执行时的错误信息。 -f -force 该选项是非常危险:除非编译内核时,CONFIG_MODULE_FORCE_UNLOAD被设置该命令才有效果,否则没效果。用该选项可以删除正在被使用的模块,设计为不能删除的模块,或者标记为unsafe的模块。 -w -wait 通常,rmmod拒绝删除正在被使用的模块。使用该选项后,指定的模块会被孤立起来,直到不被使用。 -s -syslog 将错误信息写入syslog,而不是标准错误(stderr)。 -V -version 版本信息lsmod功能:列出内核已载入模块的状态用法:lsmod描述: lsmod 以美观的方式列出/proc/modules的内容。 输出为: Module(模块名) Size(模块大小) Used by(被.使用) eg. ne2k_pci 8928 0 8390 9472 1 ne2k_pci 在/proc/modules中相应的是: (模块名,模块大小,被.使用,模块地址(猜的,以后确认) ne2k_pci 8928 0 - Live 0x3086400 8390 9472 1 ne2k_pci , Live 0xe086000 depmod 功能:分析可加载模块的依赖性,生成modules.dep文件和映射文件。用法:depmod -b basedir -e -F System.map -n -v version -A depmod -e -F System.map -n -v version filename.描述: Linux内核模块可以为其它模块提供提供服务(在代码中使用EXPORT_SYMBOL),这种服务被称作symbols。若第二个模块使用了这个symbol,则该模块很明显依赖于第一个模块。这些依赖关系是非常繁杂的。 depmod读取在/lib/modules/version 目录下的所有模块,并检查每个模块导出的symbol和需要的symbol,然后创建一个依赖关系列表。默认地,该列表写入到/lib/moudules /version目录下的modules.dep文件中。若命令中的filename有指定的话,则仅检查这些指定的模块(不是很有用)。 若命令中提供了version参数,则会使用version所指定的目录生成依赖,而不是当前内核的版本(uname -r 返回的)。 选项: -b basedir -basedir basedir 若你的模块并没有正确的在/lib/mdules/version下,可以指定目录生成依赖。 -e -errsyms 和-F选项一起使用,当一个模块需要的symbol在其它模块里面没有提供时,做出报告。正常情况下,模块没有提供的symbol都在内核中有提供。 -F -filesyms System.map 提供一个System.map文件(在内核编译时生成的)许-e选项报告出unresolved symbol。 -n -dry_run 将结果modules.dep和各种映射文件输出到标准输出(stdout),而不是写到模块目录下。 -A -quick 检查是否有模块比modues.dep中的模块新,若没有,则退出不重新生成文件。 modprobe 功能:Linux内核添加删除模块用法: modprobe -v -V -C config-file -n -i -q -o modulename modulename module parameters . modprobe -r -v -n -i modulename . modprobe -l -t dirname wildcard modprobe -c 描述: modprobe可智能地添加和删除Linux内核模块(为简便起见,模块名中_和-是一样的)。modprobe会查看模块目录/lib/modules/uname -r里面的所有模块和文件,除了可选的/etc/modprobe.conf配置文件和/etc/modprobe.d目录外。 modprobe需要一个最新的modules.dep文件,可以用depmod来生成。该文件列出了每一个模块需要的其他模块,modprobe使用这个去自动添加或删除模块的依赖。 选项: -v -verbose 显示程序在干什么,通常在出问题的情况下,modprobe才显示信息。 -C -config 重载(_,意思取C+的重载)默认配置文件(/etc/modprobe.conf或/etc/modprobe.d)。 -c -showconfig 输出配置文件并退出 -n -dry-run 可以和-v选项一起使用,调试非常有用 -i -ignore-install -ignore-remove 该选项会使得modprobe忽略配置文件中的,在命令行上输入的install和remove命令。 -q -quiet 一般modprobe删除或插入一个模块时,若没有找到会提示错误。使用该选项,会忽略指定的模块,并不提示任何错误信息。 -r -remove 该选项会导致modprobe去删除,而不是插入一个模块。通常没有没有理由去删除内核模块,除非是一些有bug的模块。你的内核也不一定支持模块的卸载。 -V -verssion 版本信息 -f -force 和同时使用-force-vermagic ,-force-modversion一样。使用该选项是比较危险的。 -l -list 列出所有模块 -a -all 插入所有命令行中的模块 -t -type 强制 -l 显示dirname中的模块 -s -syslog 错误信息写入syslog modinfo 功能:显示内核模块的信息用法: modinfo -0 -F field modulename | filename . modinfo -V modinfo -h描述: modinfo列出Linux内核中命令行指定的模块的信息。若模块名不是一个文件名,则会在/lib/modules/version 目录中搜索,就像modprobe一样。 modinfo默认情况下,为了便于阅读,以下面的格式列出模块的每个属性:fieldname : value。 选项: -V -version 版本 -F -field 仅在一行上显示field值,这对于脚本较为有用。常用的field有:author, description, licenc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025历年中招实验考试真题及答案
- 延乔中学分班考试试卷及答案
- 2025教育心理学考试真题及答案
- 重难点解析人教版八年级上册物理声现象《声音的产生与传播》难点解析试题(含答案解析)
- 翻译服务合作协议5篇
- 陕西二建安全b证考试真题及答案
- 解析卷人教版八年级上册物理《声现象》综合训练试题(含答案及解析)
- 考点攻克人教版八年级上册物理声现象《声音的产生与传播》同步训练练习题(含答案详解)
- 广东省建筑b证考试试题及答案
- 金沙二中招生考试题目及答案
- 装修工程标准化手册(图文)
- 第二课《做好课前准备》教学设计·2024-2025学年小学心理健康一年级上册 北师大版
- 酒驾满分考试题及答案
- 初中化学实验目录
- 2025年高校教师资格证考试高等教育心理学知识必考题库及答案(共160题)
- 公共危机管理(本)-第五次形成性考核-国开(BJ)-参考资料
- 广告设计师(三级)技能鉴定考试题库(浓缩300题)
- GB/T 36547-2024电化学储能电站接入电网技术规定
- GB/T 19342-2024手动牙刷一般要求和检测方法
- 处方管理办法培训课件
- 房地产销售岗位招聘笔试题及解答(某大型国企)2024年
评论
0/150
提交评论