作者:嗯啊发送到法国_574 | 来源:互联网 | 2023-08-18 21:49
1、insmod命令在Linux系统下,insmod命令用于将给定的模块加载到内核中去,Linux系统有许多功能是通过模块的方式,在需要时才载入kernel,这样做可以使kerne
1、insmod命令
在Linux系统下,insmod命令用于将给定的模块加载到内核中去,Linux系统有许多功能是通过模块的方式,在需要时才载入kernel,这样做可以使kernel较为精简,进而提高效率,这类可载入的模块,通常是设备驱动程序。
(1)命令语法
(2)常用选项说明
-f:不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入。
-k:将模块设置为自动卸载。
-m:输出模块的载入信息。
-o<模块名称>:指定模块的名称,可使用模块文件的文件名。
-p:测试模块是否能正确载入到kernel。
-s:将所有信息记录在系统记录文件中。
-v:执行时显示详细的信息。
-x:不要汇出模块的外部符号。
-X:汇出模块所有的外部符号
(3)参数
内核模块:指定要加载的内核模块文件
(4)实例
加载一个简单的hello.ko内核模块,并查看加载结果:
# insmod hello.ko
# lsmod | grep “hello”
运行结果如下所示:
![技术分享图片](https://img7.php1.cn/3cdc5/c7bc/696/7d61045dba1a4e50.jpeg)
2、rmmod命令
在Linux系统下,rmmod命令用于从当前运行的内核中移除指定的内核模块,执行rmmod命令,可删除不需要的模块。
(1)命令语法
(2)常用选项说明
-v:显示指令执行的详细信息。
-f:强制移除模块,该选项比较危险。
-w:等待着,直到模块能够被移除时再移除模块。
-s:向系统日志(syslog)发送错误信息。
(3)参数
模块名称:要移除的模块的名称
(4)实例
将hello内核模块进行移除:
# lsmod | grep “hello”
# rmmod hello
# lsmod | grep “hello”
运行结果如下所示:
![技术分享图片](https://img7.php1.cn/3cdc5/c7bc/696/093ceb2c19709e32.jpeg)
3、lsmod命令
在Linux系统下,lsmod命令用于显示已经加载到内核中的模块的状态信息,运行lsmod命令后会列出所有已经载入系统的模块。
(1)语法
(2)实例
查看当前系统已经载入的模块:
运行结果如下:
![技术分享图片](https://img7.php1.cn/3cdc5/c7bc/696/913a1ccf8e25a7e2.jpeg)
在上面显示的结果中:
第一列:表示模块的名称;
第二列:表示模块的大小;
第三列:表示依赖模块的个数;
第四列:表示依赖模块的内容。
4、modinfo命令
在Linux系统下,可以使用modinfo命令显示给定模块的详细信息。
(1)语法
(2)常用选项说明
-a:显示模块的作者。
-d:显示模块的描述信息。
-l:显示模块的许可证信息。
-p:显示模块的参数信息。
-n:显示模块对应的文字信息。
(3)参数
模块名:要显示详细信息的模块名称。
(4)实例
显示hello.ko模块的信息:
运行结果如下所示:
![技术分享图片](https://img7.php1.cn/3cdc5/c7bc/696/c4e73d015bb0a8e9.jpeg)
4、modprobe命令
Linux系统下,modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。
(1)语法
(2)常用选项说明
-a或--all:载入全部的模块。
-c或--show-conf:显示所有模块的设置信息。
-d或--debug:使用排错模式。
-r或--remove:当模块闲置不用时,即自动卸载模块。
-v或--verbose:执行时显示详细信息。
-V或--version:显示版本信息。
-help:显示命令帮助信息。
(3)参数
模块名:要加载或移除的模块名称。
(4)实例
加载hello.ko模块:
先将要加载的模块拷贝到/lib/modules/“uname -r”目录下,uname –r表示内核版本号
# cp hello.ko /lib/modules/“uname -r”
# depmod
# modprobe hello.ko
# lsmod | grep “hello”
# modprobe -r hello
# lsmod | grep hello
运行结果如下所示:
![技术分享图片](https://img7.php1.cn/3cdc5/c7bc/696/92730d63844df8a8.jpeg)