自己添加一个系统调用

自己添加一个系统调用

自己添加一个系统调用要依照一下步骤完成,不过在产考的过程中还要根据自己的机器来操作。

1)前提:一个干净的系统

2)把redhat下的/usr/src/kernels/2.6.18-164.el5-i686/.config拷到自己下的内核中如(linux-2.6.28)

3)Cd linux-2.6.28

4)Make后接着一路回车

5)编辑/kernel/sys.c文件,添加如下代码:

asmlinkage long sys_mycall(long number) 

     printk(“call number is %ld\n”,number);
     return number;
}

6)编辑arch/x86/include/asm/unistd.h(要根据bzImage产生的位置和电脑的位数文件:

添加一行#define __NR_mycall 324 到当前的最大系统调用号之后 ,比如原来最大的是323,在323的这一行之后 加上一行 #define __NR_mycall 324

修改#define  NR_systemcalls 的值,改成原来的值+1,比如原来是324 改成325

7)编辑/arch/x86/kernel/syscall_table_32.S文件

在文件最后加上一行:

.long sys_mycall

8) make bzImage

9) cp /linux-2.6.28/arch/x86/boot/bzImage  /boot/vmlinuz-版本号  (拷贝内核镜像)

10)编辑/boot/grub/grub.conf

修改前:

title Red Hat Enterprise Linux Server (2.6.18-164.el5)

root (hd0,0)

kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet

initrd /initrd-2.6.18-164.el5.img

修改后:

title Red Hat Enterprise Linux Server (2.6.18-164.el5)

root (hd0,0)

kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet

initrd /initrd-2.6.18-164.el5.img

title Red Hat Enterprise Linux Server (2.6.28)

        root (hd0,0)

        kernel /vmlinuz-2.6.28 ro root=LABEL=/ rhgb quiet

        initrd /initrd-2.6.28

11)重启redhat。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值