web-dev-qa-db-ja.com

/ dev / sr0デバイスを使用して仮想的にISOをマウントする

私はCD-ROMを仮想的にマウントする方法を研究しています。ループデバイスを使用してマウントすることだけがわかりました。

_mount -o loop disk1.iso /mount-point
_

これはかなり簡単です。

_/dev/sr0_はブロックデバイスであり、カーネル内の一部のバッファーを指し、カーネルデバイスドライバーはファイルシステムを(それが何であるかわからない場合は)そのバッファーに入れ、mountを使用するとファイルシステムをマウントします指定されたマウントポイントに。

しかし、VmwareとVirtualboxで行われているように、SCSI CD-ROMデバイス_disk1.iso_(カーネルで何も変更せずに)を使用して、選択したISO(例_/dev/sr0_)をマウントできるかどうか疑問に思っていますISOを指定すると、CD-ROMハードウェアが自動的にエミュレートされ、ISOは_/dev/sr0_デバイスを使用してマウントできますか?

ここで目にする主な問題は、_/dev/sr0/_がisoにリンクされる方法です。

7
Tejendra

ここで重要なのは、/dev/sr0がカーネルデバイスドライバーにリンクされていることです。そのデバイスドライバーは、そのノードを通じて使用可能な場合、物理CDROMへのアクセスを許可します。 VMWareとVirtualBoxはハードウェアをエミュレートするため、カーネルとデバイスドライバーはハードウェアと通信していると見なします。

/dev/sr0は、特定のバッファを直接指すのではなく、ユーザー空間プロセスがハードウェアデバイスのコンテンツにアクセスできるようにするブロックデバイスインターフェイスへのインターフェイスを提供します。

イメージをブロックデバイスとして使用できるようにする場合は、losetup...でループデバイスを使用するか、独自の交換用デバイスドライバーを作成するのが唯一の選択肢です(ただし、私はそれは今のところ実行可能なオプションではないことを期待してください。

そのイメージを/dev/sr0として利用可能にしたい場合(その場所でCDROMへのアクセスを要求するソフトウェアを偽造することについて話しているのですか?)、そのファイルを次の場所に移動できます。 /dev/sr0.moved、次に適切な/dev/loopX/dev/sr0にシンボリックリンクします。もちろん、問題のソフトウェアがCDROMデバイスにのみ適用される特別なコマンドを試行する場合、これは機能しません。それ以外の場合は問題ありません。

5
wurtel

ループマウントの代わりにcdemuを使用すると、目的の効果が得られます。 CD-ROMデバイスをエミュレートします。マウントするだけでファイルにアクセスできるようになります。また、cue/binファイルやその他の画像タイプのマウントにも使用できます。これにより、複数のトラックまたはデータ/音楽トラックの組み合わせを持つ画像をマウントできます。

2
krj