收藏 分享(赏)

内核编程ppt课件.ppt

上传人:微传9988 文档编号:2131730 上传时间:2018-09-01 格式:PPT 页数:28 大小:461KB
下载 相关 举报
内核编程ppt课件.ppt_第1页
第1页 / 共28页
内核编程ppt课件.ppt_第2页
第2页 / 共28页
内核编程ppt课件.ppt_第3页
第3页 / 共28页
内核编程ppt课件.ppt_第4页
第4页 / 共28页
内核编程ppt课件.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、Linux内核编程,四川大学计算机学院网络安全实验室 陈家军,讲座内容,Linux内核简介 Linux内核编程基础 Linux内核模块编程 关于linux内核学习,Linux内核发行版简史,2.6 内核的发布已经持续了很长时间,那么什么时候将会推出 2.7 ?,目前,Linux内核的源代码数量已经超过1000万行,上千人参与开发,每23个月发布一个版本。,Linux内核树,2.6.x内核基础稳定版本 2.6.x.y内核稳定内核,包含了对一个给定的2.6.x内核的一些重要问题的修复 -rc内核候选的发布内核,具有不稳定性,2.6.x -git 内核Linus维护的内核树的每日快照,它们比-rc内

2、核更具实验性质。 2.6.x -mm 内核这些是Andrew Morton发布的实验性质的内核,包含了新特性和实验性补丁,GNU/Linux 操作系统的基本体系结构,最上面是用户(或应用程序)空间。这是用户应用程序执行的地方。用户空间之下是内核空间,Linux 内核正是位于这里。,Linux 内核的主要子系统,进程管理、内存管理、文件系统、网络协议栈、设备驱动程序、系统调用接口和依赖体系结构的代码,Linux内核配置和编译,内核配置 make config(基于文本的命令行配置工具) make menuconfig (基于ncurse库编制的图形配置工具) make xconfig (基于X1

3、1的图形配置工具) make gconfig (基于gtk+的图形配置工具)make defconfig(为你的体系结构创建一个默认配置),make编译内核,生成内核映像文件、内核模块 make install安装内核映像 make modules_install安装内核模块,内核开发的特点,没有libc库 没有内存保护机制 小而固定的栈 同步和并发 不要轻易在内核中使用浮点数,Linux内核模块编程,Linux内核的模块机制允许内核在运行时动态地载入和删除内核代码。这样基本内核镜像可以尽可能的小。也给我们编写内核程序提供方便,我不需要把自己编写的内核程序编译进内核,不用重启机器,需要的时候加

4、载相应的模块,不需要时卸载。,Linux内核模块管理工具,insmod 安装内核模块 rmmod 卸载内核模块 depmod 创建模块依赖文件 modprobe 提供依赖性分析,错误检查等功能和选项depmod xxx.ko #为某个创建依赖文件modprobe xxx.ko #加载某个模块modprobe -r xxx.ko #卸载某个模块 lsmod 显示当前加载的所有模块,相当cat/proc/modules modinfo 查看内核模块信息,编程环境准备,从www.kernel.org网站上获得一个“主线”内核,在自己的系统中配置并构造好内核树。因为2.6内核的模块要和内核源代码树中的

5、目标文件链接。 简单说,你必须先配置过内核,执行过 make,然后才能 make 你自己的模块。要运行编译出的模块,最好安装编译后的内核( make install 、 make modules_install )。,也可以安装Linux发行版的内核开发包,需要你的机器上已经安装了kernel-devel这个包,也就提供编译模块所必须的东西:内核的头文件、目标文件和一些Makefile。 发行版厂商提供的内核通常打了许多补丁,从而和主线内核存在一些差异。,Linux内核编程实例1,内核模块Makefile,obj-m 表明生成的是外部模块 make -C $(KDIR) M=$(shell p

6、wd) modules该命令首先改变目录到-C选项指定的位置(即内核源代码目录),其中保存有内核顶层Makefile。M=选项让该Makefile在构造modules目标前返回到模块源代码目录。 Modules目标指向obj-m变量中设定的模块。,make -C $(KDIR) M=$(shell pwd) clean删除所有编译生成文件,实例1模块运行结果,Linux内核编程实例2,hello_load.c,hello_unload.c,相应的Makefile,Linux内核编程实例3,内核模块参数,可以在系统启动或模块装载时在指定参数值,这些参数属于全局变量。 定义一个模块参数可通过宏mo

7、dule_param()完成module_param(name, type, perm)name: 变量的名称type: 变量的类型perm: sysfs文件系统下的对应文件权限(0则表示禁止所有的sysfs项),实例3 运行截图,Linux内核调试方法,Oops和panic企业版的linux厂商一般将他们的内核定制为发生一个oops是就使内核崩溃(panic)。 oops(慌张)消息包含系统错误的细节,如 CPU 寄存器的内容。在 Linux 中,调试系统崩溃的传统方法是分析在发生崩溃时发送到系统控制台的 oops 消息。 kgdb内核调试器kgdb是一个补丁(已集成到新版本的内核中。在Ke

8、rnel hacking里,需要在编译内核时选上)。它可以让我们在远端主机上通过串口利用gdb的所有功能对内核进行调试。您可以接着深入到内核中、设置断点、检查数据等其它操作(类似于在应用程序上使用 gdb 的方式)。 kdb内核调试器kdb是kgdb的一种替代品,这个补丁对内核源代码进行了很多修改,是调试在本地主机上就可以进行。,其实,Linus不支持在内核中内置调试器。他担心这些调试器会导致一些不良的修改。,Kernel panic,关于Linux内核学习,Linus Torvalds的回答过类似的问题:你必须使用过Linux。(动手编译内核) 至少要对内核有一个大概了了解。Linux内核设

9、计与实现,英文名Linux Kernel Development(LKD),此书是当今最佳的入门图书。 带着问题去试图阅读内核源代码。,浏览内核源代码,在Windows下,用Source Insight,它可以很方便的在代码之间进行关联阅读。 在Linux,可使用 vim+cscope+ctags 浏览内核源码,还可用Source Navigator等 lxr(Linux Cross Reference) http:/lxr.linux.no/,参考资料,网络资源http:/www.kernel.org/http:/ http:/kerneltrap.org推荐书籍Linux内核设计与实现深入理解Linux内核Linux设备驱动程序,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报