2.6.28内核中加载sctp模块的问题
一份不太准确的SCTP源码分析

一份不太准确的SCTP源码分析SCTP(流控制传输协议)是一种面向消息的传输协议,被设计用于在IP网络上提供可靠的、有序的、多路复用的传输。
SCTP具有许多优点,如抗拒拒绝服务攻击、支持多流、多宿主等。
本文将对SCTP的源代码进行分析,以了解其实现细节。
SCTP的源代码主要由C语言编写,其中的主要文件是sctp.h和sctp_pcb.c。
sctp.h文件包含了SCTP的数据结构和函数声明,而sctp_pcb.c文件则定义了SCTP的协议控制块(PCB)。
SCTP的核心数据结构是sctp_pcb结构体,它包含了与SCTP会话相关的信息,如本地地址、远程地址、SCTP状态等。
sctp_pcb.c文件定义了创建、管理和销毁sctp_pcb的函数。
在初始化过程中,会调用sctp_pcb_init函数来初始化sctp_pcb结构体,并将其添加到全局的sctp_pcb链表中。
SCTP的通信是通过SCTP的多个传输流来实现的,每个传输流都有自己的序列号和传输控制信息。
在sctp_pcb结构体中,定义了sctp_tcb_head链表来存储所有的传输流。
当收到一个新的传输流请求时,会调用sctp_do_sm函数创建一个新的传输流,并添加到sctp_tcb_head链表中。
SCTP的传输流是通过SCTP的数据块来传输数据的。
每个数据块都包含了数据的序列号、延迟确认等信息。
sctp_pcb.c文件定义了sctp_sendmsg和sctp_recvmsg函数来处理发送和接收数据块的过程。
在发送端,sctp_sendmsg函数负责将数据块封装成SCTP消息,并通过底层的传输协议发送出去;而在接收端,sctp_recvmsg函数负责解析SCTP消息,提取出数据块并交付给上层应用程序。
SCTP还包含了一些其他的功能和机制,如心跳检测、连接管理、流控制等。
在sctp_pcb.c文件中,定义了一系列函数来处理这些功能。
例如,sctp_send_hb函数用于发送心跳消息,sctp_del_assoc函数用于关闭一个SCTP会话等。
使用FTP时出现SOCKET ERROR的解决方法

NetFile (formerly FTP++ P2P)是一个多线程FTP客户端软件,凭借多线程功能,你甚至可以得到300%的速度提升,软件还支持搜索匿名FTP。
在使用的过程中遇到Socket ERROR错误怎么办,我们来看看下文中的解决方法。
用户在使用FTP上传文件时出现无法列表的情况,可能是由于选择在PASV方式下进行上传而导致的。
因此,请用户将上传方式改为PORT。
相同的软件,版本不同,设置方法也略有不同,因此需要根据实际情况进行设置(若取消pasv后还无法访问,请尝试将pasv前边的使用防火墙访问选中后再试一次)。
如图:CuteFTP 5.0XP 设置方法:1、选择编辑--;点击设置2、选择防火墙--;点击PASV模式去掉复选框中的打勾选项--;点击确定若连接后出现Data connection closed, transfer aborted ,请将启用防火墙访问选项选中CuteFtpPro3.X的设置方法:1、选择工具--;点击全局选项2、选择连接--;选择数据连接类型为:PORT--;点击确定其他FTP的设置方法:Cute FTP 3.5英文版:FTP—Settings—Options—Firewall,将PASV mode前复选框中的打勾去掉。
Cute FTP3.5中文版:FTP—设置—选项—防火墙,PASV方式(A)前复选框中的打勾去掉。
Leap FTP2.7.2:Sites—Site Manager—Advanced,将Use PASV mode前复选框中的打勾去掉。
socket异常解决方案

