欢迎来到天天文库
浏览记录
ID:44229518
大小:82.50 KB
页数:5页
时间:2019-10-19
《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.
此文档下载收益归作者所有