問題タブ [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 - 実行中の Linux でデバイスを制御する (カーネル モジュールでコンパイルされた) デバイス ドライバがあるかどうかを知るにはどうすればよいですか?
実行中の Linux でデバイスがサポートされているかどうか、サポートされている場合はどのデバイス ドライバーがそれを制御しているかを知るにはどうすればよいですか? たとえばlspci
、サーバー (PowerEdge 2900) では次のようになります。
どうすれば見つけられますか:
- どのデバイス ドライバ (カーネル モジュール) が各デバイスを制御しますか?
- (モジュールとしてではなく) カーネルでコンパイルされたデバイス ドライバーによって制御されるデバイス
- デバイス ドライバー (コンパイル済みまたはモジュールとして) を持たないデバイスはどれですか?
このスクリプト (「Linux Kernel in a Nutshell」の別のスクリプトから適応) は、#1 を部分的に解決します。
しかし、それにはいくつかの問題があります:
に変換する 自動 化された方法がわかりません
/sys/devices/pci0000:00/0000:00:1e.0/0000:10:0d.0 --> pci:v00001002d0000515Esv00001028sd000001B1bc03sc00i00
10:0d.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02)
場合によっては、デバイスが MB の内部にあり、デバイスの実際の名前を見つける方法さえわかりません。例えば:
などなど。
- デバイス ドライバーがコンパイルされている(または存在しない) 場合、応答は
FATAL: Module _XXXX_ not found.
Indating there is no module for the device です。
場合によっては、ドライバーは (例) でコンパイルされます。
それ以外の場合は、ドライバーが存在しないだけです。しかし、私は違いを見分ける方法を知りません。
誰か知っていますか?
kernel - 自分のモジュールを見つけるために modprobe を設定するにはどうすればよいですか?
起動時にカーネルモジュールをロードしようとしています。
を実行するinsmod /path/to/module.ko
と、正常に動作します。ただし、再起動するたびにこれを繰り返す必要があります。
を実行するmodprobe /path/to/module.ko
と、モジュールが見つかりません。modprobe が構成ファイルを使用することは知っていますが、/path/to/module.ko を /etc/modules に追加した後でもモジュールをロードできません。
適切な構成は何ですか?
file-io - Linux カーネル モジュールでのファイル I/O
ファイルを開いて読み取る必要がある Linux カーネル モジュールを作成しています。それを達成するための最良の方法は何ですか?
c - Linux カーネル プログラミング: 「カーネル NULL ポインターの逆参照を処理できません」
私はLinuxモジュールを書いていて、以下を取得しています:
どういう意味ですか?
linux - Linuxカーネルモジュールを使用しているものを把握する方法はありますか?
カーネル モジュールをロードし、ロードされたモジュールを で一覧表示すると、モジュールlsmod
の「使用回数」(モジュールへの参照を持つ他のモジュールの数) を取得できます。しかし、モジュールを使用しているものを把握する方法はありますか?
問題は、私が開発しているモジュールがその使用カウントが 1 であると主張しているためrmmod
、それをアンロードするために使用できないが、その「by」列が空であることです。これは、モジュールを再コンパイルして再ロードするたびに、マシンを再起動する必要があることを意味します (または、少なくとも、それをアンロードする他の方法がわかりません)。
linux - LKMを介してシステムコールを追加することは可能ですか?
LKMを介して新しいシステムコールを追加したいのですが、その方法がわかりません。つまり、まったく新しいシステムコールを追加したい場合は、sys_call_tableを調べて、を見つけてsys_ni_syscall
置き換えることができますが、実際にに追加できるかどうか知りたいと思いましたsys_call_table
。固定サイズの配列であるため、おそらく不可能だと思いますが、未使用のシステムコール番号を上書きせずにシステムコールを追加する他の賢い方法があるかどうか疑問に思いました。
linux - カーネルとユーザー アプリ間の通信方法
一般に、Linux プログラミングは初めてです。
共有メモリ経由でカーネル モジュールと通信しようとしていますが、shmget() などのユーザー アプリで使用される関数を呼び出すことができません。kernel-headers と kernel-devel をインストールし、カーネル モジュール ソースに を含めましたが、ヘッダーには関数が含まれていません。
カーネルで共有メモリを使用する標準的な方法はありますか?
また、同じ状況でソケットを使用する方法に関するヒントは非常に役立ちます。
使用ディストリビューション: CentOS 5.2 カーネル: 2.6.18-92.1.22.e15
前もって感謝します。
//追加// 明確にするために、典型的な組み込み Linux プロジェクトの共通機能を備えたデモを作成しようとしています。最終的な目標は、それを LynxOS に移植して、大規模なプロジェクトで移植するとどのような問題が発生するかを確認することです。
現在、デモの主な機能は、マルチプロセス、パイプ、メッセージ キュー、共有メモリ、ソケット、マルチスレッドです。
これには、相互に通信するユーザー アプリとロード可能なカーネル モジュールがあります。ユーザー アプリ内の 2 つのプロセス間のパイプとメッセージ、およびユーザー アプリとカーネル モジュール間の共有メモリとソケット。
コース外で単純なことをしている場合は、教えてください。
linux-kernel - /proc/driver の下に proc エントリを作成するには?
ディレクトリ配下にファイルを作成したい/proc/driver
。「driver/MODULE_NAME」を明示的に使用するのではなく、マクロproc_root_driver
(または提供されているもの) を使用したいと思います。私は使用しますcreate_proc_entry
:
グーグルで調べたところ、使用する提案が見つかりましproc_root_driver
たが、使用するとエラーが発生します
この関数で宣言されていない proc_root_driver
また、proc_root_driver
linux/proc_fs.h では利用できません。
私はこのような構造を宣言しようとしました:
/proc/driver
コンパイル エラーはなくなりましたが、ファイルがまたはの下に表示されませんでした/proc
。でエントリを作成するにはどうすればよい/proc
ですか?
c++ - Linux カーネル モジュール リンカの警告: "*** 警告:[] undefined!" - それらを取り除く方法はありますか?
相互に依存する Linux カーネル モジュールのコンパイル中に、リンカは未定義のシンボルの警告を表示します。
モジュールが insmod または modprobe を使用してカーネルに挿入されるとすぐに、未解決のシンボルが解決されます。ただし、リンカーの警告を取り除く方法はありますか?
この問題に関する 3 つの Google SERP を読みましたが、誰も答えを知らないようです。これらのリンカー警告は、カーネル モジュールをビルドするときにこのようになるはずですか?
open-source - SANOS オペレーティング システム カーネルの使用経験はありますか?
オープン ソース カーネルをブラウジングしていたときに、SANOSに出くわしました。これは、オープン ソースとして存続させる価値のあるもののように感じます。最新の標準に合わせるには、次の機能強化が必要です。
- 複数の CPU/コアのサポート
- IPv6 を追加 (現在は IPv4 のみをサポート)
- 8192 の同時スレッドを実行する機能
- JDK 1.6 に必要な追加のエミュレーションをサポートする機能
そこで、次の質問があります。
- サノスを使って共有したい経験を持っている人はいますか?
- より良いものにするために時間を提供したい人を引き付ける最も適切な方法は何ですか?
- BSD や Linux で使用されているカーネルよりも優れている点は何ですか?
- このプラットフォームに Ruby を移植するメリットはありますか?