当前位置: 首页 > news >正文

操作系统实验一——向Linux 内核增加一个系统调用

向Linux 内核增加一个系统调用

实验环境: VMware虚拟机软件、Ubuntu14.04、GCC

原内核版本: 4.40-142

新编译内核版本: 2.3.36.2


一、编译、安装

1. 拷贝内核源码文件到Linux系统。
在这里插入图片描述
2.解压源码包到指定位置。
在这里插入图片描述在这里插入图片描述
3.修改源程序,增加系统调用实现。
在这里插入图片描述
在这里插入图片描述
4.修改头文件,增加系统调用声明。
在这里插入图片描述
在这里插入图片描述
5.修改系统调用表,注册系统调用。
在这里插入图片描述
在这里插入图片描述
6.编译安装内核
a、make mrproper清除内核中不稳定的目标文件,附属文件及内核配置文件

在这里插入图片描述
b.make clean清除以前生成的目标文件和其他文件
在这里插入图片描述
c.make menuconfig配置内核,采用默认的内核配置即可。
在这里插入图片描述
在这里插入图片描述
d.make
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
e.make modules_install
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
f.make install
在这里插入图片描述
在这里插入图片描述

二、测试

7.进入编译后的内核系统
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
8.在程序中调用自己添加的系统调用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、遇到的问题及解决如下:

错误1:
在这里插入图片描述
解决:安装ncurses依赖

错误2:conflicting types for ‘syscall_trace_enter’
asmregparm long syscall_trace_enter(struct pt_regs * regs)

解决:修改相关配置文件
在这里插入图片描述
错误3:gcc: 错误: elf_i386:没有那个文件或目录
make[2]: *** [arch/x86/vdso/vdso32-int80.so.dbg] 错误 1
make[1]: *** [arch/x86/vdso] 错误 2
make: *** [sub-make] 错误 2

解决:1、在内核目录arch/x86/vdso/Makefile中,大约在28,29行,把"-m elf_x86_64" 替换为 "-m64"
在这里插入图片描述
2、然后再继续找,大约在72行左右,找到VDSO_LDFLAGS_vdso32.lds = -m elf_i386 -Wl,-soname=linux-gate.so.1中的 “-m elf_i386” 替换为 "-m32"
在这里插入图片描述

错误4:drivers/net/igbvf/igbvf.h: At top level:
drivers/net/igbvf/igbvf.h:129:15: error: duplicate member ‘page’
make[3]: *** [drivers/net/igbvf/ethtool.o] 错误 1

解决:修改drivers/net/igbvf/igbvf.h中的128行内容如下:
在这里插入图片描述

http://www.xdnf.cn/news/851761.html

相关文章:

  • 电脑技巧:电脑故障维修常见的故障整理
  • Java高级_Day11(复制文件,字节缓冲流)
  • 多爪抓取机械手结构设计
  • 01通讯录管理系统——系统功能介绍
  • 如何快速上手跨境电商ERP源码开发:简单易懂的教程
  • 深入研究Android启动速度优化(上)- 看完这些启动优化已经完成80%了
  • 美国口语俚语大全
  • 【图像拼接】基于SURF算法实现图像拼接附Matlab代码
  • output_buffering详细介绍
  • 微信小程序投票系统制作过程详解
  • 简单制作 OS X Yosemite 10.10 正式版U盘USB启动安装盘方法教程 (全新安装 Mac 系统)
  • JetsonNano学习(五)JetsonNano 安装 PyTorch 及 Torchvision
  • 基于Java的基金交易网站系统设计与实现(源码+lw+部署文档+讲解等)
  • 另一个 OleDbParameterCollection 中已包含 OleDbParameter 错误分析及解决办法
  • 基于python语言的网页设计(手把手教你设计一个个人博客网站)
  • ASK,OOK,FSK,GFSK简介
  • 几个重要的电子元器件网站
  • 手写识别介绍
  • android:TableLayout表格布局详解
  • matlab usb接口编程,如何使用MATLAB进行USB2.0摄像头的编程
  • STC89C52引脚
  • 查看计算机启动项命令,启动项指令命令有哪些?教你设置电脑Windows开机启动项命令...
  • 玩机搞机---全网最详细的手机全机型 刷机教程一
  • PUBG绝地求生更新很慢、无法更新、更新不动的几个解决措施来了
  • 《Android框架揭秘》——导读
  • Windows2000、XP、2003系统万能Ghost全攻略
  • 用计算机测试生日,超准生日爱情配对测试
  • Android 1分钟教你打造酷炫的引导页(实现ViewPager淡入淡出切换)
  • Vissim4.3之API/SDK编程;Vissim编程;
  • 软件测试(接口测试、性能测试、自动化测试)详解