




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖北大学学 生 实 验 报 告实验课程 网络实用技术 开课学院 计算机与信息工程学院任课教师 徐 婕 学生姓名 骆 婧 学生学号 20112211042100 70 专业班级 计 科 一 班 学生年级 2011级 2013-2014 学年 第二学期一 实验目的通过实验,熟悉Linux操作系统的使用,掌握构建与启动Linux内核的方法;掌握用户程序如何利用系统调用与操作系统内核实现通信的方法,加深对系统调用机制的理解;进一步掌握如何向操作系统内核增加新的系统调用的方法,以扩展操作系统的功能。二 实验内容1. Linux环境下的C或者C+编译和调试工具的使用2. 向Linux内核增加新的系统调用,系统调用的功能为打印出自己的学号和姓名信息。3. Linux新内核的编译、安装和配置。4. 编写应用程序以测试新的系统调用并输出测试结果。三、实验步骤第一步:解压文件 1.下载linux-3.13.3.tar.xz压缩包。2.在Ubantu系统下,解压该文件,解压之后得到linux-3.13.3文件包# tar xf linux-3.13.3.tar.xz 3.将解压后的文件包复制到/usr/src # cp linux3.13.3 /usr/src第二步:修改源程序,增加系统调用1. gedit /usr/src/linux-3-13.3/kernel/sys.c (增加系统调用,使用面向内核的打印函数printk打印姓名学号)使用gedit命令,可以直接在文档编辑器中直接修改。修改好后按保存关闭文档编辑器。 在开头加入头文件:#include在末尾加入函数 asmlinkage int sys_mycall(void) printk(KERN_ALERT My name is XXXX!My studentid is XXXXXXXn); return 1; 2. gedit /usr/src/linux-3-13.3/arch/x86/include/asm/syscalls.h在倒数第二行后插入asmlinkage int sys_mycall(void);3. gedit /usr/src/linux-3-13.3/arch/x86/syscalls/syscall_32.tbl 最后一行添加一个系统调用的ID 351 i386 mycall sys_mycall 第三步:编译安装内核首先进到/usr/src/linux-3.13.3文件夹下# cd /usr/src/linux-3.13.31. make mrproper(清除内核中不稳定的目标文件,附属文件及内核配置文件)2. # make menuconfig 保存设置Save并退出Exit3.# make bzImage (编译内核,大概需要20分钟,最后会出现提示:bzImage is ready。) 4#make modules(编译模块,大概需要一个多小时)5.#make modules_install(安装模块)6.#make install7 #sudo update-grub(修改启动配置文件)8.#reboot(重启系统)重启进入系统后查看当前内核版本#uname r 会显示已经编译成功的内核版本号第四步:编写测试程序并测试1.新建一个空白文档,并重新命名为test.c,写入以下函数,并保存#includeint main()syscall(354);return 0;2测试 用gcc命令编译测试文件# gcc -o test test.c#./test#dmesg(将信息打印在日志文件)三 实验体会在没有编译内核系统调用之前,我感觉老师布置的这个题目是什么意思都木有搞清楚,总感觉无从下手,也怕自己弄不好造成最后系统永不了的悲剧。但是我还是选择硬着头皮去做,通过在网上查找很多资料和教程,才对这个任务要怎么去完成才有了比较清晰的概念。当然实现的过程中也遇到了不少麻烦。1.版本选择问题首先我担心在3.13.3的版本上直接改动的话如果最后系统调用不成功,会检查不出是内核没有编译好还是测试文件有问题,所以我在网上下了好几个2.6的版本进行试验。可是最后发现每个内核版本里面的那几个需要修改的文件并不在同样的目录下面,依据版本而定。有点版本解压后甚至缺失很多子文件夹,这就让我非常零乱,但是最后通过仔询问其他同学找到了文件包完整的版本。最后的最后决定用3.13.3的版本直接做。2修改源文件问题在2.6的版本里面应该要更改kernel下的entry.S,结果改成了其他的地方的entry.S。最后导致在编译内核的过程中,在make bzImage 的时候,系统报错。类似这样的问题犯了好几次,都是文件木有找对位置就匆忙地进行修改。导致最后每次到make bzImage的时候就会报错。在3.13的版本修改源文件是也因为不仔细,把sys_mycall写成了sys_mycalls等等,最后编译过程中出现了函数没有定义等问题。3命令选择问题这其中涉及到权限问题,当把文件包移动到/usr/src之后是不能直接进到子目录里面去修改.网上给的方法是使用vim命令或者vi命令,我试了一下,发现这其实是把要修改的文件的信息显示在终端上,但是这样修改显然不直观不方便,因为在终端上想要换行,写入都不好操作,退出、保存等还需要专门的命令,后来又在网上看到了gedit命令,再试一次,发现它是把文件在文本编辑器中打开来的,这样方便好操作。改完后也能及时检查是否有误。4测试程序编写问题测试程序里面开始包含的头文件不正确,int main()里面的参数传递没有和自己在源文件里面的相互对应,syscall又写成了sysmycall,导致测试函数不能进行测试。后来对照自己写的系统调用函数和系统调用号,检查出来错误。通过这次实验,让我收获了不少东西,首先接到一个任务,不要怕麻烦,不要老想这任务有多纠结,只要多查资料,仔细理解一定会感觉越
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 19642-4:2019 EN Road vehicles - Automotive cables - Part 4: Dimensions and requirements for 30 V a.c. and 60 V d.c. single core aluminium conductor cables
- 2025至2030中国物资管理系统行业市场发展分析及竞争格局与投资发展报告
- 腹部肿瘤培训课件总结
- 多功能工培训大纲
- 白菜除虫知识培训课件
- 规范书写教案培训课件
- 实验室质量监督培训
- 调料销售培训课件
- 智慧城市规划下的公共空间设计美学与实践
- 平台在提升城市形象中的贡献
- 专题:阅读理解 30篇 中考英语高分提升之新题速递第二辑【含答案+解析】
- 企业面试题目和答案大全
- 抖音房产直播课件
- 2025至2030中国近视眼治疗仪市场竞争力剖析及企业经营形势分析报告
- 体育老师招聘试题及答案
- 自然生态探险之旅行业跨境出海项目商业计划书
- 2025年北京市高考英语试卷真题(含答案解析)
- 西藏自治区拉萨市达孜区孜县2025年七下英语期中质量检测模拟试题含答案
- 辽宁省沈阳市2023−2024学年高二下册期末考试数学试卷2附解析
- 日本所有番号分类
- 土力学与地基基础(课件)
评论
0/150
提交评论