向Linux内核增加一个系统调用_第1页
向Linux内核增加一个系统调用_第2页
向Linux内核增加一个系统调用_第3页
向Linux内核增加一个系统调用_第4页
向Linux内核增加一个系统调用_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实验一实验报告一、 基本信息:实验题目:向Linux内核增加一个系统调用完成人姓名:金威报告日期:2016年4月24日二、实验目的通过实验,熟悉Linux操作系统的使用,掌握构建与启动Linux内核的方法;掌握用户程序如何利用系统调用与操作系统内核实现通信的方法,加深对系统调用机制的理解;进一步掌握如何向操作系统内核增加新的系统调用的方法,以扩展操作系统的功能。三、实验内容1. Linux环境下的C或C+编译和调试工具的使用。2. 向Linux内核增加新的系统调用,系统调用名称和功能自行定义,但必须实现如下输出功能:“My Student No. is ,and My Name is ”。3. Linux新内核的编译、安装和配置。4. 编写应用程序以测试新的系统调用并输出测试结果。四、实验步骤 1.第一次尝试了使用Virtual Box ,但是出了一些问题,虚拟机网连不上就换了VMware workstations ,曾试过用ubuntu-10.04.4-desktop-i386和比较老版本的内核,但是过程略繁琐,且很容易出错,就更换了Ubuntu 64 15.10 来创建虚拟机。 2.我先在windows中下载了linux-4.2的内核,然后直接拖入了虚拟机中(拖入的过程有时可能会无法进行,可以对虚拟机的Vmware Tools重新安装,或者用共享文件夹的形式拖入),拖入了桌面后,我直接进行了解压,较新版本无需cp 入/usr/src中。 3.接着进入终端,sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot 获得编译内核必需,但是这个所需下载的东西太多,有1个G左右,中间可能如果网络出现故障,出现故障中断下载后我是按它的提示输入了 apt-get update更新软件环境。4. 修改 systemtable。进入解压的文件目录下,执行sudo gedit /arch/x86/entry/syscalls/syscall_64.tbl在打开文件中,在 x32specific system call 设定之前添加 323 64 mycall sys_mycall。5. 向 syscalls.h 中添加函数。Cd入/include/linux,sudo gedit ./ syscalls.h,在#endif 后添加 asmlinkage int sys_mycall(int number)。6.进入/kernel的目录,执行gedit ./ mycall.c新建一个mycall.c文件,内容如下:7. sudo gedit ./ Kconfig.mycall新建一个Kconfig.mycall文件,内容如下8修改/kernel 下的 Makefile 文件,向 obj-y 列表中添加 mycall.osudo gedit ./ Makefile9.修改Linux-4.2目录下的Makefile文件,填写EXTRAVERSION的值,为新版本的内核 名称。我填写了我的姓名的拼音.Jin10.编译内核。在cd 到linux-4.2.0所在文件夹make localmodconfig /去掉一些不需要的模块make j4/使用双核同时编译能使速度加快,同时在创建虚拟机分配内存时也多分配了些,磁盘也分配了32个Gmake j4 modules_install /编译模块11. Make install/安装内核,最后显示的就是新内核的版本号12.进入新内核测试系统。安装完后reboot后自动进入新内核,编写测试系统调用的函数,系统调用函数中的第二个参数值可变,第一个参数对应前面步骤设置的参数(由于之前没有进入root权限,之后执行系统调用时出现错误所以需要获得root权限)su root /获得权限在test.c文件目录下打开终端。gcc test.c o test /对test.c文件编译./testdemesg c /查看系统调用结果五实验体会能用新的版本就用新的版本吧,老的版本过程繁琐,而且容易出错,在老版本失败多次后,我再使用了新版本的乌班图和lin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论