socket异常解决方案
《Socket异常解决方案》
在开发网络应用程序时,我们经常会遇到socket异常的问题。
socket异常可能会导致网络连接失败,数据传输中断,甚至导
致程序崩溃。
在面对这些问题时,我们需要及时解决并找出根本原因。
首先,我们需要了解造成socket异常的可能原因。
常见的原
因包括网络连接问题,服务器故障,数据包丢失等。
在了解了可能的原因后,就需要针对性地解决这些问题。
解决socket异常的方案可能包括以下几点:
1. 检查网络连接:确认网络连接是否正常,尝试其他网络环境,比如切换到4G网络或者使用VPN连接。
如果网络连接出现
问题,可能是导致socket异常的原因之一。
2. 重启服务器:如果是服务器端出现了问题,可以尝试重启服务器或者联系服务器管理员进行排查。
3. 检查数据包:数据包丢失可能会导致socket异常,对于这
种情况,我们可以使用数据包监控工具来检查数据传输情况,找出问题所在。
4. 异常处理:在程序中加入异常处理机制是很重要的,比如捕获socket异常并进行相应的处理,比如重新连接,重传数据
等。
5. 更新软件版本:有时socket异常可能是由于软件版本过低或者存在bug所致,及时更新软件版本可能解决这些问题。
总之,解决socket异常需要综合考虑网络环境、服务器端和客户端的问题,及时采取合理的措施来解决和避免出现异常情况。
希望上述的解决方案能帮助大家更好地解决socket异常的问题。
SCTP链路IP地址配置错误导致切换入失败

统计周边基站切换对发现与560481:1/2/3小区均出现切换全部失败的情况,且失败原因均为“系统内每相邻关系目标小区无响应原因导致的切换出准备失败”,此时怀疑基站560418存在问题导致周边基站向其切换出现失败,针对560418进行问题排查1、干扰排查:该站点无明显干扰情况;2、告警情况:该站点无故障告警发生;3、跟踪信令发现,切换失败原因为”S1切换源侧准备失败由于切换响应定时器超时”,切换源小区向MME发送handover required后,MME无响应超时导致切换失败;其中通过信令观察handover required是由ENB向MME,经由S1链路发送向MME后,MME没有通过S1向目标小区发出handover request,导致切换准备超时;通过参数核查发现560418的S1链路IP地址与周边基站明显不同,经核实为IP地址配置错误。
现网配置如图所示:处理步骤修改560418的MME IP地址如下图所示:观察指标恢复正常:小区名称邻区关系[LTE]系统内小区间切换出请求次数(小区对)[LTE]系统内小区间切换出成功次数(小区对)[LTE]系统内小区间切换出成功率(小区对)[LTE]系统内每相邻关系目标小区无响应原因导致的切换出准备失败次数[LTE]系统内每相邻关系目标小区回复切换准备失败消息导致切换出准备失败次数7WN-闽浙大酒店LZB-ZD-1 0:460:00:560481:11532 1492 97.39% 40 07WN-闽浙大酒店LZB-ZD-1 0:460:00:560481:2672 667 99.26% 5 07WN-闽浙大酒店LZB-ZD-1 0:460:00:560481:32644 2598 98.26% 46 0故障总结由于LTE是个全IP化网络,所有网元都是通过IP地址指示,配置错误会导致各种问题发生,在日常工作中要核查相关参数,保证参数配置的正确性。
SCTP协议详解

