project 1 Adding a System Call to the Linux Kernel
一、实验环境:
ubuntu 10.04系统。
原内核版本:2.6.35.22
二、实验过程:
1、从http://www.kernel.org下载内核源文件 linux-2.6.34.11.tar.bz2,通过命令tar jxvf linux-2.6.34.11.tar.bz2解压得到linux-2.6.34.11文件夹。
ps:之前先下载了linux-3.2.13.tar.bz2进行实验,在后续遇到诸多问题,一一解决后,在启动界面选择内核版本3.2.13进入,无法启动图形化界面,经多次调试,未果,最后放弃新下载了2.6.34.11版本进行实验。
2、修改内核文件,添加helloworld系统调用
2.1 添加helloworld.c文件
路径: linux-2.6.34.11/kernel/
在该路径下新建空文件,命名为helloworld.c。
添加代码:
#include <linux/linkage.h>
#include<linux/kernel.h>
asmlinkage int sys_helloworld(){
printk(KERN_EMERG "hello world!");
return 1;
}
2.2 更新Makefile文件
路径:linux-2.6.34.11/kernel/Makefile
Makefile部分代码如下
/-------------------------------------------------------------------------------------/
obj-y = sched.o fork.o exec_domain.o panic.o printk.o \
cpu.o exit.o itimer.o time.o softirq.o resource.o \
sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \
signal.o sys.o kmod.o workqueue.o pid.o \
rcupdate.o extable.o params.o posix-timers.o \
kthread.o