`

ubuntu 编译内核模块过程

阅读更多

1、下载内核源文件

 sudo apt-cache search linux-source

 可以看到和当前操作系统统一版本的源码,例linux-source-2.6.32

 安装源码sudo apt-get install linux-source-2.6.32

 然后解压压缩包

 cd /usr/src,可以看到linux-source-2.6.32.tar.bz2

 解压内核源码文件,sudo tar jxf linux-source-2.6.32.tar.bz2 -C .

 解压完成,在/usr/src/目录下,产生linux-source-2.6.32文件夹

 

2、初始化内核文件部分脚本

 

 

 2.1 sudo make prepare (防止错误 类似include/linux/mmzone.h:18:26: error: linux/bounds.h: 没有该文件或目录)

  

 如果碰到  make: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'.  Stop.

 sudo make localmodconfig 或者 sudo make menuconfig 或 sudo make oldconfig

 

 2.2 sudo make scripts   (防止错误  /bin/sh: scripts/mod/modpost: not found )

 

 

 

3、添加模块源文件

 3.1 添加.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("test-author");

MODULE_DESCRIPTION("A simple Hello World Module");

MODULE_ALIAS("a simplest module");

 

3.2 添加Makefile

   

obj-m := hello.o

 

4、进行编译

   make -C /usr/src/linux-source-2.6.32/ M=$(pwd) modules

 

5、加载内核模块

   sudo insmod hello.ko

 

如果发生错误:   insmod: error inserting 'hello.ko': -1 Invalid module format  

说明使用的版本是不正确的

 

不妨试试 make -C /lib/modules/`uname -r`/build M=$(pwd) modules

 

 

 

  

 

 

 

 

分享到:
评论

相关推荐

    ubuntu12.04编译内核模块

    linux内核学习第一步,编译内核模块,给一些新手学习

    虚拟机VM Virtual Box 下ubuntu 编译内核 与 简单的Hello Word模块的添加删除教程

    虚拟机VM Virtual Box 下ubuntu 编译内核 与 简单的Hello Word模块的添加删除教程

    Armbian_5.37_Sunvell-r69_Ubuntu_xenial_default_3.4.113_desktop.7z.002

    现在bsp 3.4内核源码已经移除,这是历史映像 新的bsp内核还在开发中应该是4.4,但是sunxi网站的说明等还是基于3.4内核开展,这个内核也是目前各种驱动最全的 这个是带xfce桌面的映像 一共有三部分 这是第二部分 ...

    Linux实验课设报告

    6、Linux内核模块编程:内核模块编程、卸载模块编程、参数模块编程 8、Linux内存管理:编写模块程序、编译、插入模块、查看打印信息 8、Linux设备驱动:编写一个简单的字符设备驱动、查看设备号、编写测试程序 使用...

    Ubuntu+Systemtap进行Linux内核和用户空间开发测试

    本文主要介绍在ubuntu平台 + 自定义内核上如何安装systemtap工具包及解决编译加载运行过程中的一些问题,如何利用systemtap工具监测分析内核函数,内核模块及用户态程序。

    华为4G模块开发教程v2.01

    三 编译驱动模块在Ubuntu PC机终端的内核源码目录执行驱动模块编译命令,编译内核中独立的驱动模块,如图3-1所示:图3-1四 拷贝内核驱动华为4G模块的使

    EC20-linux-driver-pcie-ubuntu16.04

    EC20 Pcie 4G模块,在ubuntu 16.04 kernel 4.15 版本以上。驱动编译不成功。 Quectel_WCDMA&LTE;_Linux&Android;_GobiNet_Driver_V1.3.0 里面的内核文件比较旧,只能适配到kernel 4.05 版本。 ubuntu 16.04 kernel ...

    kmod:用Rust编写Linux内核模块

    用Rust编写Linux内核模块 依赖关系是您正在运行的内核的当前Linux标头。 要构建模块,只需在根目录中执行: make 要构建发行版,请执行: make RELEASE=1 要交叉编译,请指定RUST_TARGET和KERNEL_BUILD_DIR : ...

    已编译的zaurus模块

    已编译的zaurus模块,适用于Ubuntu8.04,内核版本2.6.24-16。 用于连接Ubuntu8.04 和 ROKR E6 手机。

    leetcoderust-CSCI340-KernelHacking:CSCI340操作系统的内核模块编写作业

    内核模块的文件,您应该首先构建这些文件以熟悉编译和安装已编译内核模块的基础知识。 内核模块 向 Linux 内核添加代码有两种主要方式。 一种方法是在编译过程中选择或添加代码编译到内核中。 另一种方法是在运行时...

    编译ubuntu驱动.TXT

    (3)没有 /lib/modules/*/build 这个目录,make报错(4)内核编译 CONFIG_MODVERSIONS 作用(5)安装内核源码与相应的头文件(6)载入驱动模块(7)/etc/rc.local 不执行的问题(8)内核升级后,驱动程序要升级,为...

    acpi_call_GUI_systemd:这是一个Java程序,允许用户通过图形界面简单地安装和使用acpi_call内核模块,并且还提供了一个有用的脚本,该脚本在每次更新后自动重新编译内核。 现在支持systemd!

    安装acpi_call内核模块(每次更新后将自动重新编译内核); 卸载驱动程序后停用离散GPU(支持radeon,amdgpu和nouveau); 每次启动时自动停用离散GPU。 该版本与所有使用systemd的linux发行版兼容,例如: 从...

    gtp5g:Linux内核模块5G GTP-U

    gtp5g-5G兼容的GTP内核模块 gtp5g是定制Linux内核模块gtp5g,用于处理PFCP IE(例如PDR和FAR)的数据包。 有关详细信息,请参考3GPP规范TS 29.281和TS 29.244。 注意 由于Linux内核的发展,该模块不适用于每个内核...

    ubuntu网卡驱动安装包

    6.载入驱动模块到内核:modprobe e1000e,此时正常情况下,就可以检测到网卡,并能上网了。 7.如果第6步没有检测到网卡,尝试使用如下命令插入驱动模块到内核: insmod /lib/modules/3.16.0-30-generic/updates/...

    模拟器专用android kernel2.6 (支持netfilter,ko文件加载与卸载)

    可支持内核模块文件(ko文件)的加载与卸载; 同时完美支持netfilter) 2.还有个编译此内核时使用的config文件。(供各位想自己编译的人参考) 使用方法: 1.如何让android模拟器运行时使用自己编译的内核? 首先进入...

    Ubuntu10.04下驱动开发环境搭建

    Ubuntu10.04下驱动开发环境的建立(Linux驱动开发源码树的建立),...Linux内核:代码的下载,编译,新内核替换老内核, helloworld驱动:源码,编译,安装模块和卸载模块 我在建立开发源码树时遇到的问题及解决方法

    kernel-logger::memo:可以替代记录器或日志包装器的内核模块

    内核记录器是一个内核模块,可以替代logger或logwrapper 。 它的日志类似于systemd的日志,可以由dmesg或journalctl读取。 用例 您需要记录initramfs的日志,并希望日志记录可以保留这些日志。 您需要一个记录器,...

    kernel-headers-4.14.116-200.el7.x86_64.rpm

    有的系统安装后缺少这个rpm,导致后续软件不能安装 安装后可以正常编译驱动模块、程序等。

    pythran:提前编译数字内核

    它旨在有效地编译科学程序,并利用多核和SIMD指令单元的优势。 直到0.9.5(包括),Pythran才支持Python 3和Python 2.7。 现在,它仅支持Python 3 。 安装 Pythran的资源托管在。 Pythran发行版托管在。 Pythran...

    kvm虚拟机安装介绍,KVM

    但仅有 KVM 模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具。 关于用户空间的工具,KVM 的开发者选择了已经成型的开源虚拟化软件 QEMU。QEMU 是一个强大的虚拟化软件,它...

Global site tag (gtag.js) - Google Analytics