`

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编译内核模块

    Ubuntu 12.04 编译内核模块 一、前期准备 在 Ubuntu 12.04 下编译内核模块前,需要安装 essential 软件包,使用以下命令安装: `apt-get install build-essential` 这将安装编译内核模块所需的基本工具。 二、...

    Ubuntu 安装编译内核步骤

    这一过程包括了准备编译环境、下载内核源代码、配置内核选项、编译内核以及最终将新的内核安装到系统中。通过这一系列的操作,用户可以根据自己的需求定制内核,并确保系统拥有最新的性能优化和安全特性。 #### ...

    在ubuntu12.04下编译内核

    配置是编译内核的核心环节之一,它决定了最终内核支持哪些功能和设备。以下是配置步骤: 1. **使用默认配置:** 可以使用预设的默认配置文件作为起点。对于x86架构,可以使用`arch/x86/configs/i386_defconfig`。...

    Ubuntu10.04编译内核时所需要的软件包

    以上是编译内核过程中可能会用到的主要软件包。在实际操作中,根据具体需求,还可能需要额外的依赖。使用提供的"packages"压缩包,应能一次性安装所有这些必要的软件,简化了编译前的准备工作。务必注意,在编译内核...

    linux内核模块的编译详解(有图)

    Linux 内核模块的编译详解 Linux 内核模块的编译是 Linux 内核开发中的一个重要步骤。编译 Linux 内核模块需要准备好内核模块源码、编写 Makefile 文件、编译模块、加载/卸载模块等步骤。 1. 准备内核模块源码 在...

    Ubuntu交叉编译环境与内核编译

    编译过程中还会生成内核模块,它们也需安装到系统中才能正常使用。 ####5. 更新引导加载器 最后,更新系统的引导加载器配置,确保在启动时能够加载新的内核。 ### 使用Xephyr进行开发和调试 Xephyr是一个模拟的小...

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

    ### 虚拟机VM Virtual Box 下 Ubuntu 编译内核与简单的Hello World模块的添加删除教程 #### 一、编译内核 ##### 1. 获取最新内核源码 - 首先访问[www.kernel.org](http://www.kernel.org),下载最新的Linux内核...

    Ubuntu手动更新内核终极教程(快速编译更新你能行)

    然后,使用 make 命令编译内核,使用 make modules_install 命令安装内核模块,最后使用 make install 命令安装编译好的内核到系统。 在安装完成后,需要更新 GRUB 配置文件,以便可以在启动时选择内核版本。最后,...

    08 内核模块Hello1

    本实验旨在帮助学生掌握内核模块的基本概念和操作流程,包括编写、编译、插入和卸载内核模块。 **内核理论知识** 1. **Linux内核**:Linux内核是操作系统的核心,负责管理系统的硬件资源,如CPU、内存,并提供进程...

    基础实验:linux内核的编译与内核模块.doc

    实验目的在于掌握 Linux 内核的编译和配置过程,并学会编译和加载内核模块。 一、实验环境 * 操作系统:Ubuntu 10.04 * 开发板:友善之臂 MINI2440 * 目标机:PC 平台 二、实验内容 1. 编译 Linux 内核 在开始...

    编译Linux内核

    * 编译内核:编译启动映像和内核模块 * 安装内核:安装内核模块和内核 * 更改启动文件:修改用于管理系统启动的Grub程序,以运行编译好的新版本内核 五、实验结果和分析 * 重启虚拟机,选择新编译内核版本Linux ...

    操作系统实验三:添加内核模块

    阅读 Makefile 文件,理解内核模块的编译方法及执行过程;掌握模块安装、卸载,以及查看模块信息的方法。 (2)设计一个模块,功能是列出系统中所有内核进程的程序名、PID 号和进程状态。主要步骤: * 阅读内核源...

    Ubuntu下内核编程之第一个模块helloworld(附源码)

    `build-essential`包含了许多基础的编译工具,如GCC编译器,而`linux-header-$(uname -r)`则提供了当前运行内核的头文件,这些头文件是编译内核模块所必需的。 接下来,我们创建一个简单的内核模块,名为“hello...

    ubuntu9.10 可加载内核模块和字符设备驱动实验代码及实验报告

    在Linux系统中,可加载内核模块(Loadable Kernel Module, LKM)是实现系统功能扩展的一种重要方式。Ubuntu 9.10 使用的是Linux内核2.6.31,这个版本的内核支持动态加载和卸载模块,使得开发者无需重新编译整个内核...

    ubuntu内核管理工具

    3. **`kernel-package`**:这是一个用于构建Linux内核模块和整个内核的工具,虽然在现代Ubuntu版本中已较少使用,但对于自定义内核构建仍然有用。 4. **`ubuntu-mainline-kernel.sh`**:这个脚本(根据文件名列表...

    虚拟机下ubuntu内核编译

    - `kernel-package`:提供编译内核所需的相关脚本和支持。 安装命令如下: ```bash sudo apt-get install libncurses5-dev build-essential kernel-package ``` 2. **更新数据源:** 如果系统提示无法找到...

    Ubuntu16.04LTS环境下Linux-4.0.1内核编译(内核文件+指导书)

    使用`make menuconfig`启动图形配置界面,根据需要选择内核模块和选项。新手通常会选择默认设置,但如果你想为特定硬件或功能优化内核,可以在这里进行调整。 配置完成后,保存并退出。接下来,编译内核和模块: ``...

Global site tag (gtag.js) - Google Analytics