【操作系统】实验四 添加系统调用

一、实验目的

学习如何产生一个系统调用,以及怎样同过往内核中增加一个新函数,从

而在内核空间中实现对用户空间的读/写。

二、实验内容

(一)部分A
添加一个新的内核系统调用,具体完成某个你希望实现的功能。
(二)部分B
重新编译内核,使你的系统调用可用。
(三)部分C
编写一个用户态的程序,验证你增加的系统调用。

三、实验步骤

(一)部分A:添加新的内核系统调用

1.开启超级管理员权限

2.进入新内核目录

3.编辑系统调用入口表

4.这里第一段系统调用号在451结束,所以我们增加的系统调用号为452,以后我们使用系统调用时需要使用452这个号码来调用。每个人的号都有可能不同,我的系统调用名为mysyscall,可以自己任意取,sys_mysyscall是接下来要添加了函数名称(以sys_开头),添加完后,点击右上方的保存,然后退出。

5.添加系统调用函数声明

6.翻到后边添加一个函数声明【注意此时的函数名 sys_mysyscall() 应与上一步在系统调用表中的添加的一致,同上保存然后退出】

7.添加系统调用的函数定义

8.使用内核函数printk()打印姓名缩写和学号,然后返回0。保存并退出。
注意:此处的打印并不是打印在终端命令行中,而是日志文件

至此完成添加新的内核系统调用。

(二)部分B:重新编译内核

注意:此处一定要拍摄虚拟机快照,方便编译内核失败时恢复到现在的状态!!
1.将源代码净化

2.查看旧内核的配置文件名

3.将此文件拷贝

4.对内核选项进行配置

5.按图配置




6.删除配置时留下的一些不用的文件

7.编译内核

8.出现报错

9.为解决错误,编辑.config文件

10.修改CONFIG_SYSTEM_TRUSTED_KEYS,将其赋空值,保存并退出
修改前
修改后
11.重新编译,遇到类似错误,将CONFIG_SYSTEM_REVOCATION_KEYS赋空值

修改前

修改后

11.再次重新编译,编译成功

12.编译内核模块

13.编译成功

14.安装内核模块

15.安装成功

16.安装拷贝镜像文件

17.安装完成,重启虚拟机

18.运行编译完成的内核

本部分完成。

(三)部分C:编写程序,验证增加的系统调用

1.编写测试C语言程序


2.编译

3.运行


返回了return 0 ,说明程序执行成功
4.查看日志文件

5.成功看到了打印信息

至此,本部分结束。

四、实验过程记录

(一)存在问题

1.内核错误
报错方式:No rule to make target ‘debian/canonical-certs.pem’, needed by ‘certs/x509_certificate_list’
解决方案:编辑.config文件,修改CONFIG_SYSTEM_TRUSTED_KEYS以及CONFIG_SYSTEM_REVOCATION_KEYS,将他们赋空值。
2.编译错误
存在问题:将printk打成了prink
解决方案:修改代码,重新编译。

(二)注意事项

1.多用快照功能
由于内核是系统最核心的部分,稍有操作不慎就会崩盘,要使用VMware的系统快照功能在每个关键节点处进行存档,如有问题及时回档拯救;
2.边做实验遍记录
完整地记录下实验流程,便于完成后复盘整理,提升自我能力;
3.注意细节
不要遗漏步骤,严格按照流程完成,避免出错。

五、参考文献

https://blog.csdn.net/hhb442/article/details/106513084
https://blog.csdn.net/zxncxy/article/details/115190538
https://blog.csdn.net/qq_36393978/article/details/118157426

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Robbi_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值