Mount

掛載iso -o loop 選擇循環設備

  • May 24, 2019

我有一個 bash 腳本,我將 ISO 掛載到循環設備:

mount -o loop my.iso /tmp/foo

碰巧同時在我的作業系統(Linux Mint 19)中,我安裝了一個 ISO 映像,使用此操作的 GUI 選項。

所以我得到了錯誤

mount: /tmp/foo: /dev/loop0 已經掛載或掛載點忙。

(…loop0 掛載點忙…)

問題:

我可以選擇掛載 ISO 的循環嗎,例如:

mount - loop3 my.iso /tmp/foo

所以我不需要解除安裝以前的ISO?

錯誤不是因為您已經安裝了另一個 ISO 設備;而是因為您已經安裝了另一個 ISO 設備。將mount -o loop始終獲得第一個未使用的循環設備或創建一個新設備。

這並不是因為同一個 ISO 映像/循環設備已經安裝在另一個目錄上——同一個設備可以同時安裝在不同的安裝點上。

您可能想要做的是在同一個掛載點上掛載相同的 ISO 兩次。該mount(8)實用程序將嘗試通過檢查支持文件是否已附加到循環設備並重新使用該設備來保護您,而不是將同一文件附加到多個循環設備。

但如果你真的想這樣做,你可以通過手動附加循環設備來繞過檢查losetup

# mount -o ro a.iso dir/

# mount -o ro a.iso dir/
mount: /tmp/a.iso is already mounted

# losetup --show -f a.iso
/dev/loop1
# mount -o ro /dev/loop1 dir/
# 

兩者結合:

# dev=$(losetup --show -f a.iso) && { mount -o ro "$dev" dir/ || losetup -d "$dev"; }

然後,您應該使用顯式-d選項umount(8),或者之後手動分離循環,使用losetup -d

# umount -d dir/

對於只讀文件系統,如 ISO,這應該是相當安全的。永遠不要將它與以讀寫模式安裝的文件系統一起使用。

引用自:https://unix.stackexchange.com/questions/520747