ubuntu 12.10 x64 下编译新内核 + 系统调用方法

本文介绍如何在Linux 3.8.4内核中添加自定义系统调用,并提供详细步骤,包括下载内核源码、修改内核源文件、编译内核以及测试新增的系统调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

吐槽:

一个小东西弄了好几次不成功,x64就是要special judge 啊。。。sad

 download

老师给的地址有点儿慢, 推荐给力 的 https://www.kernel.org/ 这个地址 。 下载最新的稳定 3.8.4 版本

复制kernel到/usr/src中

sudo cp linux-3.8.4.tar.xz /usr/src

然后在图形界面check一下确实有这个文件,解压缩

sudo xz -d linux-3.8.4.tar.xz
sudo tar -xvf linux-3.8.4.tar

第一次弄的时候需要编辑器:

sudo apt-get install libncurses-dev kernel-package bzip2 make ncurses-dev fake

下面就开始始修改内核源码了

1、/linux-3.8.4/kernel/sys.c 文件

sudo gedit sys.c
文件末尾添加新的系统调用函数

asmlinkage int sys_#Name#(#参数#){
            printk("#输出#");
           return #返回值#;
}

2、arch/x86/syscalls/syscall_64.tbl

sudo gedit syscall_64.tbl

在 313 号调用下加入 314 号调用

314  common  dscall   sys_dscall

下面开始编译

/linux-3.8.4

sudo make mrproper //清除之前记录
sudo make menuconfig // exit
sudo make -j4 // 要跑一个小时。。。。

无 error 后安装内核

sudo make modules_install
sudo make install

重启内核

sudo reboot

Test:

#include<stdio.h>
int main(){
     int res = syscall(314 , 100);
    printf("100 * 100 = %d\n" , res);
    return 0;
}

运行

gcc test.c -o test -g  // 生成可执行文件
./test //执行
sudo dmesg -c //查看系统调用log

结果——

输出 100 * 100 = 10000

系统调用中显示——DS CALL Succeed


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值