Linuxではsyscall_64.tblをどこで見つけることができますか?

Linuxではsyscall_64.tblをどこで見つけることができますか?

私はこのガイドに従ってLinuxカーネルに独自のカスタムシステムコールを追加しました。LinuxカーネルへのHello Worldシステムコールの追加」。

ステップ5では、次のように入力してシス​​テムコールテーブルを変更するように要求します。

/usr/src/linux-headers-xxx-xx/arch/x86/entry/syscalls/

私のシステムを見ると、OSバージョンはUbuntu 20.04.1で、カーネルバージョンは5.4.0-42ですが、特定のディレクトリには3つのファイルしかありません。

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では、システムで正確にどこにありますか?

頭の中に浮かぶのは、上記のファイルを使って上記のディレクトリsyscall_64.tblに自分自身を作成することだけです。syscall_64.tblGitHub。しかし、私はそれが良いアイデアだとは思わない。それに関連する危険があるかもしれませんが、私はそれについて何も知りません。

答え1

このファイルはLinuxカーネルのソースコードにあります。以下から最新バージョンのタールボールを入手できます。kernel.org

Linuxカーネルを変更したい場合は(メインシステムとは別に)新しいカーネルを構築し、それをQEMUなどの仮想マシンで実行します。インターネット上で次のようなさまざまなガイドを見つけることができます。「Qemuで最小のLinux/Busyboxシステムを構築して実行する」小規模な開発環境を起動して実行する方法を示します。

関連情報