实验一 添加最简单的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)/build
        PWD    := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
        rm -r -f .tmp_versions *.mod.c .*.cmd *.o *.symvers
endif

3、LKM编译、添加、显示执行结果以及删除模块:

在这里插入图片描述

在这里插入图片描述

四.实验总结

通过这次实验使我基本掌握了基本的Linux内核模块开发框架和编译方法,学习了Makefile编译方法,掌握了Linux内核模块添加流程。理解了Linux内核模块代码中的一些常见宏和参数,掌握了Linux内核模块程序和应用程序的差异。
这次实验让我了解了LKM编译有两种方法,第一种是集成到内核,随内核一起编译,第二种是单独编译,动态插入内核。对于我们初学者来说,推荐使用第二种方式。把将开发的内核代码文件直接进行编译,然后使用命令动态插入内核或者从内核卸载。这样的优点是编译速度快;单独调试代码,方便调试修正代码。
这次实验让我有了Linux内核的第一次体验,在使用Windows系统时并没有机会体会到这一点。Linux的内核代码的编写规则和我平常的编写习惯也有些许的不同。我希望能通过操作系统实验,能够加强自己对操作系统的理解,助力自己以后的学习。

  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值