- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内核编程ppt课件
Linux内核编程 四川大学计算机学院网络安全实验室 陈家军 讲座内容 Linux内核简介 Linux内核编程基础 Linux内核模块编程 关于linux内核学习 Linux内核发行版简史 Linux内核树 2.6.x内核 基础稳定版本 2.6.x.y内核 稳定内核,包含了对一个给定的2.6.x内核的一些重要问题的修复 -rc内核 候选的发布内核,具有不稳定性 2.6.x -git 内核 Linus维护的内核树的每日快照,它们比-rc内核更具实验性质。 2.6.x -mm 内核 这些是Andrew Morton发布的实验性质的内核,包含了新特性和实验性补丁 GNU/Linux 操作系统的基本体系结构 Linux 内核的主要子系统 Linux内核配置和编译 内核配置 make config(基于文本的命令行配置工具) make menuconfig (基于ncurse库编制的图形配置工具) make xconfig (基于X11的图形配置工具) make gconfig (基于gtk+的图形配置工具) make defconfig(为你的体系结构创建一个默认配置) make 编译内核,生成内核映像文件、内核模块 make install 安装内核映像 make modules_install 安装内核模块 内核开发的特点 没有libc库 没有内存保护机制 小而固定的栈 同步和并发 不要轻易在内核中使用浮点数 Linux内核模块编程 Linux内核模块管理工具 insmod 安装内核模块 rmmod 卸载内核模块 depmod 创建模块依赖文件 modprobe 提供依赖性分析,错误检查等功能和选项 depmod xxx.ko #为某个创建依赖文件 modprobe xxx.ko #加载某个模块 modprobe -r xxx.ko #卸载某个模块 lsmod 显示当前加载的所有模块,相当cat/proc/modules modinfo 查看内核模块信息 编程环境准备 从网站上获得一个“主线”内核,在自己的系统中配置并构造好内核树。因为2.6内核的模块要和内核源代码树中的目标文件链接。 简单说,你必须先配置过内核,执行过 make,然后才能 make 你自己的模块。要运行编译出的模块,最好安装编译后的内核( make install 、 make modules_install )。 也可以安装Linux发行版的内核开发包,需要你的机器上已经安装了kernel-devel这个包,也就提供编译模块所必须的东西:内核的头文件、目标文件和一些Makefile。 发行版厂商提供的内核通常打了许多补丁,从而和主线内核存在一些差异。 Linux内核编程实例1 内核模块Makefile make -C $(KDIR) M=$(shell pwd) clean 删除所有编译生成文件 Linux内核编程实例2 相应的Makefile Linux内核编程实例3 内核模块参数 可以在系统启动或模块装载时在指定参数值,这些参数属于全局变量。 定义一个模块参数可通过宏module_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是一个补丁(已集成到新版本的内核中。在Kernel hacking里,需要在编译内核时选上)。它可以让我们在远端主机上通过串口利用gdb的所有功能对内核进行调试。您可以接着深入到内核中、设置断点、检查数据等其它操作(类似于在应用程序上使用 gdb 的方式)。 kdb内核调试器 kdb是kgdb的一种替代品,这个补丁对内核源代码进行了很多修改,是调试在本地主机上就可以进行。 Kernel panic 关于Linux内核学习 Linus Torvalds的回答过类似的问题:你必须使用过Linux。(动手编译内核) 至少要对内核有一个大概了了解。《Linux内核设计与实现》,英文名Linux Kernel Development(LKD),此书是当
文档评论(0)