問題タブ [kernel-module]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux-kernel - ユーザー プログラムと Linux カーネル モジュール間の通信にはどのようなオプションがありますか?
私は Linux カーネル モジュール プログラミングの初心者です。これまで読んだ資料から、ユーザー プログラムがサービスを要求したり、Linux カーネル モジュールと通信したりする方法は 3 つあることがわかりました。
- /dev のデバイスファイル
- /proc ファイル システム内のファイル
- ioctl() 呼び出し
質問: ユーザー プログラムと Linux カーネル モジュール間の通信には、他にどのようなオプションがありますか?
c - モジュールからシステムコールを追加できますか?
モジュールからシステムコールを追加できますか?
linux - カーネルモジュールにCPU拡張機能を実装する
カーネルモジュールに特定のCPU拡張機能を実装することに関する情報を探しています。私は関連する何かを見つけました:http://www.mirrors.docunext.com/lxr/http/source/arch/mips/kernel/unaligned.c実際、それは私が見つけることができる唯一のソースコードであり、さらに近いです。
基本的に、私は特定のCPU拡張機能で構築されたバイナリのみの共有オブジェクトを持っています。これは、ほとんどの命令セットを備えた少し古いCPUで実行する必要がありますが、派手な新しいものはありません。ええ、私はそれがかなり遅くなることを知っています、しかしそれはSIGILLsでクラッシュするよりはましです。
makefile - カーネルモジュールのクロスコンパイル
Intel x86ホストでARMアーキテクチャ用のhelloworldカーネル(2.6.x)モジュールをクロスコンパイルしようとしています。
ARMのコードソースツールチェーンは次の場所にあります:/ home / ravi / worksheet / hawk / arm-2009q3
カーネルソースは次の場所にあります:/ home / ravi / worksheet / hawk / linux-omapl1
私のMakefile:
makeを実行すると、生成される.koはホストマシンの.koであり、これはmakefileがクロスコンパイラではなくネイティブコンパイラを呼び出していることを意味します。何が間違っているのでしょうか。クロスコンパイラのバイナリは私のパスにあります。
linux-kernel - PPC Linux で実行時に syscall テーブルをフックする方法は?
件名: PPC アセンブリ言語 - Linux Loadble カーネル モジュール
詳細:システムコール テーブル フックでカーネルから呼び出されたときにローカル TOC 領域 (r2) にアクセスするにはどうすればよいですか?
syscall テーブル フックを使用してシステム コールをインターセプトし、システム コールに関する情報をログに記録してから、元のハンドラにコールを渡す Linux 用のロード可能なカーネル モジュールを作成しました。これはセキュリティ製品の一部です。私のモジュールは問題なく動作し、32 ビットと 64 ビットの両方のカーネルをすべて x86 ハードウェアで実行する、多種多様な Linux カーネル バージョンとディストリビューションで実行される製品コードです。
このコードを PPC プロセッサ用の Linux で実行できるように移植しようとしていますが、いくつかの問題が発生しました。Linux カーネル ソースを使用すると、システム コール テーブルが PPC でどのように異なる方法で実装されているかを簡単に確認できます。テーブル内のエントリを、自分でコンパイルしたハンドラーの関数アドレスに置き換えることができます。問題ありません。
しかし、ここで私が問題を抱えている問題があります。PPC ABI は、CPU の R2 レジスタに格納されているテーブル オブ コンテンツ (TOC) アドレスと呼ばれるものを使用し、そのレジスタに含まれるアドレス (TOC アドレス) からのオフセットを使用して、モジュールのグローバルおよびローカル データをアドレス指定することを期待しています。これは、コンパイラーが呼び出しを行う前にモジュールの TOC アドレスをレジスターにロードすることを知っているため (または、通常、関数が独自のコードによって呼び出されるため、既にそこにあるため)、関数呼び出しが行われる通常のケースでは正常に機能します。
ただし、(実行時にロードされたカーネル モジュールから) 独自の関数のアドレスをシステム コール テーブルに配置すると、カーネルは、コンパイルされた C コードが期待するものではない R2 値でハンドラーを呼び出すため、コードが取得されます。データにアクセスできなくても制御できます。
この状況を処理する方法を示すサンプルコードを知っている人はいますか? カーネルを再コンパイルできません。これは実行時の syscall テーブル フックの簡単なケースですが、私はまだそれを理解していないか、PPC に固有の例を見つけていません。
アイデアは次のとおりです。
R2 値を保存し、レジスタにローカル TOC アドレスをロードし、コードを実行し、元のハンドラーを呼び出す前に古い値を復元するアセンブリ言語スタブを手作業でコーディングします。私にはこれを行うための PPC アセンブリの経験がありませんし、うまくいくかどうかもわかりません。
TOC を使用せずにコードを生成する魔法の gcc オプション。"-mno-toc"私の PPC6 Linux では動作しない文書化された gcc オプションがあります。システム V.4 と組み込み PowerPC のオプションのみのようです。
どんな助けでも大歓迎です!
ありがとう!
makefile - カーネル モジュール Make ファイルの問題
カーネルモジュールを構築しようとするのはこれが初めてです。以下はmakeファイルです。make コマンドの実行時。エラーが発生します
/bin/sh: 構文エラー: "(" 予期しない
make: *** [すべて] エラー 2
windows - デバイスなしのデバイス ドライバ?
いくつかのカーネル レベル モジュールを使用する必要があるアプリケーションを作成しています。そのために、アプリを 2 つに分割しました。1 つのユーザー レベル プログラムと 1 つのカーネル レベル プログラムです。
デバイス ドライバーについて読み、いくつかのチュートリアルを実行した後、私は少し混乱しました。
特定のデバイスが関連付けられていないデバイス ドライバーが存在する可能性はありますか? カーネル モードで動作するデバイス ドライバ (カーネル コードなど) 以外に何かありますか?
ウイルス対策プログラムやその他の同様のアプリケーションは、カーネル モードでどのように動作しますか? デバイスドライバーは正しい方法ですか、それとも何か不足していますか?
linux-kernel - Linuxカーネル2.6でCryptoAPIを使用する方法
私はしばらくの間探していましたが、syscallの作成/カーネルランドでLinuxに付属するCryptoAPIを使用する方法に関する十分なドキュメント/例の近くを見つけられませんでした。
誰かが良い情報源を知っているなら、私に知らせてください、私はカーネル空間内でのみSHA1/MD5とBlowfish/AESを行う方法を知りたいです。
kernel - FreeBSD で KLD を介して新しいシステム コールを作成する
カーネルローダブルモジュールを介して FreeBSD にシステムコールを追加するための優れた (エントリーレベルの) チュートリアルはありますか? 具体的には、メソッドの必要な形式、プロセスからの情報の取得などです。