加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Ubuntu 16.10添加系统调用

发布时间:2020-12-16 04:40:19 所属栏目:安全 来源:网络整理
导读:《Ubuntu 16.10添加系统调用》要点: 本文介绍了Ubuntu 16.10添加系统调用,希望对您有用。如果有疑问,可以联系我们。 系统挪用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等) 我们必要完成: 下载最新版本的Linux内核源代

《Ubuntu 16.10添加系统调用》要点:
本文介绍了Ubuntu 16.10添加系统调用,希望对您有用。如果有疑问,可以联系我们。

系统挪用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)

我们必要完成:

  • 下载最新版本的Linux内核源代码,在Linux系统中解压缩,大致观察内核源代码的组成布局.然后编译这个版本的内核代码,并尝试用编译出的内核重新引导系统.
  • 添加一个新的系统调用,完成任意一个功能,重新编译和运行内核,使新的系统调用可用.
  • 编写一个用户态的程序,使用增加的系统调用,以证明它确实可以用.

开发环境:

  • Linux 刊行版 Ubuntu 16.10
  • VMware Workstation Pro 12.6
  • Linux 内核版本 4.11.6
  • 虚拟机分配内存:4GB
  • 虚拟机分配空间:50GB SSD

1.? 在VMware Workstation上安装Ubuntu 16.10;

Ubuntu 16.10添加系统调用

1.png

?

2. 进入Ubuntu体系,更新软件源代码.

sudo apt-get install update ?

?3. 下载编译进程中的所需的软件依赖包.

sudo apt-get install libncurses5-dev libssl-dev ?

sudo apt-get install build-essential openssl ?

sudo apt-get install zlibc minizip ?

sudo apt-get install libidn11-dev libidn11

4. 经由过程git下载Linux 内核 4.11.6.

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

5.以root治理权限解压内核到 /usr/src/.

sudo cd /usr/src

sudo tar -xvf linux-4.11.6.tar.xz

6. Ubuntu安装Vim编纂器.

sudo apt-get install vim

7.用Vim打开/kernel/sys.c文件,参加linkage.h的头文件,在文件末尾参加要参加的系统调用函数.

sudo vim linux-4.11.6/kernel/sys.c

Ubuntu 16.10添加系统调用

2.png

?

Ubuntu 16.10添加系统调用

3.png

8.参加系统调用函数声明.在linux-4.11.6/arch/x86/include/asm/syscalls.h中参加asmlinkage void sys_quicksort(int [],int,int);

sudo vim linux-4.11.6/arch/x86/include/asm/syscalls.h

Ubuntu 16.10添加系统调用

4.png

9.参加系统调用号.在linux-4.11.6/arch/x86/entry/syscalls/syscall_64.tbl

sudo vim linux-4.11.6/arch/x86/entry/syscalls/syscall_64.tbl

Ubuntu 16.10添加系统调用

5.png

10. 编译内核和安装内核.

sudo make mrproper

sudo make clean

sudo make menuconfig

11. 根据本身处理器的最大线程数目来编译.

sudo make -j4

12. 编译后安装内核到体系中.

sudo make modules_install ?

sudo make install

13. 重启加载内核.

Ubuntu 16.10添加系统调用

6.png

14. 编写法式验证系统调用.

#include<stdio.h>

#define QUICK_SORT 334

int main()

{

? ? int i,a[]={9,20,36,10,1,2,6,4,5,8};

? ? syscall(QUICK_SORT,a,9);

? ? for(i=0;i<10;i++)

? ? {

? ? ? ? printf(“%dt”,a[i]);

? ? }

? ? return 0;

}

15. 编译C法式:

?gcc -o test test.c

./test

Ubuntu 16.10添加系统调用

7.png

.调用胜利!

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

本文永远更新链接地址:http://www.linuxidc.com/Linux/2017-06/145161.htm

linux

更多LINUX教程,尽在编程之家PHP学院专栏。欢迎交流《Ubuntu 16.10添加系统调用》!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读