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
分享到:
相关推荐
Ubuntu 12.04 编译内核模块 一、前期准备 在 Ubuntu 12.04 下编译内核模块前,需要安装 essential 软件包,使用以下命令安装: `apt-get install build-essential` 这将安装编译内核模块所需的基本工具。 二、...
这一过程包括了准备编译环境、下载内核源代码、配置内核选项、编译内核以及最终将新的内核安装到系统中。通过这一系列的操作,用户可以根据自己的需求定制内核,并确保系统拥有最新的性能优化和安全特性。 #### ...
配置是编译内核的核心环节之一,它决定了最终内核支持哪些功能和设备。以下是配置步骤: 1. **使用默认配置:** 可以使用预设的默认配置文件作为起点。对于x86架构,可以使用`arch/x86/configs/i386_defconfig`。...
以上是编译内核过程中可能会用到的主要软件包。在实际操作中,根据具体需求,还可能需要额外的依赖。使用提供的"packages"压缩包,应能一次性安装所有这些必要的软件,简化了编译前的准备工作。务必注意,在编译内核...
Linux 内核模块的编译详解 Linux 内核模块的编译是 Linux 内核开发中的一个重要步骤。编译 Linux 内核模块需要准备好内核模块源码、编写 Makefile 文件、编译模块、加载/卸载模块等步骤。 1. 准备内核模块源码 在...
编译过程中还会生成内核模块,它们也需安装到系统中才能正常使用。 ####5. 更新引导加载器 最后,更新系统的引导加载器配置,确保在启动时能够加载新的内核。 ### 使用Xephyr进行开发和调试 Xephyr是一个模拟的小...
### 虚拟机VM Virtual Box 下 Ubuntu 编译内核与简单的Hello World模块的添加删除教程 #### 一、编译内核 ##### 1. 获取最新内核源码 - 首先访问[www.kernel.org](http://www.kernel.org),下载最新的Linux内核...
然后,使用 make 命令编译内核,使用 make modules_install 命令安装内核模块,最后使用 make install 命令安装编译好的内核到系统。 在安装完成后,需要更新 GRUB 配置文件,以便可以在启动时选择内核版本。最后,...
本实验旨在帮助学生掌握内核模块的基本概念和操作流程,包括编写、编译、插入和卸载内核模块。 **内核理论知识** 1. **Linux内核**:Linux内核是操作系统的核心,负责管理系统的硬件资源,如CPU、内存,并提供进程...
实验目的在于掌握 Linux 内核的编译和配置过程,并学会编译和加载内核模块。 一、实验环境 * 操作系统:Ubuntu 10.04 * 开发板:友善之臂 MINI2440 * 目标机:PC 平台 二、实验内容 1. 编译 Linux 内核 在开始...
* 编译内核:编译启动映像和内核模块 * 安装内核:安装内核模块和内核 * 更改启动文件:修改用于管理系统启动的Grub程序,以运行编译好的新版本内核 五、实验结果和分析 * 重启虚拟机,选择新编译内核版本Linux ...
阅读 Makefile 文件,理解内核模块的编译方法及执行过程;掌握模块安装、卸载,以及查看模块信息的方法。 (2)设计一个模块,功能是列出系统中所有内核进程的程序名、PID 号和进程状态。主要步骤: * 阅读内核源...
`build-essential`包含了许多基础的编译工具,如GCC编译器,而`linux-header-$(uname -r)`则提供了当前运行内核的头文件,这些头文件是编译内核模块所必需的。 接下来,我们创建一个简单的内核模块,名为“hello...
在Linux系统中,可加载内核模块(Loadable Kernel Module, LKM)是实现系统功能扩展的一种重要方式。Ubuntu 9.10 使用的是Linux内核2.6.31,这个版本的内核支持动态加载和卸载模块,使得开发者无需重新编译整个内核...
3. **`kernel-package`**:这是一个用于构建Linux内核模块和整个内核的工具,虽然在现代Ubuntu版本中已较少使用,但对于自定义内核构建仍然有用。 4. **`ubuntu-mainline-kernel.sh`**:这个脚本(根据文件名列表...
- `kernel-package`:提供编译内核所需的相关脚本和支持。 安装命令如下: ```bash sudo apt-get install libncurses5-dev build-essential kernel-package ``` 2. **更新数据源:** 如果系统提示无法找到...
使用`make menuconfig`启动图形配置界面,根据需要选择内核模块和选项。新手通常会选择默认设置,但如果你想为特定硬件或功能优化内核,可以在这里进行调整。 配置完成后,保存并退出。接下来,编译内核和模块: ``...