澳门网络娱乐游戏平台-澳门电子游戏娱乐网址-官方直营

澳门唯一授权官方网Linux内核中增加新的系列调用

系统调用(System Call)是操作系统为在客户态运维的历程与硬件器械(如CPU、磁盘、打字与印刷机等)

率先让我们脑补一下什么是系统调用,个人了解系统调用正是调用系统函数(内核状态下的函数)。在linux系统中,客商通超过实际行一条访管指令(int$0x80)来兑现系统调用。(说白点正是您在大团结的代码中调用那一个““syscall(卡塔尔”函数)就能出发一个访管中断,系统就能去施行你必要的系列函数。其实个中还或然有部分经过,我为了有匡助大家理解,在这里忽视了。如需详细询问系统调用进度,请读者自行百度呢。

本身这里运用的Linux内核版本是linux2.6.33.3

大家须要实现:

那么起先走入正题吧,内核编写翻译啊,其实是三个很浓重的进程,一步弄错,哈哈哈,比好酸爽....

实际增加系统调用是风姿罗曼蒂克件非常粗大略的事体,因为你只是概念一些管理函数,增加符号表,别的的调节都以由根基来援助做的。

  • 下载最新版本的Linux内核源代码,在Linux系统中解压缩,大约观看内核源代码的结缘布局。然后编写翻译那一个本子的木本代码,并尝试用编写翻译出的水源重新率领系统。
  • 丰盛一个新的系统调用,完成自由五个成效,重新编写翻译和周转基本,使新的系统调用可用。
  • 编写三个客户态的前后相继,使用增添的连串调用,以证实它确实能够用。

第风姿浪漫大家必要风流罗曼蒂克台linux系统的微管理机依旧装好了linux系统的设想机,大多数人依然用设想机的。小编这里运用的是VMware12,设想机的安装,作者这里就不介绍了

1.下载内核

付出情状:

要拓宽基本编写翻译,大家得去http://www.kernel.org下载linux源代码

2.配置
tar -xzvf Linux-2.6.33.3.tar.gz -C /usr/src
cd /usr/src
ln -s Linux-2.6.33.3 Linux
cd Linux

  • Linux 发行版 Ubuntu 16.10
  • VMware Workstation Pro 12.6
  • Linux 内核版本 4.11.6
  • 设想机分配内部存款和储蓄器:4GB
  • 设想机分配空间:50GB SSD

澳门在线网址 1

make mrproper # Make sure you have no stale .o files

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

image.png

make menuconfig #调换三个.config文件
切切实实,依据自身的系统布署进行设置。

澳门在线网址 21.png

此间注意下,先导工编织译前,确认保障自个儿是root客户(好处是足以节约加多sudo)

3.从头艰巨的编译进度

自身编写翻译的时候是用的4.13.7的本子,大家能够和自己的不相似。
开辟终端,切换到Downloads目录

make
make module_install
make install

  1. 步入Ubuntu系统,更新软件源代码.

澳门在线网址 3

update-grub2 or update-grub

sudo apt-get install update ​

image.png

4.自笔者爱不忍释先编写翻译后生可畏便基本,确定保障原始的代码可以胜利编写翻译运转成功,然后再扩充校勘。不然,在一个无法跑的基石上加多系统调用,很费脑筋。

​3. 下载编写翻译进程中的所需的软件信任包.

接下去将源码复制到/home/src(小编从前曾在home目录下成立了src目录,其实在何地都能够。卡塔尔

5.至关心体贴要供给更正的文书及其地点
/usr/src/linux/arch/x86/kernel/syscall_table_32.S
/usr/src/linux/arch/x86/include/asm/unistd_32.h
/usr/src/linux/arch/x86/kernel/sys_i386_32.c

sudo apt-get install libncurses5-dev libssl-dev  

澳门在线网址 4

6.实例
1)把sys_mySyscall增添到系统调用表
vim /usr/src/linux/arch/x86/kernel/syscall_table_32.S
................
................
.long sys_recvmmsg
.long sys_mySyscall

sudo apt-get install build-essential openssl  

image.png

2卡塔尔(قطر‎增添系统调用号到unistd.h
vim /usr/src/linux/arch/x86/include/asm/unistd_32.h
...............
...............
#define __NR_recvmmsg       337
#define __NR_mySyscall   338

sudo apt-get install zlibc minizip  

那儿使用 xz -d linux-4.13.7.tar.xz 后会生成linux-4.13.7.tar
再使用tar -xvf linux-4.13.7.tar 便得以博得解压后的源码linux-4.13.7

铭记,不忘记记将上边包车型大巴
#ifdef __KERNEL__
#define NR_syscalls 338
的值加黄金年代。

sudo apt-get install libidn11-dev libidn11

澳门在线网址 5

3卡塔尔(英语:State of Qatar)增添系统调用函数体
vim /usr/src/linux/arch/x86/kernel/sys_i386_32.c

  1. 通过git下载Linux 内核 4.11.6.

image.png

extern struct timespec xtime;

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

进去源码目录后,笔者所用过的linux系统基本上要设置nurses
使用 apt-get install libncurses5-dev 安装
我是用的是kalilinux(意气风发款渗透测量试验系统的)在开展编写翻译时开采 还索要 安装bc,使用 apt-get install bc就足以了

asmlinkage long sys_mySyscall( struct timeval * tv, struct timespec * ts)
{
struct timeval ktv;
do_gettimeofday(&ktv);
copy_to_user(tv, &ktv, sizeof(ktv));

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

接下去就是编写翻译前的清理工科作了,使用make mrproper可能是make clean 命令,第二回编写翻译的话是无需施行的,假设是败退后再也编写翻译将在实行清监护人业了,make mrproper 会清理掉残存的.config 和.o文件,make clean 会保留 .config文件,纵然您不想再一次配置.config文件 正是用make clean吧。

copy_to_user(ts, &xtime, sizeof(xtime));

澳门在线网址,sudo cd /usr/src

基本的安插职业:
使用make menuconfig命令
会并发三个分界面

return jiffies;
}

澳门唯一授权官方网,sudo tar -xvf linux-4.11.6.tar.xz

选择Device Drivers 这项

4卡塔尔国重新编写翻译内核,运维新底蕴
方法同上
5卡塔尔(英语:State of Qatar)在用户空间编写测量试验程序
#include <stdio.h>
#include <errno.h>
#include <syscall.h>
#include <sys/time.h>
#include <linux/unistd.h>
#define __NR_mySyscall 338

  1. Ubuntu安装Vim编辑器.

澳门在线网址 6

int main()
{
struct timeval v_time;
struct timespec s_time;
long jiffies;

sudo apt-get install vim

image.png

jiffies = syscall(__NR_mySyscall, &v_time, &s_time);

本文由澳门网络娱乐游戏平台发布于操作系统,转载请注明出处:澳门唯一授权官方网Linux内核中增加新的系列调用

相关阅读