发布时间:2014-09-05 13:30:47作者:知识屋
1、下载系统内核版本对应的源码包,版本查看方式:uname -r。
我的是2.6.32
下载命令:apt-get install linux-source-2.6.32
我下载的是linux-source-2.6.32.tar.bz2
2、配置内核:
tar jxvf linux-source-2.6.32.tar.bz2
cd linux-source-2.6.32
make oldconfig #配置原版
3、编译内核(此过程耗时长,编译完后在linux-source-2.6.32多出一个vmlinux)
make
4、编译模块
make modules
5、安装模块(操作结束后多出目录/lib/modules/2.6.32.61+drm33.26)
make modules_install
6、测试
①、hellomod.c
#include<linux/init.h> //初始换函数#include<linux/kernel.h> //内核头文件#include<linux/module.h> //模块的头文件MODULE_LICENSE("GPL");//提示可能没有GNU许可证static int lkp_init(void)//初始化{ printk("Hello, world/n"); //模块运行在内核态,不能使用用户态C库函数中的printf函数,而要使用printk函数 return 0;}static int lkp_cleanup(void)//退出和清理函数{ printk("Goodbye,Hello world/n");}module_init(lkp_init);//驱动程序初始化入口点module_exit(lkp_cleanup);//会调用cleanup_module()函数
obj-m :=hellomod.oKERNELDIR=/lib/modules/2.6.32.61+drm33.26/buildPWD :=$(shell pwd)modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesmodules_install: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install③执行make
输出:
root@master:~/Downloads/.1/lken# makemake -C /lib/modules/2.6.32.61+drm33.26/build M=/root/Downloads/.1/lken modulesmake[1]: Entering directory `/usr/src/linux-source-2.6.32' Building modules, stage 2. MODPOST 1 modules CC /root/Downloads/.1/lken/hellomod.mod.o LD [M] /root/Downloads/.1/lken/hellomod.komake[1]: Leaving directory `/usr/src/linux-source-2.6.32'
会在目录下生成hellomod.ko文件
④、插入内核并查看
insmod hellomod.ko
root@master:~/Downloads/.1/lken# lsmod |grep hellomod
hellomod 679 0
⑤移除模块
rmmod hellomod
查看日记
tail /var/log/message
输出:
Jan 5 16:18:49 master kernel: [161488.154792] Hello, worldJan 5 16:19:20 master kernel: [161519.197040] Goodbye,Hello world
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能