1.下载内核 在http://www.kernel.org/下载linux-2.6.38,你可以选择稳定版或者新的测试版,但一定要下载Full source版。2、解压内核
cd /usr/src
tar -jxvf linux-source-2.6.38.tar.bz2
将内核解压到/usr/src
3、修改文件
a)/usr/src/linux-source-2.6.38/kernel/sys.c
可以用右键管理员打开或者
gedit /usr/src/linux-source-2.6.38/kernel/sys.c
在文件最后添加
asmlinkage int sys_mycall(int number)
{
printk("This is my first system call!!!hahahaha!!");
return number;
}
b)/usr/src/linux-source-2.6.38/arch/x86/kernel/syscall_table_32.S
可以用右键管理员打开或者
gedit /usr/src/linux-source-2.6.38/arch/x86/kernel/syscall_table_32.S
然后在一列 .long sys_XXXX的下一行添加
.long sys_mycall
并记住他们分别是第几个.long sys_XXXX
c)/usr/src/linux-source-2.6.38/arch/x86/include/asm/unistd_32.h
可以用右键管理员打开或者
gedit /usr/src/linux-source-2.6.38/arch/x86/include/asm/unistd_32.h
在一列#define __NR_XXXX NNN后添加几行
#define __NR_mycall 341注意后面那个数字是接着上面那几行下来的4、编译内核关于内核编译,我在上一篇文章里面已经讲了,自己照上面的做就是了,下面是文章的链接:《Ubuntu 10.10下成功编译Linux-2.6.38内核》 http://www.linuxidc.com/Linux/2011-04/34080.htm
5、重启
重启Ubuntu,如果能进入系统,证明基本上没问题了。
打开终端输入
uname -r
查看版本号,如果是2.6.38就可以安心了
6、检查系统调用
随便写个函数试试看吧
在main函数中使用syscall(函数号,参数)测试系统调用
比如
#include <linux/unistd.h>#include <stdio.h>main(){ printf("The number is %d
",syscall(341,100));}出现如下输出:The number is 100编译运行,然后打开终端输入
sudo dmesg -c
查看最后一行是否有添加系统调用成功信息: 如果有 "This is my first system call!!!hahahaha!!"说明系统调用添加成功了!!解决Linux和SecureCRT上UTF-8汉字乱码问题Ubuntu 10.10下成功编译Linux-2.6.38内核相关资讯 Ubuntu教程 Ubuntu 10.10
- Ubuntu教程 - 使用Ubuntu拷贝CD和 (12/18/2013 14:38:16)
- 让Ubuntu 12.10支持RAR和7Z文件解 (11/15/2012 18:51:50)
- Windows 7硬盘安装Ubuntu 12.10图 (11/03/2012 19:22:47)
| - 完美安装Ubuntu 12.10最新AMD显卡 (11/27/2012 08:17:47)
- Win 7硬盘安装Ubuntu 12.10 (11/05/2012 13:30:34)
- 虚拟机上Ubuntu 11.10升级到12.04 (10/12/2012 20:00:38)
|
本文评论 查看全部评论 (0)