Linux内核模块编程——Hello World
一、实验环境:
环境配置:VMware® Workstation 15 Pro、ubuntu Desktop 18.10、内存 2GB、处理器数量2、每个处理器内核数量1、硬盘大小30GB……还有一个就是用的咱Xidian的源(因为校内不需要流量啊,而且还很快!)
二、知识储备:
1)什么是内核模块编程?
你说你学习Linux内核模块编程,你最起码得知道什么是内核模块编程这个概念吧,那我就简单的记录一下吧!
1)、内核模块是具有独立功能的程序。它可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行。
2)、模块编程和内核版本密切相连,因为不同的内核版本中某些函数的函数名会有变化。因此模块编程也可以说是内核编程。
3)、特点:
模块本身不被编译进内核映像,从而控制了内核的大小; 模块一旦被加载,就和内核中的其他部分完全一样。
2)内核模块编程和用户层编程有什么区别呢?
我在网上找了很多,看了一下,咱们先了解这些,看图一!
看了上边的表,咱们应该知道本次实验都需要会哪些技能了吧!编程能力咱就不说了,你得会写Makefile、对linux这基本命令得了解、内核函数你得了解、咋编程你得会吧。相关知识我就不拎出来一一介绍了,需要学习的自己学习吧,那下边就放出我的实验报告吧!
三、实验过程
A)前期工作:
第一个实验嘛,那肯定是Hello World!首先做一些前期工作吧,把目录建好之类的,不然太乱了。还是截图容易说明问题!
B)代码编写
其中module1.c中的文件为下面内容(代码还是自己敲敲的为好,就不放源码):
Makefile中的内容如下,中$(MAKE)前边的是Tab键,并不是四个空格(这在Makefile编写相关知识中都有,这里重新强调一下!)如果打成空格vim会自动红色提醒的!
看上边三张图的内容是不是就跟第一张图中说的对上了!
C)运行测试
输入make命令之后我们会发现里边出现一个warning语句,大概意思是说项目里边缺少MODULE_LICENSE(),这个不会影响,只是放出警告!强迫症可以在最后添上的,支持的许可证包括GPL、GPL v2、Dual BSD/GPL、 Dual MPL/GPL、 Proprietary
通过
insmod /module1.ko可以加载它,
‘’
通过
rmmod module1可以卸载它,
dmesg查看结果
四)总结
到这里我们就成功完成了,Hello world的内核模块编程了,够简单的吧,还是动手实践一下吧!
本来还说把整个实验报告贴上来,想想还是算了吧!
或者改天有时间再贴吧!
- linux内核模块编程----ubuntu下我的第一个Hello World驱动
- Linux内核模块编程入门——Hello World
- Linux Socket编程实例(一个Hello World程序) 选择自 shaohui 的 Blog
- Linux内核模块编程-系统调用拦截
- Linux Socket编程实例(一个Hello World程序)
- linux 2.6内核编程-Hello world程序
- Linux Socket编程实例(一个Hello World程序)
- linux 驱动编程入门----hello world ----Makefile ---及简单的调试
- Linux内核模块编程
- Linux内核模块编程
- Linux内核模块编程与内核模块LICENSE -《详解(第3版)》预读
- C# 编程指南(1):语言部分:Hello World
- 手工编程:hello world
- Python:pygame游戏编程之旅一(Hello World)
- 80x86汇编语言编程:输入0到9,输出hello world
- linux内核模块开发之Hello world
- 内核编程的hello world!
- Linux内核模块的概念和基本的编程方法
- 经典的第一个linux内核模块编程----hello,Kernel!
- Linux内核模块编程引导