实验一 添加最简单的Linux内核模块kello
实验一 添加最简单的Linux内核模块kello
目录
- 实验一 添加最简单的Linux内核模块kello
- 实验环境
- 一.实验目的
- 二.实验内容
- 三.实验步骤
- 四.实验总结
实验环境
操作系统版本:ubuntu-14.04.1-desktop-i386
下载连接:http://old-releases.ubuntu.com/releases/trusty/ubuntu-14.04.1-desktop-i386.iso
实验课件及源码:https://wwe.lanzouw.com/ilBQnyrwffi
一.实验目的
1、熟练掌握基本的Linux内核模块开发框架和编译方法
2、熟练掌握Linux内核模块添加流程
3、理解Linux内核模块代码中的一些常见宏和参数
4、掌握Linux内核模块程序和应用程序的差异
二.实验内容
1、从教材提供的电子资源中找到或者按教材提示自己编写简单的Linux内核模块kello.c及其对应的Makefile文件
2、编译、安装、删除该模块,查看该模块的安装位置、运行情况
三.实验步骤
1、编写kello.c代码:
#include <linux/module.h>
int kello_init( void )
{printk( "\n Hello, students from SDUST! This is in kernel space! \n" );return 0;
}
void kello_exit( void )
{printk( "\n Goodbye now... students from SDUST! \n" );}
//MODULE_AUTHOR("SDUSTOS <fangs99@126.com>");
MODULE_LICENSE("GPL");
module_init(kello_init);
module_exit(kello_exit);
2、编写Makefile代码:
ifneq ($(KERNELRELEASE),)
obj-m := kello.o
else
KDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modulesrm -r -f .tmp_versions *.mod.c .*.cmd *.o *.symvers
endif
3、LKM编译、添加、显示执行结果以及删除模块:
四.实验总结
通过这次实验使我基本掌握了基本的Linux内核模块开发框架和编译方法,学习了Makefile编译方法,掌握了Linux内核模块添加流程。理解了Linux内核模块代码中的一些常见宏和参数,掌握了Linux内核模块程序和应用程序的差异。
这次实验让我了解了LKM编译有两种方法,第一种是集成到内核,随内核一起编译,第二种是单独编译,动态插入内核。对于我们初学者来说,推荐使用第二种方式。把将开发的内核代码文件直接进行编译,然后使用命令动态插入内核或者从内核卸载。这样的优点是编译速度快;单独调试代码,方便调试修正代码。
这次实验让我有了Linux内核的第一次体验,在使用Windows系统时并没有机会体会到这一点。Linux的内核代码的编写规则和我平常的编写习惯也有些许的不同。我希望能通过操作系统实验,能够加强自己对操作系统的理解,助力自己以后的学习。
实验一 添加最简单的Linux内核模块kello相关推荐
- 添加简单的linux内核模块,操作系统实践 第12章-添加最简单的Linux内核模块.ppt
操作系统实践 第12章-添加最简单的Linux内核模块.ppt 文档编号:310662 文档页数:16 上传时间: 2018-07-21 文档级别: 文档类型:ppt 文档大小:2.00MB 第12章 ...
- 1添加最简单的Linux内核模块
1添加最简单的Linux内核模块 一.实验目的 1 熟练掌握基本的Linux内核模块开发框架和编译方法. 2 熟练掌握Linux内核模块添加流程. 3 理解Linux内核模块代码中的一些常见宏和参数. ...
- 实验六系统安装与简单配置(Linux基础教程 第2版)虚拟机环境下安装龙蜥操作系统(Anolis OS) 8.4
一.实验目的 1.安装虚拟机VMware-workstation-full-15.5.6-16341506. 2.在虚拟机环境下安装龙蜥操作系统(Anolis OS) 8.4. 3.简单配置Linux ...
- Linux内核模块的概念和基本的编程方法
Linux内核模块的概念和基本的编程方法 标签: Linux内核模块 2013-06-14 18:29 1864人阅读 评论(0) 收藏 举报 分类: linux内核(34) 版权声明:本文为博主原创 ...
- linux父子进程同步实验,Linux-父子进程的简单同步
int fork() 功能:创建一个子进程 返回值:0-创建成功,-1-创建进程失败,>0-创建进程成功,返回返回子进程id int wait(int * status) 功能:将调用的进程挂起 ...
- linux内核模块实验,linux内核模块实验(2学时)
第一个内核模块实验 一:预习要求: (1 )做本实验之前,请复习相关内核模块知识. (2 )请了解内核模块的编写.编译及安装与卸载方法. (3 )请学习内核打印函数printk() 的用法. (4 ) ...
- linux内核模块实验,linux内核模块实验(2学时).doc
第一个内核模块实验 一: 预习要求: ( 1 ) 做本实验之前,请复习相关内核模块知识. ( 2 ) 请了解内核模块的编写.编译及安装与卸载方法. ( 3 ) 请学习内核打印函数 printk() 的 ...
- linux 删除模块命令,Linux系统中的Modprobe命令:添加和删除Linux内核模块的方法
在本文中,我们将说明如何使用modprobe命令在Linux内核中添加和删除Linux内核模块.modprobe是kmod的一部分,kmod是一种二进制文件,可实现用于管理Linux内核模块的多个程序 ...
- 杭电操作系统实验二 --- Linux 内核模块编程(arm架构华为云)
一.题目介绍 掌握Linux 内核模块的基本概念 ·阅读教材7.3.2节Linux内核模块简介 ,网上查找资料,了解Linux内核模块的基本概念. ·阅读教材7.3.3内核模块编程基础 ,网上查找资料 ...
最新文章
- Javascript创建select 以及获取select的值、文本;获取radio,check的值
- ASP.NET一般处理程序新建一个方法里使用context.Response.Write的解决方法
- python3.7 6如何安装-Python 3.7.1在CentOS 6.10 安装部署
- 如何在服务器端完善游戏的用户体验
- 嵌入式基础之----C++
- P3242 [HNOI2015] 接水果(整体二分、扫描线、dfs序)
- 好的产品经理都是这样绘制原型图的...
- 在SqlServer 2008中将数据导成脚本
- 每日小记2013.3.1
- Windows Phone 7 立体旋转动画的实现
- 【转】Xcelsius2008 水晶易表问题 部分汇总
- 安装adb、选择合适的 adb 版本
- Preference Learning——Object Ranking
- CAN总线的特点及J1939协议通信原理、内容和应用
- matlab otsu算法代码,OTSU算法matlab程序代码
- 斯蒂夫·乔布斯《你必须要找到你所爱的东西》
- 老九学堂 学习 C++ 第四天
- clickhouse之数据存储:JBOD vs RAID
- 微信共享停车场小程序开发设计方案
- (Pytorch) YOLOV4 : 训练自己的数据集【左侧有码】
热门文章
- mysql属于dcl语句的是_MySQL基础:DCL语句
- Opencv错误笔记(一):通过cv2保存图片采用中文命名出现乱码
- 专业黄历顺历传承历法,首部万年历记录片上线
- 总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇
- signal一次一密原理研究(Signal protocol开源协议)
- 《淘宝网开店 SEO 推广 营销 爆款 实战200招》——第1章 网店推广前的准备 1.1 什么是淘宝网店推广...
- 参加霍格沃兹测试开发学社举办的火焰杯软件测试开发大赛是一种什么体验?
- 韩松手机摄影笔记第七课--手机人像摄影及后期
- 手把手教你用Python搭建自己的量化回测框架【均值回归策略】
- Windows10的WiFi功能不能用的解决办法