Iso9600(CD)イメージのコンテンツをループ経由でマウントして、そのコンテンツにアクセスしたいと思います。そうするために私は実行します
mount -r -t iso9600 -o loop file.iso mountpoint/
そして、(既存の)ディレクトリmountpoint
の内容を期待します。ただし、mount: mounting /dev/loop0 on mountpoint/ failed: No such device
を取得します。これの考えられる理由は何ですか?
私が考えることができる複数の理由があります。おそらく、より一般的なのは、ループデバイスを備えたものが適切でないことです。たとえば、すでに使用されているループデバイスが多すぎます。ループデバイスを手動で設定することで、これが当てはまるかどうかを確認できます。
# losetup --find --show file.iso
/dev/loop0
# mount -o ro /dev/loop0 mountpoint/
...
# losetup --detach /dev/loop0
最初のコマンドが正当なループデバイス(/dev/loop*
)を出力しないが、エラーメッセージを表示する場合は、ループデバイス自体のインフラストラクチャが何らかの問題になっています。 losetup -a
にデバイスが表示されているかどうかを確認します。最大数に達する可能性があります。その場合は、モジュールのmax_loop
オプションを使用して(そして再起動して)、 この回答 で説明されているようにmknod
を使用して手動でさらに作成してみてください。
ただし、mount
システムコールのマンページで簡潔に説明されている別のオプションがあります。
ENODEV filesystemtype not configured in the kernel.
カーネルが必要なファイルシステムをサポートしていない可能性があります。上記のCDイメージを使用した例では、これはiso9660
になります。経由でそれぞれのモジュールをロードしてみてください
# modprobe iso9660
そして再試行してください。 modprobe: module iso9660 not found
を取得した場合、カーネルがファイルシステムをまったくサポートしておらず、それを有効にする簡単な方法がないため、運が悪いことになります。 /proc/filesystems
にリストされているサポートされているファイルシステムを確認できます。それを機能させるには、カーネルまたは少なくともそれぞれのモジュールを再コンパイルする必要があります(もちろん正確なカーネルバージョンと一致します)。
PS:モジュールは新しいカーネルではisofs
という名前ですが、少なくともmodprobe
とその仲間には、エイリアスiso9660
が存在します。