web-dev-qa-db-ja.com

mount -oループが「そのようなデバイスはありません」を返すのはなぜですか?

Iso9600(CD)イメージのコンテンツをループ経由でマウントして、そのコンテンツにアクセスしたいと思います。そうするために私は実行します

mount -r -t iso9600 -o loop file.iso mountpoint/

そして、(既存の)ディレクトリmountpointの内容を期待します。ただし、mount: mounting /dev/loop0 on mountpoint/ failed: No such deviceを取得します。これの考えられる理由は何ですか?

2
stefanct

私が考えることができる複数の理由があります。おそらく、より一般的なのは、ループデバイスを備えたものが適切でないことです。たとえば、すでに使用されているループデバイスが多すぎます。ループデバイスを手動で設定することで、これが当てはまるかどうかを確認できます。

# 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が存在します。

0
stefanct