ディスク、パーティション、ファイルシステム用のデバイスファイルとドライバ?

ディスク、パーティション、ファイルシステム用のデバイスファイルとドライバ?

Linuxでは

  1. /dev/sdaハードディスクの場合は、ハードディスクのインタフェースタイプなどのデバイスファイルがあります。/dev/hda

    デバイスファイルがあるということは、ハードドライブのドライバが実行されているという意味ですか?

    どのデバイスドライバなのか、どうすればわかりますか?

  2. ハードドライブのパーティションに /dev/sda1または/dev/hda1

    そのデバイスファイルがあるということは、そのパーティションのドライバが実行されていることを意味しますか?

    どのデバイスドライバなのか、どうすればわかりますか?

    ディスクパーティション用のドライバはディスク用のドライバと同じですか?

  3. ハードディスクパーティションにあるファイルシステムの場合/

    ファイルシステムをマウントする前にファイルシステムドライバが実行されていませんか?

    ファイルシステムには対応するファイルシステムタイプのデバイスドライバがあるため(たとえば、Linuxにはntfsファイルシステム用のデバイスドライバがいくつかあります)、ファイルシステムはデバイスと見なされますか?

    ファイルシステムのデバイスファイルは何ですか?ファイルシステムのマウントディレクトリはファイルシステムのデバイスファイルですか?

答え1

  1. はい、/ dev / sdaなどのディスクデバイスが存在する場合は、そのディスクのドライバがロードされたことを意味します。以下を実行して正しいドライバを確認できます。

    ls -l /dev/sda

    brw-rw---- 1 ルートディスク 8, 0 Apr 8 2014 /dev/sda

この場合、メジャー番号= 8なので、カーネルソースコードからこのドライバが何であるかを検索できます。

  1. 実行中のパーティションのようなものはありません。そしてパーティションドライバはありません。パーティションは、ストレージドライバを介してアクセスされるストレージデバイスの一部です(ポイント1を参照)。

    ls -l /dev/sda1

    brw-rw---- ルートディスク 1個 8, 2014年4月8日 1日 /dev/sda1

  2. ファイルシステムの場合、正しい名前はドライバではなくカーネルモジュールです。ドライバはデバイスによって異なります。ファイルシステムにマウントされていない場合でも、モジュールをロードできます。それは独立しています。ファイルシステムにデバイスファイルがありません。

答え2

Linuxでは、ドライバー「」は、特定のハードウェアをサポートする「カーネルモジュール」と同じように使用されます。

カーネルサポートは、オプションが選択され、カーネルがソースからコンパイルされ、2つの形式(静的または動的にロードされたモジュール)で提供されるときに決定されます。 (モノリス対マイクロカーネル)

静的モジュールは、基本機能を拡張するために必要に応じてコア機能と動的モジュールをロードできるカーネルの固定部分です。

ブロックと文字デバイスの名前は、少なくともカーネルにとって重要ではありません。メジャー番号とマイナー番号は、カーネルがアクセスに使用するモジュールを示します。メジャー番号とマイナー番号の範囲は静的に割り当てられます(確認Documentation/devices.txtカーネルソースコードにリストされています)、最新のカーネルモジュールは動的メジャー/マイナー番号付けを使用します。

最初のSCSIディスクを呼び出すのは純粋に慣例ですが、/dev/sdaカーネルがアクセスする正しいモジュールを選択するために使用されるデフォルトと番号です。

ls -l /dev/sda 
brw-rw---- 1 root disk 8, 0 Apr 8 2014 /dev/sda 

たとえば、同じマジックナンバー8,0を使用して新しいデバイスを設定して、同じディスクにアクセスできます。mknod

 mknod /dev/my-first-disk b 8 0

これにより、お客様の最初の質問に対する回答に近づきました。デバイスエントリがあるということは、実行中のカーネルがそれをサポートしているという意味ですか? いいえ。mknodを使用すると、カーネルモジュールで使用/予約されていないデバイスでも、メジャー番号とマイナー番号と名前でデバイスを作成できます。

微妙な違いは、ほとんどの人が自分のデバイスを作成せずに代わりに依存するということです。ウデブこれを動的に実行します。その後、デバイス名が存在する場合、通常、一部のハードウェアが正しく識別されたことを示します。

現在ロードされている動的モジュールを表示しますlsmodが、利用可能な静的サポートにはカーネルを構築するために使用されるコンパイル時間オプションに関する知識が必要です。通常、静的サポートは常に利用/boot/config-<kernel-version>可能です。

ファイルシステムは、デバイスではなく、デバイスに格納されたバイトを使用可能なデータに変換するレイヤです。はるかにここ

関連情報