- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux操作系统课程设计-内核的移植系统调用的添加
摘要
操作系统是用于控制和管理计算机系统内各种软硬件资源、合理有效地组织
协调计算机系统的工作流程提供友好的用户接口以方便用户使用计算机的程序
集合。
在设计报告中,第一部分介绍了内核的相关概念,在第二部分介绍了关于内核添加涉及的操作。从头至尾,完全按照个人完成该课程设计时的思路进行。其中包括遇到的一些问题,是如何解决的。由于能力有限,在本次设计中,参阅了较多书籍,电子文档。借鉴了别人的设计,并请教了别人。在设计最后,是本人在设计伊始及终的一些感受与想法。
关键字:linux命令 内核 系统调用
目 录
1、概述…………………………………………………………....…1
2、课程设计任务及要求……………………………………………1
2.1实现Linux操作系统的内核添加及系统调用…………..1
2.2添加一个简单的系统调用…………………………… .....1
2.3设计要求……………………………………….………….1
3、算法与设计结构…………………………………………………1
4、课程设计与实现
4.1流程图……………………………………………..……2
4.2程序说明……………………………………….…….…2
4.3实验结果………………………………………….….…6
5、设计总结…………………………………………………….…...7
6、参考文献…………………………………………………….…...7
概述
这次设计主要完成的工作是编写一个简单的程序,然后加载到内核中并在Linux系统内核中添加系统调用。
课程设计任务及要求
2.1实现Linux操作系统的内核添加及系统调用
本次课程设计用到的是Linux虚拟机,将Linux操作系统装在以windows 7为宿主的VMware workstation中。Linux系统为Ubuntu 11.10版。(本人机器上的Redhat版本太低,在linuxtools安装完成后,仍不能进行相关操作,因此从同学那里找来了不错的虚拟机及系统)
2.2添加一个简单的系统调用
此课程设计中添加了一个简单的字符驱动,在系统调用时,会输出一段字符“Hello hytc !”
2.3设计要求
要求在学习操作系统的基础上找出解决方案,做出合理的设计,独立完成。给出测试值,得出结果并进行解释。
算法与设计结构
系统中的调用函数的为:
Asmlinkage void sys_zlx()
{
Printk(“Hello hytc !”);
}
课程设计与实现
4.1流程图
4.2程序说明
具体步骤:
S1:下载linux系统内核,网站
下载内核版本linux-3.0.82.tar.xz
放入linux虚拟机中。
S2:添加系统调用
解压内核
将linux-3.0.82.tar.xz移至/usr/src/目录中
mv linux-3.0.82.tar.zx /usr/src/
以需要管理员身份进入/usr/src/目录
命令行输入:sudo su以获取管理员身份
然后输入密码进入root模式
开始解压:输入命令
Xz -d linux-3.0.82.tar.xz
(以.xz结尾的用xz -d +文件名 进行解压)
得到linux-3.0.82.tar文件
再输入命令 tar -xf linux-3.0.82.tar
ls一下,得到文件linux-3.0.82,(要编辑的文件)
2、系统调用添加
Cd linux-3.0.82/kernel
Gedit sys.c
打开sys.c文件进行编辑,在文末插入代码
asmlinkage int sys_zlx(){printk(KERN_EMERG hello hytc !;return 1;}保存退出。
修改指针列表
在当前目录输入 cd ../arch/x86/kernel
然后输入 gedit syscall_table_32.S
打开后,在最后加入:.long sys_zlx
gedit syscall_table_32.S??##打开syscall_table_32.S文件,在文末添加?.long sys_helloworld???
保存并退出。
输入命令:cd ../include/asm
然后输入:gedit unistd_32.h
打开后,在文末添加:#define __NR_sys_zlx 347
最后的数改成348
将下面行中的另一声明后的值由347改为348?
S3:编译内核
回到li
文档评论(0)