证实和重传是协议保证传输可靠性的策略,SCTP也一样。证实机制是SCTP保证传输可靠性的基石。避免拥塞沿袭了TCP的窗口机制,进行合适的流量控制。??
SCTP在将数据(数据分片或者未分片的用户数据报)发送给底层之前顺序地为之分配一个发送顺序号(TSN)。
TSN和SSN(流顺序号)是相互独立的,TSN用于保证传输的可靠性,SSN用于保证流消息的顺序传递。
图1偶联建立过程消息交互图
(1)端点A创建一个数据结构TCB(传输控制块)来描述即将发起的这个偶联(包含偶联的基本信息),然后向端点B发送INIT数据块。INIT数据块中主要包括如下参数:
启动标签(InitiateTag)对:端验证标签,如设为Tag_A。Tag_A是从1到4294967295
.
中的一个随机数。
.
现在SCTP层将超大用户数据分片打包,避免在IP层的多次分片、重组,可以减少IP层的数据负担。
在发送端,SCTP可以对大的用户数据报进行分片以确保SCTP数据报传递到低层时适合通路MTU(MaximumTransmissionUnit)。
在接收端,SCTP将分片重组为完整的用户数据报,然后传递给SCTP用户。
个SCTP偶联。正因为如此,在GTSOFTX3000中,偶联可以被看成是一条M2UA链路或者M3UA链路。
流(Stream)流是SCTP协议的一个特色术语。SCTP偶联中的流用来指示需要按顺序递交到高层协议的用户消息的序列,在同一个流中的消息需要按照其顺序进行递交。严格地说,“流”就是一个SCTP偶联中,从一个端点到另一个端点的单向逻辑通道。一个偶联是由多个单向的流组成的。各个流之间相对独立,使用流ID进行标识,每一个流可以单独发送数据而不受其他流的影响。
sctp协议

