私はこのガイドに従って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.tbl
GitHub。しかし、私はそれが良いアイデアだとは思わない。それに関連する危険があるかもしれませんが、私はそれについて何も知りません。
答え1
このファイルはLinuxカーネルのソースコードにあります。以下から最新バージョンのタールボールを入手できます。kernel.org。
Linuxカーネルを変更したい場合は(メインシステムとは別に)新しいカーネルを構築し、それをQEMUなどの仮想マシンで実行します。インターネット上で次のようなさまざまなガイドを見つけることができます。「Qemuで最小のLinux/Busyboxシステムを構築して実行する」小規模な開発環境を起動して実行する方法を示します。