У меня есть скрипт 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?
mount
iso
loop-device
Гильермо Чаморро
источник
источник
/tmp/foo
каталог? Как насчет собственности и разрешений? Вы монтируете с правами суперпользователя (вошли какroot
или сsudo
)?/tmp/foo
- это каталог, и я запускаю скрипт какsudo
.losetup
Ответы:
Ошибка не в том, что у вас уже установлено другое устройство ISO;
mount -o loop
всегда будет получить первое неиспользуемое устройство петли или создать новую.И это не потому, что одно и то же устройство ISO / образ петли уже смонтировано в другом каталоге - одно и то же устройство может быть смонтировано в разных точках монтирования одновременно.
Вероятно, вы пытаетесь дважды смонтировать один и тот же ISO-файл в одну точку монтирования.
mount(8)
Утилита попытается защитить вас против того, проверяя , если файл Подложка уже подключен к устройству контура и повторное использование этого устройства, а не присоединять один и тот же файл на несколько устройств цикла.Но если вы действительно хотите это сделать, вы можете обойти проверку, подключив устройство петли вручную
losetup
:Два вместе взятых:
Затем вы должны использовать
-d
опциюumount(8)
явного или вручную отсоединить цикл с помощьюlosetup -d
:Это должно быть довольно безопасно с файловыми системами только для чтения, такими как ISO. Никогда не используйте его с файловыми системами, смонтированными в режиме чтения-записи.
источник
mount
утилиты. Но мне все еще интересно, как это сделать? Есть ли какой-нибудьioctl
способ обнаружить основной файл устройства петли? Что делать, если базовый файл просто меняет имя, или удаляется, или перемонтируется.loop(5)
справочную страницу. Часть этой информации также доступна через/sys/block/7:X/loop/
. Устройство цикла подключается не к записи каталога, а к файлу / индоду.mount(8)
проверяет через пару dev: inode и не будет обманут при смене имени и т. д.rename(2)
s, оно будет одураченоln
+rm
или bind mounts (точно так же, как/proc/PID/fd/FD
цели symlink).