Linux 内核修改与编译图文教程
1
1、 实验目的
针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。
2、 任务概述
2.1 下载新内核
http://www.kernel.org/
2.2 修改新内核系统调用
添加新的系统调用函数,用来判断输入数据的奇偶性。
2.3 进行新内核编译
通过修改新版内核后,进行加载编译。最后通过编写测试程序进行测试
3、 实验步骤
3.1 准备工作
查看系统先前内核版本: (终端下)使用命令:uname -r
2
3.2 下载最新内核
我这里使用的内核版本是
3.3 解压新版内核
将新版内核复制到“/usr/src”目录下
在终端下用命令:cd /usr/src进入到该文件目录
解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令:
bzip2 -d linux-2.6.36.tar.bz2 tar -xvf linux-2.6.36.tar
文件将解压到/usr/src/linux目录中
3
使用命令:ln -s linux-2.6.36 linux
3.4 安装必要的工具
在终端下输入一下命令:
sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot
sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt
4
3.5 内核修改
3.5.1添加新的系统调用
在文件:usr/src/ linux /arch//x86/kernel/syscall_table_32.S最后增加一个系统表项: .long sys_mycall
3.5.2 添加系统调用号
usr/src/linux/include/ asm-generic /unistd.h中添加: #define _NR_mycall 245 #define NR_syscalls
(343为先前在系统调用表中占用的位置,即为新添加的系统调用分配系统调用号为343)
5