当前位置:文档之家› 操作系统概念LAB2—向Linux内核增加一个系统调用—实验报告

操作系统概念LAB2—向Linux内核增加一个系统调用—实验报告

LAB2实验报告
实验目的:1.熟悉Linux的基本命令
2.给Linux内核增加一个系统调用
实验步骤:
1.uname -a命名查看当前系统内核信息
2.分析当前内核为linux
3.13.0-66版本,所以我们下载一个接近当前的内核版本的Linux源码完成实验。

尝试sudo apt-get install linux-source,下载当前内核源码。

3.将linux-source-3.13.0.tar.bz2包解压到/usr/src/目录下,进入/usr/src/目录,ls查看当前目录文件
4.进入红色框中的文件夹,实验在该文件夹下操作
5.修改kernel/sys.c文件:
6. 设置系统调用号:修改gedit arch/x86/syscalls/syscall_32.tbl
7.添加系统调用声明到头文件:gedit include/asm-generic/syscalls.h
8. 编译新的内核
8.1 首先安装ncurses库,这个库会在之后的编译中用到
sudo apt-get install libncurses5-dev
发现系统已存在,不用继续安装
8.2 为了方便,将编译需要执行的所有内容写成批处理文件执行,写好的文件放在“/usr/src/linux-3.13.0 ”目录下
执行gedit mycall.h
保存退出。

9.编辑完成后保存,并赋给批处理文件最高的读写权限 chmod 777 mycall.sh
10. 执行编译 ./mycall.sh
11. 接下来是漫长的两个小时等待过程
12. 重启电脑, 进入已经编译完成的系统。

13. 测试新的系统调用
13.1 在新系统内核下,新建test.c文件
文件内容:
#include<stdio.h>
#include<unistd.h>
int main(){
p rintf(“%d\n”, syscall(355, 11061135));
perurn 0;
}
编译main.c, 并查看输出gcc test.c -o out 运行: ./out
14.所得到的输出为:11061135
15.查看系统的log,可以看到:
[ 30.837499] 11061135 My name is Time.long
以下是kernel/sys.c文件中的系统调用的内容:
这是系统调用后的结果:
统内核调用成功。

相关主题