从零开始 linux 模块开发总结

本文介绍如何在Ubuntu 9.10环境下编译Linux内核模块。包括安装必要环境、编写简单模块代码、创建Makefile及编译加载流程。通过具体步骤演示了从零开始制作并加载一个简单的helloworld模块。

1.准备编译 ko 的 linux 环境:

   本人使用 ubuntu 9.10.

2.查看系统的版本:

   使用 uname -r 命令, 本人系统是 2.6.31-22-generic.

3.安装内核头文件:

   sudo apt-get install linux-headers-`uname -r`

   本人使用: sudo apt-get install linux-headers-2.6.31-22-generic. 可能会得到下面的信息:

   linux-headers-2.6.31-22-generic is already the newest version.
   0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

4.当然, gcc /make 等工具天生就是需要的,这些一般不用安装,系统自带了。

5.编写 c code:

   本人的 hello.c

   #include <linux/init.h>
   #include <linux/module.h>

   MODULE_LICENSE("Dual BSD/GPL");

   static int hello_init(void)
   {
       printk(KERN_ALERT "hello world enter/n");
       return 0;
   }

   static void hello_exit(void)
   {
       printk(KERN_ALERT "hello world exit/n");
   }

   module_init(hello_init);
   module_exit(hello_exit);

   MODULE_AUTHOR("Alex Xia");
   MODULE_DESCRIPTION("A single hello world module");
   MODULE_ALIAS("a simplest module");

 

6.编写Makefile,注意,命令前面是 Tab 键,不是空格。

   本人的 Makefile :

   obj-m:=hello.o
   KERNELBUILD:=/lib/modules/2.6.31-22-generic/build
   default:
              make -C $(KERNELBUILD) M=$(shell pwd) modules
   clean:
              rm -rf *.o *.ko *.mod.c *.cmd .tmp_versions

 

7.在Makefile 一级的目录中执行 make, 生成 hello.ko 等文件。

8.使用 sudo insmod hello.ko 将模块插入内核系统。

9.如果没看到 module_init()注册的函数执行中的打印信息,使用 dmesg 命令查看系统日志。本人有看到 “hello world enter”。

10.使用 sudo rmmod hello 从内核中移出 hello.ko 模块。使用 dmesg 命令查看系统日志。本人有看到 “hello world exit”。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值