Linux kernel Can';t访问open/arch/x86/syscalls/syscall\u 32.tbl

Linux kernel Can';t访问open/arch/x86/syscalls/syscall\u 32.tbl,linux-kernel,system-calls,Linux Kernel,System Calls,当我在转换到内核后编写这个命令时。当我编译它时,它没有显示任何列表。是否有其他命令打开列表 open /arch/x86/syscalls/syscall_32.tbl 缺陷 从文件路径中删除第一个/字符(应该是路径) 检查文件 现在,使用file工具检查此文件是否存在: $ file arch/x86/syscalls/syscall_32.tbl 打印文件 如果文件存在,您可以使用cat或less命令打印它。例如: $ less arch/x86/syscalls/syscall_32

当我在转换到内核后编写这个命令时。当我编译它时,它没有显示任何列表。是否有其他命令打开列表

open /arch/x86/syscalls/syscall_32.tbl 
缺陷 从文件路径中删除第一个
/
字符(应该是路径)

检查文件 现在,使用
file
工具检查此文件是否存在:

$ file arch/x86/syscalls/syscall_32.tbl
打印文件 如果文件存在,您可以使用
cat
less
命令打印它。例如:

$ less arch/x86/syscalls/syscall_32.tbl
您也可以在编辑器中打开此文件,例如使用
vi
命令

如果文件不存在 此文件附带Linux内核源代码。它是在内核3.3中通过提交添加的。因此,您应该使用内核版本3.3或更高版本来创建此文件

如何使用
syscall_32.tbl
文件下载内核 从via下载vanilla主线内核源代码(使用来自的说明):

现在,您应该确定要使用哪个版本。这取决于您的任务(您计划如何进一步使用此内核)。如果打算在PC Linux发行版上使用,我建议选择与您的发行版内核最接近的版本:

$ uname -a
通过发出下一个Git命令,可以查看所有可用版本:

$ git tag
现在您可以切换到您选择的版本(在上面命令的输出中)。例如,您可以像这样切换到
v3.3

$ git checkout v3.3
切换到版本3.3或更高版本,您的内核源代码将具有
arch/x86/syscalls/syscall_32.tbl
文件:

$ less arch/x86/syscalls/syscall_32.tbl

如果文件或目录不存在,那么如何安装或创建它?请参阅下面的答案。我下载了3.3内核,但它仍然不工作,并显示任何系统调用列表。我添加了有关如何获取包含
syscall\u 32.tbl
文件的正确内核源代码的说明。3.3不可能没有
syscall\u 32.tbl
,这一定是个错误。但我建议你选择最新的版本,可能是一个<代码>v3.18将是一个不错的选择。或者,如果您想要已经有
syscall\u 32.tbl
的最低LTS版本,请使用
v3.4
$ less arch/x86/syscalls/syscall_32.tbl