专题5-内核模块开发1

内核模块基础

1、什么是内核模块

内核模块特点:

模块本身并不被编译进内核文件(zImage或bzImage)。

可以根据需求,在内核运行期间动态的安装或卸载

2、安装与卸载

a、安装insmod

eg:insmod /home/dnw_usb.ko

b、卸载rmmod

eg:rmmod dnw_usb

c、查看lsmod(系统所有内核模块)

eg:lsmod

在linux中,驱动模块大多以内核模块存在的。

时间: 2024-11-01 09:01:17

专题5-内核模块开发1的相关文章

Linux内核模块开发基础【转】

本文转载自:http://blog.csdn.net/coding__madman/article/details/51298180 1. 什么是内核模块 内核模块具有以下两个特点:1. 模块本身并不被编译进内核文件(zImage或bzImage),可以根据需求,在内核运行期间动态的安装或卸载. 2. 为什么需要内核模块 原因:Linux内核的整体结构非常庞大,其包含的组件也非常多,如何使用这些组件呢,方法1:把所有的组件都编译键内核,即:zImage或bzImage,但这样会导致一个问题:占用

linux内核模块开发基础

1. 什么是内核模块 内核模块具有以下两个特点:1. 模块本身并不被编译进内核文件(zImage或bzImage),可以根据需求,在内核运行期间动态的安装或卸载. 2. 为什么需要内核模块 原因:Linux内核的整体结构非常庞大,其包含的组件也非常多,如何使用这些组件呢,方法1:把所有的组件都编译键内核,即:zImage或bzImage,但这样会导致一个问题:占用内存过多.然后内核模块就诞生了,可以不用被编译进内核但是可以动态的添加到正在运行的内核中! 3. 如何使用内核模块 1> 安装模块 i

linux内核模块开发

一,内核模块功能: 让内核文件(zImage或bzImage)本身并不包含某组件,而是在该 组件需要被使用的时候,动态地添加到正在运行的内核中 二,内核模块安装和卸载加载:insmod (insmod hello.ko)卸载:rmmod (rmmod hello)查看:lsmod加载:modprobe (modprobe hello)modprobe如同insmod,也是加载一个模块到内核.它的不同之处在于它会根据文件/lib/modules/<$version>/modules.dep来查看

5、Linux内核模块开发

Linux的模块驱动 接下来写个最简单的驱动程序,就像程序语言的hello world程序. 首先是:hello.c的代码: 这是个最简单的驱动程序.就是打印hello的信息.驱动程序和我们的程序语言结果有点不大一样.驱动模块的入口是倒数第二行的module_init()的函数.驱动模块的出口是module_exit()的函数. 3.接着是makfile文件: 这也是一个很简单的Makefile文件了.Obj-m后面跟的是我们的最终目标依赖的文件hello.o.第三行的KDIR是我们编译进的内核

linux、内核源码、内核编译与配置、内核模块开发、内核启动流程(转)

linux是如何组成的?答:linux是由用户空间和内核空间组成的为什么要划分用户空间和内核空间?答:有关CPU体系结构,各处理器可以有多种模式,而LInux这样的划分是考虑到系统的安全性,比如X86可以有4种模式RING0~RING3  RING0特权模式给LINUX内核空间RING3给用户空间linux内核是如何组成的?答:linux内核由SCI(System Call Interface)系统调用接口.PM(Process Management)进程管理.MM(Memory Managem

linux内核模块开发之内核兼容

因为linux内核变化非常快,每个小版本之间数据结构.接口都有可能发生变化,因此为我们写内核模块的兼容性带来了一些问题,经常在某版本上能正常编译的模块,换另一个模块就编译失败了,这时候我们就需要做内核版本兼容了,解决方法如下: 在内核时面有一个linux/version.h头文件,里面有两个宏LINUX_VERSION_CODE和KERNEL_VERSION,可利用这两个宏来协助完成兼容处理,例子代码如下: static struct nf_hook_ops mrs_ops_forward =

【整理】--Linux简单内核模块开发

1.linux 内核模块不被编译到内核文件(zImage,bzImage), 而是在运行期间动态的安装和卸载 2.内核模块包括一下几部分:主体部分设计,编译内核模块,安装卸载NHMK,可选项使用(模块申明,MK参数,符号输出) 3.简单例子: hello.c: #include<linux/init.h>#include<linux/module.h>#include<linux/kernel.h> MODULE_LICENSE("Dual BSD/GPL&q

freeswitch 内核模块开发

我建了一个 Freeswitch 内核研究 交流群, 45211986, 欢迎加入, 另外,提供基于SIP的通信服务器及客户端解决方案. 这里以模块 helloworld 为例. 1. 创建模块目录  freeswitch/src/mod/applications/mod_helloworld 2. 把模块名放在 freeswitch/modules.conf文件中,make时 根据此文件选择编译哪些模块并生成相应模块的makefile文件 3. 如果你的模块以依赖第三方库,则需要在makefi

linux内核编译与开发

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

Linux内核模块简介

1. 宏内核与微内核 内核(Kernel)在计算机科学中是操作系统最基本的部分,主要负责管理系统资源.中文版维基百科上将内核分为四大类:单内核(宏内核):微内核:混合内核:外内核. 混合内核实质上也是微内核,而外内核是一种比较极端的设计方法,目前还处于研究阶段,所以我们就着重讨论宏内核与微内核两种内核. 简单的介绍,宏内核(Monolithickernel)是将内核从整体上作为一个大过程来实现,所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效.微内核(Microkernel)功