sctp协议SCTP协议。
SCTP(Stream Control Transmission Protocol)是一种传输层协议,最初由IETF (Internet Engineering Task Force)在RFC 2960中定义。
SCTP旨在提供一种可靠的、高性能的传输协议,以满足现代网络对数据传输的需求。
SCTP协议具有许多优点,使其在一些特定的应用场景中得到了广泛的应用。
首先,SCTP协议提供了多流(multi-streaming)和多路复用(multi-homing)的功能,这使得它在面对丢包和网络故障时能够更加灵活地处理数据传输。
其次,SCTP协议支持消息边界的特性,这意味着它能够保持消息的完整性,而不会像TCP那样出现粘包的问题。
此外,SCTP协议还具有内建的拥塞控制和流量控制机制,能够更好地适应网络的负载情况,从而提高了网络的稳定性和可靠性。
在实际的网络应用中,SCTP协议被广泛应用于一些对可靠性和性能要求较高的场景中。
例如,在VoIP(Voice over Internet Protocol)和视频会议等实时通信应用中,SCTP协议能够更好地保证数据的传输质量,降低了数据丢失和延迟,提高了用户体验。
此外,SCTP协议还被用于一些对安全性要求较高的应用中,例如在一些金融交易系统中,SCTP协议能够提供更加可靠和安全的数据传输机制,保护了数据的完整性和机密性。
然而,尽管SCTP协议具有许多优点,但它在实际应用中仍然面临一些挑战。
首先,由于SCTP协议相对较新,因此在一些旧的网络设备和系统中可能不太兼容,这就限制了SCTP协议的推广和应用。
其次,SCTP协议在一些特定的网络环境下可能会受到限制,例如在一些防火墙和网络设备中可能会对SCTP流量进行过滤和限制,这就会影响SCTP协议的正常使用。
总的来说,SCTP协议作为一种新型的传输协议,在网络领域具有广阔的应用前景。
随着网络技术的不断发展和完善,相信SCTP协议将会得到更广泛的应用,为网络通信提供更加可靠和高效的数据传输机制。
LINUX-2.6内核移植过程中常见问题及解决方法
LINUX-2.6内核移植过程中常见问题及解决方法1、内核启动后,出现如下提示后停住UNCOMPRESSING LINUX........................................................... DONE, BOOTING THE KERNEL一般情况下,这个时候内核已经启动了,只不过在控制台CONSOLE中没有打印信息而已。
所以问题主要锁定在串口这一块。
首先确定你的板子包括硬件都是没有问题的。
可以分以下几种情况,最常见的原因是在内核启动命令行这块CMDLINE,一般情况下LINUX-2.4内核中,CONSOLE=TTYS0,而LINUX-2.6内核则用CONSOLE=TTYSAC0。
还有一个原因,不多见,我当时用的是S3C2410的板子,BOOTLOADER用的是U-BOOT-1.0.0,内核移植的是LINUX-2.6.16,结果出现这个问题,在网上查了很多资料,最后找出来问题。
U-BOOT把S3C2410的时钟设置为202MHZ,而内核启动时使用的是200MHZ,修改U-BOOT中的MPLLCON:CLK_POWER->MPLLCON MPLLCON = 0X0005C040;//MPLL=200MHZ2、内核编译成功后,启动后出现如下提示后就停住了。
FREEING INIT MEMORY: 72KWARNING: UNABLE TO OPEN AN INITIAL CONSOLE.这个也是控制台CONSOLE的问题,LINUX-2.6.13以后的内核都支持DEVFS,而之后版本的内核就把DEVFS这块去掉了,虽然还能在内核源码中找到对应的源码,你也可以把它加进内核,但是也不是太好用。
2.6.13 后的版本改为支持UDEV了,UDEV这块我也没太弄懂,正在研究。
因此如果你是LINUX-2.6.13版本一下的内核,编译的时候在PSEUDO FILESYSTEMS添加DEV FILESYSTEM SURPPORT选项,也就是添加DEVFS的支持,如果LINUX-2.6.13之后的版本,你就看看你的ROOTFS下有没有/DEV/CONSOLE这个文件,没有的话,自己做一个就可以#MKNOD CONSOLE C 5 13、内核启动后,打印出一大堆提示信息UNABLE TO HANDLE KERNEL XXXX POINTER DEREFERENCE AT VIRTUAL ADDRESS XXXXXX ……R10: 00000000 R9 : 00000000 R8 : 00500001R7 : 00000001 R6 : C011AB50 R5 : C3726C00 R4 : C013E024R3 : 00000000 R2 : 00000000 R1 : 00000000 R0 : C3726C00….<0>KERNEL PANIC - NOT SYNCING: ATTEMPTED TO KILL INIT!这个提示是内核启动加载驱动时出错,那就只有找到出错的驱动,不加载它,如果必须要用这个驱动,只有自己修改源代码,一般问题都在对硬件的地址操作有问题。
模块加载失败请确保该二进制文件在指定的路径中找不到指定的模块(转载)
模块加载失败请确保该⼆进制⽂件在指定的路径中找不到指定的
模块(转载)
编写了⼀个桌⾯右键菜单的的Shell扩展,为了验证是否与其它系统是否兼容,故⽤虚拟机分别安装了Win7的64位和32位,结果注册时出现了以下问题。
这个错误和编译⼀个独⽴的exe在所有机器上运⾏是⼀个道理,虚拟机上没有对应的运⾏时库,所以注册失败,因此我们修改⼀下⼯程配置,三处编译时以静态⽅式链接。
第⼀、⼆处
第三处
这样设置后,重新编译,然后注册就成功了!
另外,根据测试发现在Win7中权限问题要看⽤户配置:
如上图,如果将⽤户账户控制改为从不通知,那么即使⼀般权限也可以运⾏成功;但如果改为其它模式,那就必须以管理员权限来运⾏命令了。
1.编译内核模块遇到的问题
1.编译内核模块遇到的问题问题:使⽤内核包编译驱动时常常提⽰如下:WARNING: Symbol version dump /usr/src/linux-2.6.26/Module.symversis missing; modules will have no dependencies and modversions.原因:通常头核⼼包中是没有Module.symvers这个⽂件的,要想获取这个⽂件只能到下载相同版本核⼼(2.6.26-1-686)的头⽂件,是下载不是apt-get install ,只有下载的头⽂件中才有这个Module.symvers。
把Module.symvers 复制到核⼼包中,然后执⾏如下步骤:make oldconfig && make prepare && make scripts。
然后重新编译驱动,将解决这个warning,同时也解决了版本不正确的问题我不知道有多少⼈会碰上这样的问题,反正google中我发现没有⼈能说明⽩这个问题ps:我遇到的问题是则是运⾏:make -C /usr/src/linux-2.6.34-12 SUBDIRS=$PWD modules出错如下:make: Entering directory `/usr/src/linux-2.6.34-12'ERROR: Kernel configuration is invalid.include/generated/autoconf.h or include/config/auto.conf are missing.Run 'make oldconfig && make prepare' on kernel src to fix it.WARNING: Symbol version dump /usr/src/linux-2.6.34-12/Module.symversis missing; modules will have no dependencies and modversions.scripts/Makefile.build:44: /usr/src/linux-2.6.34-12/PWD/Makefile: No such file or directorymake[1]: *** No rule to make target `/usr/src/linux-2.6.34-12/PWD/Makefile'. Stop.make: *** [_module_PWD] Error 2make: Leaving directory `/usr/src/linux-2.6.34-12'运⾏:make oldconfig && make prepare再次出错如下:make: Entering directory `/usr/src/linux-2.6.34-12'WARNING: Symbol version dump /usr/src/linux-2.6.34-12/Module.symversis missing; modules will have no dependencies and modversions.CC [M] /home/xxx/test/dr/drhello.oBuilding modules, stage 2.MODPOST 1 modules/bin/sh: scripts/mod/modpost: No such file or directorymake[1]: *** [__modpost] Error 127make: *** [modules] Error 2make: Leaving directory `/usr/src/linux-2.6.34-12'加上:make scripts可以了make: Entering directory `/usr/src/linux-2.6.34-12'WARNING: Symbol version dump /usr/src/linux-2.6.34-12/Module.symversis missing; modules will have no dependencies and modversions.CC [M] /home/xxx/test/dr/drhello.oBuilding modules, stage 2.MODPOST 1 modulesCC /home/test/dr/drhello.mod.oLD [M] /home/test/dr/drhello.komake: Leaving directory `/usr/src/linux-2.6.34-12'。
getstorestorage fail error code 28
getstorestorage fail error
code 28
getstorestorage fail error code 28这个错误提示表明在FastDFS 服务中遇到了“No space left on device”的错误。
这通常是因为存储空间不足导致的。
以下是几种可能的解决方案:
1. **检查存储空间**: 使用`df -h`命令检查服务器的磁盘空间使用情况,如果发现存储空间不足,可以考虑清理一些不必要的文件或者扩大存储空间。
2. **修改配置**: 在FastDFS的配置文件`tracker.conf`中,有一个参数叫做`reserved_storage_space`,这个参数表示预留的存储空间大小。
如果这个值设置的较小,当实际存储空间使用超过这个值时,就可能会出现这个错误。
你可以尝试增大这个值,然后重启FastDFS 服务。
3. **清理垃圾文件**: 如果服务器上存在大量的垃圾文件,可以尝试清理这些文件以释放存储空间。
4. **扩大存储空间**: 如果服务器本身的存储空间有限,可以考虑扩大存储空间,例如增加硬盘或者调整分区大小。
在执行以上操作时,请确保有足够的操作权限,并且要谨慎操作,以免影响服务器的正常运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 moduledmesg打印出的信息是: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.aspxlinux设备驱动有两种加载方式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.aspxlsmod功能:列出内核已载入模块的状态用法:lsmod描述:lsmod 以美观的方式列出/proc/modules的内容。
输出为:Module(模块名) Size(模块大小) Used by(被...使用)eg. ne2k_pci 8928 08390 9472 1 ne2k_pci在/proc/modules中相应的是:(模块名,模块大小,被...使用,模块地址(猜的,以后确认))ne2k_pci 8928 0 - Live 0x30864008390 9472 1 ne2k_pci , Live 0xe086000depmod功能:分析可加载模块的依赖性,生成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 错误信息写入syslogmodinfo功能:显示内核模块的信息用法:modinfo [ -0 ] [ -F field] [modulename | filename ... ]modinfo -Vmodinfo -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的内容。