Mount
為什麼 mount -o loop 返回“沒有這樣的設備”?
我想通過循環掛載 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
如this answer中所述。但是,
mount
系統呼叫的聯機幫助頁中簡明地解釋了另一個選項:ENODEV filesystemtype not configured in the kernel.
您的核心可能不支持所需的文件系統。在上面使用 CD 映像的範例中,這將是
iso9660
. 嘗試通過載入相應的模組# modprobe iso9660
並重試。如果你得到
modprobe: module iso9660 not found
了,那麼你有點不走運,因為你的核心根本不支持文件系統,也沒有簡單的方法來啟用它。您可以驗證中列出的支持的文件系統/proc/filesystems
。要使其工作,您必須重新編譯核心或至少重新編譯相應的模組(當然要匹配確切的核心版本)。PS:該模組在較新的核心中命名
isofs
,但至少對於modprobe
和朋友來說存在一個 aliasiso9660
。