我想向 Linux 添加系统调用,但在训练数据中我们需要更改文件linux/arch/i386/kernel/entry.S
或arch/x86/kernel/syscall_table_32.S
。我找不到文件。我找了找,但找不到,而且我没有名为 i386 的文件夹。请帮帮我。是必要的。
答案1
首先你需要 Linux 内核的源代码。你可以从这里下载内核网站或者从 Ubuntu 安装软件包linux-source
。在后一种情况下,你会发现已应用了一些来自 Ubuntu 的补丁。
通常源代码位于 下/usr/src
。如果您已在那里解压文件或安装了软件包,您将找到上面提到的树。因此,最新的内核版本有一个名为entry_32.S
和entry_64.S
在子目录中arch/x86/kernel
。后面的部分arch
有名称x86
,而不是i386
您提到的。如果要使用,i386
您应该选择低于 3.7 的内核版本,因为i386
从 3.7 开始已被删除。
答案2
entry_64.S 文件不是您需要修改的等效文件……这取决于您要做什么。如果您要向内核添加自定义系统调用,请修改文件/arch/x86/syscalls/syscall_64.tbl。