Linux

在 Linux 中哪裡可以找到 syscall_64.tbl?

  • October 23, 2020

我按照本指南在 Linux 核心中添加我自己的自定義系統呼叫“向 Linux 核心添加 Hello World 系統呼叫”。

在第 5 步,它要求修改系統呼叫表,進入

/usr/src/linux-headers-x.x.x-xx/arch/x86/entry/syscalls/

我使用作業系統版本-Ubuntu 20.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-generic,但仍然是目錄

/usr/src/linux-headers-5.9.0-050900/arch/x86/entry/syscalls

只有帶有 Makefile 的 bash 文件。

syscall_64.tbl那麼在我的系統中究竟在哪裡可以找到呢?

我唯一想到的是使用GitHub 上可用的文件syscall_64.tbl在上述目錄中創建自己。但我認為這不是一個好主意,可能存在與之相關的風險,我不知道。syscall_64.tbl

該文件位於 Linux 核心的原始碼中。您可以從kernel.org獲取最新版本的 tarball 。

如果您想嘗試修改 Linux 核心,我會通過建構一個新核心(與您的主系統分開)並在像 QEMU 這樣的虛擬機中執行它來實現。您可以在 Internet 上找到各種指南,例如“在 Qemu 中建構和執行最小的 Linux / Busybox 系統”,這些指南向您展示瞭如何啟動和執行一個小型開發環境。

引用自:https://unix.stackexchange.com/questions/616045