《Ubuntu 16.10添加系统调用》要点:
本文介绍了Ubuntu 16.10添加系统调用,希望对您有用。如果有疑问,可以联系我们。
系统挪用(System Call)是操作系统为在用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)
我们必要完成:
开发环境:
1. 在VMware Workstation上安装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
2.png
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
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
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. 重启加载内核.
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,0,9);
for(i=0;i<10;i++)
{
printf(“%d\t”,a[i]);
}
return 0;
}
15. 编译C法式:
gcc -o test test.c
./test
7.png
.调用胜利!
更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2
本文永远更新链接地址:http://www.linuxidc.com/Linux/2017-06/145161.htm
更多LINUX教程,尽在维易PHP学院专栏。欢迎交流《Ubuntu 16.10添加系统调用》!