Ubuntu9.10 中内核编译过程

                                                           linux 下增加新的系统功能调用

Linux环境下为OS增加一个新的系统功能调用。功能是:把用户输入的整数乘以2后回。

这份实验报告是在第一个编程作业时,一边在Ubuntu9.10上做实验,一边整理的。

在这里只是将我在Ubuntu9.10下的整个操作过程描述一下:

1.       首先下载了Linux-2.6.33.1.tar..bz2  放在home/ht/下,

2.       然后拷贝到/usr/src/下用 sudo cp /home/ht/Linux-2.6.33.1.tar.bz2 /usr/src/ Linux-2.6.33.1.tar.bz2

3.       解压该文件夹 使用命令 tar –jxvf /usr/src/ Linux-2.6.33.1.tar.bz2 结果在/home/ht/中出现了Linux-2.6.33.1;将压缩后的/home/ht/Linux-2.6.33.1 移动到/usr/src/ Linux-2.6.33.1.tar.bz2 使用命令sudo mv linux-2.6.33 /usr/src/linux-2.6.33

   编写源代码,在/usr/src/linux-2.6.33.1/kernel/sys.c文件中添加源代码,如下所示:

  asmlinkage int sys_mycall(int number)

{

printk Hello,this is my call!!!;

  return 2* number;

  }

4.       连接新的系统调用:1>/usr/src/linux-2.6.33.1/arch/x86/include/asm/unistd_32.h中给系统调用分配一个唯一的编号,我分配的是338.同时并修改下面的#define NR_syscalls 338 ,改为#define NR_syscalls   339。(我头两会编译时都没有意识到这边,后来是在测试自己增加的系统功能调用时出了问题,上网找了资料才发现的,然后又从新编译一边内核。)

5.       arch/x86/kernel/syscall_table_32.S中添加:.long sys_mysyscall

6.       在当前工作目录(/usr/src/linux-2.6.33.1)下,才可以重建内核定制内核:

先用 sudo mrproper( 清除前一次编译的内容,在第一次编译时,如果使用这个命令,终端提示没有相应的make规则 )

然后用 sudo make config 或者sudo make oldconfig重建内核这有四种选择,第二次编译时我选了前一种,每个配置我都选用默认形式,第三次编译时使用的是第二种

下面是一个截图:(第三次编译的)

7.       sudo make clean头一次输入这个命令时终端提示这个命令时Unnecessary,在第三次编译时有一个如下所示的截图:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值