首页 > 编程知识 正文

linux syscall,嵌套使用if语句,其综合结果可实现

时间:2023-05-05 04:21:15 阅读:153746 作者:570

操作系统:在linux系统内核中添加系统调用,测试实验内容的实验环境实验过程1 .安装环境2 .在内核中添加系统调用3、编译内核4,安装内核5

实验内容

1、向linux系统内核添加系统调用

2、用测试程序测试该系统调用

3、使用ptrace跟踪调试测试系统调用

实验环境linux-5.11.7内核

ubuntu20.04.2.0

vmware15.0.0

实验流程1 .安装环境# sudo apt-getinstallibncurses5- dev # sudoaptinstallbuild-essential # sudo apt-getinstalllibncurses 5 sudo apt-getinstallibncurses5- dev # se sudo apt-get install bison2.无法将系统调用将下载好的内核拖入ubuntu添加到内核中,也无法拖动下载地址: www.kernel.org )

解压缩并导航到/usr/src文件夹

# sudomvlinux-5.11.7.tar.gz/usr/src # sudo tar-xvf Linux-5.11.7.tar.gz http://www.Sina.com /

# sudo CD/usr/src/Linux-5.11.7 # sudovimkernel/sys.c几种vim的用法:

I编辑内容esc开始编辑

g跳到末尾的gg的开头

:wq保存结束/检索

注:此处函数定义的某些教程使用的是asmlinkageHelloworld(void )。 在新版本的内核中,很可能会发生以下错误:

arch/x86/entry/syscall _ 64.o : (.rodata0x a78 ) : undefinedreferenceto ' _ x64 _ sys _ hello world '

第一步:增加自定义函数

# sudoviminclude/Linux/syscalls.h

第二步:声明头文件

# VI March/x86/entry/syscalls/syscall _ 64.TBL注意:如果ubuntu为32位,请更正syscall_32.tbl。 直接添加到末尾可能会错误地添加到x32。 请注意,函数名称匹配

3、编译内核sudo make cleansudo make mrproper (前两条指令都是以前编译错误的无用文件,不需要第一次,可以重新编译添加) sudo make menuconfig 否则,可能会报告错误,进入后直接exit即可) )修改配置文件

sudo vim .config删除名为CONFIG_SYSTEM_TRUSTED_KEYS的注释

sudo make -j4 (从当前的CPU内核数来看,4表示使用4个CPU。 )请尽量增加虚拟机的磁盘空间,增加等待时间(参考时间:单核3.5小时、8核1小时) ) ) )。

可能的错误:

没有创建目标“debian/canonical.certs.pem”的规则

make : * * * [ makefile :18003360 certs ]错误. 2

还注释掉. config文件中的config _ module _ SIG _ all config _ modul config _ debug _ info。 请注意,如果使用make clean和menuconfig命令,则使用后必须更改. config

4、安装内核sudomakemodules _ installsudomakeinstallsudoreboot (重新启动) sudo uname -r (查看当前内核)

如果显示相应的内核版本,则成功

可能会发生错误。 客户端操作系统中的CPU已禁用

上述问题解决方法指南: https://blog.csdn.net/fack _ youhm/article/details/90451337? UTM _ medium=distribute.PC _ relevant.none-task-blog-blogcommendfrommachinelearnpai2-2. control dist _ reques

5、编辑测试文件sudo vim test.c

sudogcctest.c-otestsudo./testsudodmesg (打印日志) )。

最后一行出现了printk的内容,成功了

6 .跟踪测试

sudo vim trace.c ptrace知识参考博客

将子流程更改为要跟踪测试的文件

打印呼叫的系统号码

335呼叫成功

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。