Build linux kernel Module_jianghuyue的博客-程序员宅基地

技术标签: build  module  linux  debian  makefile  header  

原文连接:http://www.cyberciti.biz/tips/build-linux-kernel-module-against-installed-kernel-source-tree.html

一 在没有linux kernel源码的条件下build linux kernel module

How do I build Linux kernel module against installed or running Linux kernel? Do I need to install new kernel source tree from kernel.org?

坦白的说,你并需要一个新的linux kernel source tree(dowload from kernel.org).也就是说,build kernel driver或module并不要求你下载一个展开的linux kernel源码树结构。

二 linux kernel header

如果你要构建新的linux kernel driver或module, linux kernel header是必须的。

假设当前你的系统是debian 5 lenny。

更新你的aptitude的列表:

aptitude update

查询linux kernel header deb package.

aptitude search linux-headers-$(uname -r)

安装linux-header-* package

apt-get install linux-headers-$(uname -r)

查询当前的kernel build directory

ls –d /lib/modules/$(uanem -r)/build

创建你开发的新的module的目录:

mkdir ~/test

cd ~/test

vi Makefile

输入新的内容

obj-m += hello.o   
all:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules   
clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
hello.c内容

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

static int __init
hello_start(void)
{
  printk(KERN_INFO "loading hello module.../n");
  printk(KERN_INFO "hello world/n");
  return 0;
}

static void __exit
hello_exit(void)
{
  printk(KERN_INFO "Goodbye Yubo./n");
}

module_init(hello_start);
module_exit(hello_exit);

 
然后,在~/test 目录下,make
就可以编好hello.ko module
接下来可以使用lsmod, insmod, rmmod, modinfo 来对hello module进行操作。
lsmod | grep hello
insmod hello.ko
rmmod hello
modinfo hello 查看module hello 的信息
 
在系统启动的时候加载module, 修改/etc/modules, 这个文件的每一行配置一个module的名字,
接下来再mkdir –p /lib/modules/$(uname -r)/kernel/drivers/hello
然后拷贝hello.ko 到/lib/modules/$(uname -r)/kernel/drivers/hello目录下
编辑/etc/modules
添加一行hello

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jianghuyue/article/details/6105432

智能推荐

MIT 线性代数(28—30)读书笔记_Paul-Huang的博客-程序员宅基地

第二十八讲:正定矩阵和最小值本讲学习正定矩阵positive definite matrices,这个主题把整门课的知识融为一体,主元,行列式,特征值,不稳定性,新表达式xTAxx^TAx。目标是:怎么判断一个矩阵是否是正定矩阵\color{red}{怎么判断一个矩阵是否是正定矩阵},为什么对正定矩阵感兴趣,最后给出几何上的解释,椭圆和正定性有关,双曲线与正定性无关。当极小值存在时,如何找出极小值应

Maven工程中使用Java发送邮件_腾讯云邮件服务sdk_门时的博客-程序员宅基地

虽然这些天很忙,但是有一些额外的与这些必要的事情无关的、但是我很感兴趣的事情还是没有放下。 今天要说的java发送邮件就是其中一个,另外一个令我感到欣喜的是发送短信验证码,都是利用SDK实现的(虽然我还不知道SDK的定义是什么,但是起码还是知道这是个什么东西)。  ▍实验环境 我的实验环境: 1、Maven、SpringBoot2、开发工具:IntelliJ...

Eclipse各个版本spring boot 开发环境sts插件,以及安装说明?_eclipsespring boot版本_huxiaochao_6053的博客-程序员宅基地

如何下载,这个博客讲的很清楚了,请参考博客:https://blog.csdn.net/qq_37872792/article/details/81149261之后下载下插件就是离线安装了,详情参考博客:https://blog.csdn.net/litter_Strong/article/details/79315384如果博客帮助到你,请点赞谢谢!...

Spring Cloud Netflix 2.2.2_咔啡的博客-程序员宅基地

OverviewLearnSamplesUnresolved directive in - include::_attributes.adoc[]Spring Cloud Netflix provides Netflix OSS integrations for Spring Boot apps through autoconfiguration and binding to the ...

LAMP与常用软件的安装(Ubuntu 22.04 LTS)_暗黑码龙的博客-程序员宅基地

Ubuntu 22.04 LTS/Apache2/Mysql-8.0/PHP-8.0/Other Software

oracle 12c transaction guard,Oracle 12c 在生产库停止Data Guard怎么搞?_月夏凉的博客-程序员宅基地

在生产库停止DataGuard操作如下。sql&gt; show parameter log_archive_dest_2NAME TYPE VALUE------------------------------------ ----------- ------------------------------log_archive_dest_2 ...

随便推点

Android插件化1-插桩式-Activity插件化_傅晨明的博客-程序员宅基地

1、插件化概述插件化属于动态加载技术动态加载技术:插件化、热修复动态加载技术:在应用程序运行时,动态加载一些程序中原本不存在的可执行文件并运行这些文件里的代码逻辑,可执行文件总的来说分为两个,一个是动态链接库so,另一种是dex相关文件(dex文件包含jar/apk文件)。插件化的作用:主要用于解决应用越来越庞大以及功能模块的解耦,所以小项目中一般用的不多。热修复:主要用于修复bug。...

学习笔记之JavaSE(6)--Java基础语法5_华月箜篌的博客-程序员宅基地

一、一维数组和Arrays类数组是存放相同类型的一组数据的容器,它可以存储基本数据类型和对象。比较特殊的是:数组是对象。Arrays类属于Java核心类库java.util,它包含一套操作数组的静态方法。数组和容器类都作为存放数据的容器,那它们有什么区别呢?数组和集合类的区别有三方面:效率、类型安全和保存基本类型的能力。随着泛型和自动打包机制的出现,集合类已经可以实现类型安全,并且也可以存

java游戏开发3hc_R3gr3t_weixin_39682477的博客-程序员宅基地

Lab for Java Deserialization VulnerabilitiesThis content is related to the paper written for the 12th edition of H2HC magazine.See full paper in: https://www.h2hc.com.br/revista/Slides and video of th...

如何成为Emacs高手(像神一样使用编辑器)_horst_hu的博客-程序员宅基地

很容易.一年多前我还在Vi阵营,偶尔使用Emacs还总是忘记`退出`(C-x C-c)的快捷键,但是一年后我跨入高手行列.现在网上很多中文文章都是和你强调Emacs有多牛,以激发你的兴趣.最有名的大概是王垠的Emacs是一种信仰!世界最强编辑器介绍.这些好文章让你激动,你因此定下来一个伟大崇高的目标(掌握神一样的编辑器Emacs),接下来的关键就是执行了(如何高效地学习Emacs).国

处理 WM_NCHITTEST 消息实现 WPF 无边框窗体改变大小和移动_iteye_16366的博客-程序员宅基地

处理 WM_NCHITTEST 消息实现 WPF 无边框窗体改变大小和移动 2011年05月10日  最近一直在学习 WPF,看着别人做的WPF程序那么漂亮,眼红啊~ 很多漂亮的程序都是无边框的。于是无边框窗口操作就是最重要的了。无边框窗口的操作一直以来相关的资料就很少。WPF 下的就更少了,有的大多是无边框窗体的移动。在得到群里高人的指点,再查了一些资料之后,终于把问题解决了。 ...

推荐文章

热门文章

相关标签