linux实验_添加系统调用-完整版

linux实验_添加系统调用-完整版

ID:44229518

大小:82.50 KB

页数:5页

时间:2019-10-19

linux实验_添加系统调用-完整版_第1页
linux实验_添加系统调用-完整版_第2页
linux实验_添加系统调用-完整版_第3页
linux实验_添加系统调用-完整版_第4页
linux实验_添加系统调用-完整版_第5页
资源描述:

《linux实验_添加系统调用-完整版》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验一添加一个新的系统调用一、实验目的理解操作系统内核与应用程序的接口关系;加深对内核空间和用户空间的理解;学会增加新的系统调用。二、实验内容与要求首先增加一个系统调用函数,然后连接新的系统调用,重建新的Linux内核,用新的内核启动系统,使用新的系统调用(2.4内核和2.6内核任选一个)三、实验指导(2・6版本)(1)获得源代码(本次实验的内核版本是2.6.22.5,必须是root用户)1•从教育在线上下载内核源代码到本地磁盘;保存在/usr/src目录下2.进入终端,输入命令cd/usr/src进入/usr/srcB录(可以输入Is命令会发现目录下有一个名为

2、LINUX_2_6_22_5.TAR.BZ2的压缩文件)3.当前冃录下(/usr/src)输入命令tar-xjvfLINUX_2_6_22_5.TAR.BZ2解压缩源代码,命令执行完毕后,会出现/usr/src/linux-2.6.22.5文件夹4.修改文件夹下的3个文件笫一,编辑/usr/src/linux-l(S本号/kernel/sys.c文件,添加函数:asmlinkagelongsys_mycall(longnumber){printkC'callnumberis%d^,number);retumnumber;}第二,修改/usr/src/linu

3、x-版本/include/asm-i386/unistd.h添加一行#define_NR_mycall324到当前的最大系统调用号Z后,比如原来最大的是323,在323的这一行之后加上一行#define_NR_mycall324修改#defineNR_systemcalls的值,改成原来的值+1,比如原来是324改成325第三,编辑/usr/src/linux-版本/arch/i386/kernel/syscall_table.S,在文件最后加上一行:」ongsys_mycall5.重新编译内核在终端输入命令,进入源代码文件夹,cd/usr/src/linux-

4、2.6.22.5依次执行如下命令:makemrpropermakecleanmakexconfig(自己配置内核,出现图形对话框后,直接点保存,关闭)make(耗时最长,大约20分钟)makemodules_install(安装模块)以上命令执行完毕后,会在当前目录下生成一个名为System.map的文件,会在/usr/src/linux-版木号/arch/i386/boot/下生成一个bzlmage文件。在终端执行以下命令:cp/usr/src/linux-版本号/arch/i386/boot/bzlmage/boot/vmlinuz-版本号(拷贝内核镜像)c

5、p/usr/src/linux-版本引System.map/boot/System.map-版本号(拷贝符号表)cd/boot(进入/bootU录)mkinitrdinitrd-版本号.img版本号(如mkinitrdinitrd-2.6.22.5.img2.6.22.5)(生成临时根文件)2.编辑启动配置文件grub编辑/boot/grub/grub.conf在grub.conf文件中,每一个title标签表示一个启动项,仿照第一段山le的写法,编写新内核的启动项,其+kernel和initrd使用新拷贝过来的vmlinz—版本号文件和initrd■版本号.i

6、mg文件。(可以先SZ制一段title的内容,修改title后面的启动名称,修改kernel和initrd后面指定的启动文件,如下图所示,选中的内容是修改后的)K承grub.conf(/boot/grub)・gedit文件®编辑©查看⑼搜索⑤工具①文档◎帮助®0o、3)1母月D新建打开保存打印•••橄消粘贴查找替按0*grub.confx」」J#Notethatyoudonothavetorerungrubaftermakingchangestothisfile#NOTICE:Youdonothavea/bootpartition.Thismeansthat#a

7、llkernelandinitrdpathsarerelativeto/,eg.#root(hdO,4)#kernel/boot/vmlinuz・vgrsionroroot=/dev/hda5#initrd/boot/initrdon.img#boot=/dev/hdadefault=0timeout=15splashimage=(hdO/4)/boot/grub/splash.xpm.gz#hiddenmenutitleRedHatEnterpriseLinuxServer(2.6.18-53.e!5)root(hdO,4)kernel/boot/vmlinu

8、z-2.6.18-53.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。