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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

#include

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文件中的系统调用的内容:

这是系统调用后的结果:

统内核调用成功。

相关文档
最新文档