作业2-添加系统调用

作业2-添加系统调用

ID:14214041

大小:41.50 KB

页数:5页

时间:2018-07-26

作业2-添加系统调用_第1页
作业2-添加系统调用_第2页
作业2-添加系统调用_第3页
作业2-添加系统调用_第4页
作业2-添加系统调用_第5页
资源描述:

《作业2-添加系统调用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1、下载内核apt-getinstalllinux-source在/usr/src下2、解压内核cd/usr/srctar-jxvflinux-source-2.6.35.tar.bz2将内核解压到/usr/src3、修改文件a)/usr/src/linux-source-2.6.35/kernel/sys.c可以用右键管理员打开或者gedit/usr/src/linux-source-2.6.35/kernel/sys.c在文件最后添加asmlinkageintsys_mycall(intnumber){printk("这

2、是我添加的第一个系统调用");returnnumber;}asmlinkageintsys_addtotal(intnumber){inti=0,enddate=0;printk("这是我添加的第二个系统调用");while(i<=number)enddate+=i++;returnenddate;}asmlinkageintsys_three(){printk("这是我添加的第三个系统调用");return0;}b)/usr/src/linux-source-2.6.35/arch/x86/kernel/syscall_t

3、able_32.S可以用右键管理员打开或者gedit/usr/src/linux-source-2.6.35/arch/x86/kernel/syscall_table_32.S然后在一列.longsys_XXXX的下一行添加.longsys_mycall.longsys_addtotal.longsys_three并记住他们分别是第几个.longsys_XXXXc)/usr/src/linux-source-2.6.35/arch/x86/include/asm/unistd_32.h可以用右键管理员打开或者gedit/u

4、sr/src/linux-source-2.6.35/arch/x86/include/asm/unistd_32.h在一列#define__NR_XXXXNNN后添加几行#define__NR_mycall338#define__NR_addtotal339#define__NR_three340注意后面那个数字是接着上面那几行下来的d)/usr/src/linux-source-2.6.35/ubuntu/omnibook/Makefile如果在后面编译模块时出现ld:/ubuntu/omnibook/sections.

5、lds:Nosuchfile:Nosuchfileordirectorymake[2]:***[ubuntu/omnibook/omnibook.o]Error1make[1]:***[ubuntu/omnibook]Error2make:***[ubuntu]Error2以上错误,则需要修改,不过我建议还是先改了再说可以用右键管理员打开或者gedit/usr/src/linux-source-2.6.35/ubuntu/omnibook/Makefile找到下面两行#EXTRA_LDFLAGS+=$(src)/sectio

6、ns.ldsEXTRA_LDFLAGS+=$(PWD)/ubuntu/omnibook/sections.lds调换一下‘#’的位置,如下EXTRA_LDFLAGS+=$(src)/sections.lds#EXTRA_LDFLAGS+=$(PWD)/ubuntu/omnibook/sections.lds4、编译内核进入解压目录cd/usr/src/linux-source-2.6.35a)makemrproper//清除内核中不稳定的目标文件,附属文件及内核配置文件b)makeclean//清除以前生成的目标文件和其他文

7、件c)makeoldconfig//采用默认的内核配置,如果这里出现选项,选择默认的选项,就是方括号内的第一个字母,不过我这里没出现选项d)makebzImage//编译内核,大概需要半小时e)makemodules//编译模块,大概需要两小时,如果出现错误,看看是不是因为上面的第3步的d)没做f)makemodules_install//安装模块,比较快5、复制内核首先查看一下编译好的内核版本,以便命名打开/lib/modules里面应该多了一个纯数字不带"generic"的文件夹,那就是新内核版本号,我的是2.6.35.

8、11然后复制内核cp/usr/src/linux-source-x.x.x/arch/i386/boot/bzImage/boot/vmlinuz-x.x.x-mykernel6、创建initrd文件在创建之前先安装必要的程序apt-getinstallbootcd-mkinitramfs

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

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

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