我按照本指南在Linux内核"向Linux内核添加Hello系统调用“中添加了自己的自定义系统调用。
在步骤5中,它要求修改系统调用表,方法是
/usr/src/linux-headers-x.x.x-xx/arch/x86/entry/syscalls/
我使用OS版本-Ubuntu20.04.1和内核版本5.4.0-42查看了我的系统,但是特定的目录只有三个文件
Makefile
syscallhdr.sh
syscalltbl.sh
我在网上搜索,发现更新版本的Linux使用这个bash脚本syscalltbl.sh
来生成包含所有系统调用号的所需文件。所以想要运行这个文件,但由于权限问题(我是Linux的新手,所以不觉得多碰东西是个好主意)。
然后我搜索了另一个指南,因为我上面提到的指南大约有2年的历史,所以我发现这个视频教程是在4个月前创建的,叫做"将自己的系统调用添加到Linux内核“。
在这种情况下,这个家伙使用了已经存在的syscall_64.tbl
文件( .sh
文件太存在了),所以我认为这可能是我的机器上的一些问题,因为"官方GitHub储存库“还包含.tbl
文件和bash脚本。
我将内核升级到最新版本5.9.0-050900-泛型,但仍然是目录
/usr/src/linux-headers-5.9.0-050900/arch/x86/entry/syscalls
只有Makefile的bash文件。
那么,在我的系统中,究竟在哪里可以找到syscall_64.tbl
呢?
我想到的唯一一件事就是使用syscall_64.tbl
上可用的syscall_64.tbl
文件自己在上述目录中创建GitHub。但我认为这不是个好主意,可能会有风险,我对此一无所知。
发布于 2020-10-23 15:38:41
这个文件在Linux内核的源代码中。您可以为kernel.org的最新版本抓取一个tarball。
如果您想修改Linux内核,我会构建一个新内核(独立于您的主系统),并在像QEMU这样的虚拟机中运行它。您可以在互联网上找到各种指南,比如在Qemu中构建和运行最小的Linux / Busybox系统,这些指南向您展示了如何建立和运行一个小的开发环境。
https://unix.stackexchange.com/questions/616045
复制相似问题