私はいくつかのWeb検索を行ったが、デバイスノードに関連付けられたカーネルモジュールを取得するという結果しか得られなかった。とにかく、現在のシステムのルートデバイスと、該当する場合はルートデバイスの親デバイスのメジャー番号とマイナー番号を取得できますか(たとえば、/dev/sda
は/dev/sda2
の「親」です)。カーネルはこれを取得するためにいくつかの関数をエクスポートしますか、間接的に取得する必要がありますか?カーネルモジュールでルートデバイスを取得する
答えて
デバイスノードに関連付けられているモジュールがありません。おそらく、あなたはルートディレクトリがプロセスのローカルなものであることを知っているかもしれません(プロセス構造はルートディレクトリのためのinode参照を格納します---これは特権を持つchroot(2)
システムコールで変更できます)と現在の作業ディレクトリあなたのプロセスがchroot(2)
システムコールを
なされていなかったので、あなたは
opendir("/")
してから実行します。を使用すると、ルートディレクトリの責任デバイスをお知りになりたい場合は、2つのオプションがあります)
/
で始まっていませんfstat(2)
を入力してください(または、のstat(2)
システムコールを実行することもできます)。ディレクトリ)。これにより、struct stat
のst_dev
フィールドが返されるため、ルートディレクトリが存在するデバイスが返されます。dev_t
のようにフォーマットされ、ビットの一部がメジャー番号とマイナー番号を表します。MKDEV(ma,mi)
およびMAJOR(dev)
およびMINOR(dev)
のマクロを<linux/kdev_t.h>
に定義して、メジャー番号とマイナー番号にアクセスできます。物理ディスクを取得するには、マイナー番号を0xf0
でマスクし、ディスク全体のマイナー番号を取得します。プロセスが
chroot(2)
システムコールを作成したため、システムの実際のルートディレクトリにアクセスすることができません。/proc
ファイルシステムにアクセスできる場合は、おそらくmount(1)
コマンドを呼び出してマウントテーブルを取得できます。/
エントリのテーブルを検索し、/dev/sd<disk>
エントリを取得することができます。デバイスを手に入れたら、親デバイスを手に入れるのは簡単です。最後のポイントと同じように番号をマスクして、物理ディスクのマイナー番号を取得することができます。
/proc/diskstats
ファイルには、各ブロックデバイスの統計情報が表示されます。メジャー、マイナー、およびデバイス名は、各行の最初の3つのフィールドに表示されます。
NOTE
RAIDデバイスまたはボリュームマネージャディスクとして、パーティショニングを許可dont't一部のディスクarrangementesがあります。そのような場合には、物理ディスク(または複数のディスクが存在する可能性があるため)に移動することはより困難です。
- 1. カーネルモジュールのファイルシステムマウントポイントを取得する
- 2. LinuxカーネルモジュールでCPU情報を取得する方法は?
- 3. カーネルモジュールのすべてのマウントポイントを取得する
- 4. ネットワークジッタと帯域幅を取得するためのカーネルモジュール?
- 5. ユーザスペースからLinuxカーネルモジュールのリストを取得する方法Cコード?
- 6. Linuxカーネルモジュールの作成時にユーザープロセスPIDを取得する
- 7. Android:ルートデバイスでフレームバッファ(スクリーンショット)を取得するにはどうすればよいですか?
- 8. CloudFormationが停止インスタンスからルートデバイスを取り外すこと
- 9. カーネルモジュールからローカルNICのip-addressを取得
- 10. Android非ルートデバイスでNode.jsプロジェクトを実行
- 11. EBSボリュームがルートデバイスとして読み取られています
- 12. NetFilterカーネルモジュールを4.1.23に移行 - ipヘッダを取得できません
- 13. アンドロイドデバイスをユーザーからエンジニアバージョンに切り替え、その逆も可能ですか?ルートデバイスから未ルートデバイスへ?
- 14. カーネルモジュールでのアクセス
- 15. ルートデバイス上でファイルエクスプローラを使用するには?
- 16. ルートデバイスではなくアンドロイドのシステムコールをトレースする方法は?
- 17. カーネルモジュールに秒単位でカーネルモジュールに(エポック)秒で現在の時間を取得するための標準的な方法は何
- 18. iptablesカーネルモジュールを拡張する
- 19. カーネルモジュールを分割する
- 20. カーネルモジュールでユーザースタックトレースを生成する方法
- 21. Bazelでカーネルモジュールを構築する
- 22. カーネルモジュール内のファイルディスクリプタからファイル名を取得するにはどうすればよいですか?
- 23. カーネルモジュールntとwin32kにアドレスを取得するにはどうすればよいですか?
- 24. Linuxカーネルモジュール
- 25. linuxカーネルモジュール
- 26. コンパイルエラー:カーネルモジュール
- 27. Openwrtカーネルモジュール
- 28. Zlibカーネルモジュール
- 29. 私は、「アプリケーション」という名前のインスタンスのブロックデバイス(ないルートデバイス)のボリュームIDを取得したいEC2インスタンスのブロックデバイス
- 30. カーネルモジュールの除算
これは私の質問には答えません。 – Melab