8、Linux内核与内核模块

既然要处理内核模块,自然就得要了解内核提供的模块之间的相关性。基本上,内核模块的放置处是在/lib/modules/$(uname -r)/kernel,里面主要分成几个目录:

arch:与硬件平台有关的选项,例如CPU的等级等。

crypto:内核所支持的加密技术,例如md5或者是des等。

drivers:一些硬件的驱动程序,例如显卡、网卡、PCI相关硬件等。

fs:内核所支持的文件系统,例如vfat、reiserfs、nfs等。

lib:一些函数。

net:与网络有关的各项协议数据,还有防火墙模块(net/ipv4/netfilter/*)等。

sound:与音效有关的各项模块。

Linux Kernel2.6.X版本的内核模块扩展名一定是以“.ko”结尾的

① depmod

如果要我们一个一个去检查这些模块的主要信息,然后去定义出他们的依赖性,这样肯定不现实。

Liunx提供了一些模块的依赖性的解决方案,就是检查/lib/modules/$(uname -r)/modules.dep这个文件,那么如何创建这个文件?

#depmod [-Ane]

l 参数

不加任何参数,depmod会主动去分析目前内核的模块,并重新写入/lib/modules/$(uname -r)/modules.dep当中。

-A:查找比modules.dep文件中新的模块,如果找到新模块,才会更新。

-n:不写入modules.dep文件中,而是将结果输出到屏幕上。

-e:显示目前已加载的不可执行的模块名称。

② 查看内核模块

a.  lsmod

#lsmod

Module:模块名称;

Size:模块的大小;

Used by:此模块是否被其他模块所使用;

如上图所示,nf_nat_ipv4会被iptable_nat所使用,简单说,当你要加载iptable_nat模块时,需要先加载nf_nat_ipv4模块才可以。

b.  modinfo

查看模块信息

#modinfo [-adln] [module_name|filename]

参数:

-a:仅列出作者名称;

-d:仅列出该module的说明;

-l:仅列出该module的授权;

-n:仅列出该module的详细路径;

#modinfo -a e1000e

#modinfo -d e1000e

#modinfo -l e1000e

#modinfo -n e1000e

③ 内核模块的加载与删除

如果想自行加载内核模块,最简单的方法是使用modprobe命令,因为modprobe会主动去查找modules.dep的内容,首先会克服模块的依赖性,才决定需要加载的模块有哪些。

insmod则完全由用户自行加载一个完整文件名的模块,并不会主动分析模块依赖性。

a.  insmod

#insmod [/full/path/module_name] [parameters]

例如:

#insmod /lib/modules/$(uname -r)/kernel/fs/cifs/cifs.ko

#lsmod |grep cifs.ko

b.  rmmod

#rmmod [-fw] module_name

参数:

-f:强制将该模块删除,不论是否正被使用

-w:若该模块正被使用,则等待该模块被使用完毕后删除它

#rmmod cifs

c.  modprobe

#modprobe [-lcfr] module_name

参数:

-c:列出目前系统所有的模块

-l:列出目前在/lib/modules/$(uname -r)/kernel当中的所有模块完整文件

-f:强制加载该模块

-r:类似rmmod,删除某个模块

例子:

加载cifs模块

#modprobe cifs

 

删除cifs模块

#modprobe -r cifs

原文地址:http://blog.51cto.com/hostman/2095680

时间: 2024-10-17 00:14:25

8、Linux内核与内核模块的相关文章

Linux内核及内核模块

1.Linux的组成 由内核及相应的功能模块组成,内核/boot/vmlinuz-"内核版本号" 文件,模块文件在/lib/modules/版本号/目录下(为.ko的文件) 在/proc/sys/目录下可以修改文件来修改内核的参数(注意这些文件不能用vim打开要修改只能用重定向的方式) echo "www.luochen.com" > /proc/sys/kernel/hostname 也可以这样改 sysctl -w kernel.hostname=&quo

Linux内核分析(二)----内核模块简介|简单内核模块实现

Linux内核分析(二) 昨天我们开始了内核的分析,网上有很多人是用用源码直接分析,这样造成的问题是,大家觉得很枯燥很难理解,从某种意义上来说linux系统本身就是由一个个模块构成的,所以我会结合内核模块的设计,去分析内核,从而达到对linux内核的理解. 今天我们会分析到以下内容: 1.      Linux内核模块简介 2.      简单内核模块实现 l  Linux内核模块简介 1.       何为内核模块 在上一篇博文中我们先通过内核配置,在配置的过程中我们对内核的组件进行了选择(当

Linux 内核编程 or 内核模块编程的文件读写与信号传输问题

Linux内核编程时,内核代码执行只能直接访问内存上的数据,硬盘上的文件系统必须通过间接的方式才能被内核读写.一般内核操作文件读写的方式有三种:1.通过/proc/文件作为桥梁完成硬盘文件系统与内核的交互:2.通过ioctl方式实现交互:3.直接利用虚拟文件系统的函数vfs_read().vfs_write()读写文件.三种方式的具体实现方法网上有很多详细教程,可以参考.这里对三种方法做出比较. proc机制是一种很老的文件读写方式,通用性好,实现也算成熟,使用时需要自己实现内核上层的读写函数,

linux内核编译与开发

一.Linux内核简介linux kernel map: linux 系统体系结构: linux kernel体系结构: arm有7种工作模式,x86也实现了4个不同级别RING0-RING3,RING0级别最高, 这样linux用户代码运行在RING3下,内核运行在RING0,这样系统本身就得到了 充分的保护 用户空间(用户模式)转到内核空间(系统模式)方法: ·系统调用 ·硬件中断 linux kernel 体系结构: 虚拟文件系统VFS: VFS(虚拟文件系统)隐藏各种文件系统的具体细节,

Linux内核设计基础(十)之内核开发与总结

(1)Linux层次结构: (2)Linux内核组成: 主要由进程调度(SCHED).内存管理(MM).虚拟文件系统(VFS).网络接口(NET)和进程间通信(IPC)等5个子系统组成. (3)与Unix的差异: Linux支持动态加载内核模块 支持对称多处理(SMP)机制 Linux内核可以抢占 Linux内核并不区分线程和其他的一般进程 Linux提供具有设备类的面向对象的设备模型.热插拔事件,以及用户空间的设备文件系统(sysfs) (4)内核开发的特点: 内核编程时既不能访问C库也不能访

浅谈 Linux 内核开发之网络设备驱动

网络设备介绍 网络设备是计算机体系结构中必不可少的一部分,处理器如果想与外界通信,通常都会选择网络设备作为通信接口.众所周知,在 OSI(Open Systems Interconnection,开放网际互连)中,网络被划分为七个层次,从下到上分别是物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.我们所讲的网络设备也包括两个层次,一层叫做 MAC(Media Access Control)层,对应于 OSI 的数据链路层:另一层叫做 PHY(Physical Layer)层,对应于物

Linux Kernel - Debug Guide (Linux内核调试指南 )

http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环

Linux内核学习总结

李泽源 原创作品 转载请注明出处 <Linux内核分析>MOOC课程:http://mooc.study.163.com/course/USTC-1000029000 [Linux内核学习总结] 幸福来得很突然,这门课就快结束了…… 是时候,总结下这段时间的坚持了,也给同样对Linux内核有兴趣的你一个指南. 在这门课的学习过程中,按照老师的要求,每次课后都写一篇博文,这是一个很好的学习方式.每当写这些文章的时候,总是要多看几遍视频,再查查相关的资料,才能勉强凑成一个完整的文档:同时也把自己学

linux及安全《Linux内核设计与实现》第一章——20135227黄晓妍

<linux内核设计与实现>第一章 第一章Linux内核简介: 1.3操作系统和内核简介 操作系统:系统包含了操作系统和所有运行在它之上的应用程序.操作系统是指整个在系统中负责完成最基本功能和系统管理的那些部分.这些部分包括内核.设备驱动程序.启动应到程序.命令行shell或者其他种类的用户界面.基本的文件管理系统工具. 内核:如果说用户界面是操作系统的外在表像,那么内核就是操作系统的内在核心. 内核空间:系统态和保护起来的内存空间. 内核的组成: 1.中断服务程序(响应中断) 2.调度程序(