自分のシステムコールを実装したい。 (下のリンク参照)Linuxカーネルを再コンパイルせずに自分のシステムコールを実装する方法は?
http://www.tldp.org/HOWTO/html_single/Implement-Sys-Call-Linux-2.6-i386/
しかし、新しいシステムコールを追加すると、カーネルのコンパイルが必要です。
Linuxカーネルを再コンパイルせずに私自身のシステムコールを実装する方法は?
自分のシステムコールを実装したい。 (下のリンク参照)Linuxカーネルを再コンパイルせずに自分のシステムコールを実装する方法は?
http://www.tldp.org/HOWTO/html_single/Implement-Sys-Call-Linux-2.6-i386/
しかし、新しいシステムコールを追加すると、カーネルのコンパイルが必要です。
Linuxカーネルを再コンパイルせずに私自身のシステムコールを実装する方法は?
できません。
カーネルを再コンパイルしないと、カーネルモジュールをビルドしてロードするだけで、カーネルモジュールは新しいシステムコールを追加できなくなります。
はい、できます。
要するに、実行中のカーネルにパッチを適用する必要があります。
新しいシステムコールを追加するには、少なくとも2通りの方法があります。
sys_call_table
とia32_sys_call_table
)とパッチシステムコールリミットチェック命令(x86版usally cmp
)を展開(system_call
,ia32_system_all
など)call
)にパッチを適用して、テーブルのコピーおよびパッチシステムコール制限チェック指示をポイントします。任意のシステムコールエントリ。この詳細はanwersを参照してください:
Implementing Linux System Call using LKM
How do 32-bit applications make system calls on 64-bit Linux?
:)
あなたが説明している方法は信じられないほど醜いもので安全ではありません。信じられないほど慎重でなければ、読み込まれたときにマシンがクラッシュする可能性があります。どのような状況でも、私は実動システム上でそれをしたモジュールの使用を検討しません。 – duskwuff
このメソッドに関しては、動作しますが実装は重要です。正しい実装には強いスキルが必要であり、このタスクはサッカーのためではありません:) –
まあ短いと甘いだったという。 – BoBTFish
技術的には、スペースなどの影響を受けて、カーネルモジュールを使用して、独自のシステムコールを既存のシステムコールテーブルにパッチすることができます。しかし、それは厄介で、信頼性が低く、間違いなく良いアイデアではありません。 –
技術的には、IOCTLはシステムコールです。だから、それを使ってデータをラップし、ユーザーとカーネルの土地で話すとき、なぜ新しいシステムコールを追加するのですか? – Ash