В чем разница между mount и mount -o loop

У меня есть iso-файл с именем ubuntu.iso .

Я могу mount его с помощью команды: mount ubuntu.iso /mnt . После монтирования я вижу это по выводу команды df -h : /dev/loop0 825M 825M 0 100% /mnt .

Однако, если я mount -o loop ubuntu.iso /mnt команду mount -o loop ubuntu.iso /mnt , я получу тот же результат.

Как я знаю, устройство loop позволяет нам просматривать iso-файл как устройство, поэтому я думаю, что именно поэтому мы добавили опцию -o loop . Но я могу посетить свой iso-файл, даже если я только mount ubuntu.iso /mnt .

Поэтому я не вижу разницы между mount -o loop mount и mount -o loop .

Обе версии используют петлевые устройства и дают одинаковый результат; короткая версия опирается на «хитрость», добавленную для mount в последние годы. mount -o loop указывает mount явно использовать устройство loop; оно оставляет само устройство петли готовым для mount , которое будет искать доступное устройство, настраивать его и использовать его. (Вы также можете указать устройство, например, с помощью mount -o loop=/dev/loop1 .)

Хитрость заключается в том, что когда предоставляется файл для монтирования, mount автоматически использует циклическое устройство для его монтирования, когда это необходимо – т.е. файловая система не указана или libblkid определяет, что файловая система поддерживается только на блочных устройствах (и следовательно, для преобразования файла в блочное устройство требуется устройство цикла.

Раздел «Устройство цикла» на странице руководства по mount содержит больше деталей

losteup устройство в основном управляется командой losteup . Так что losetup -a дает вам обзор используемых петлевых устройств и вложенных файлов. Команда mount может монтировать только блочное устройство . Устройство цикла может создать виртуальное блочное устройство из файла (символьное устройство).

На самом деле между этими командами есть большая разница, потому что в старых системах Linux mount не могло распознать файл как правильное устройство для монтирования, но в то время, когда команда монтирования была завершена с большим количеством функций, следовательно, теперь она может самостоятельно решать попытаться вызвать команду losttup и смонтировать результат. Но если вы получили весь образ диска не в формате iso, а, например, с MBR в начале, команда mount не смогла его распознать, и вам нужно найти используемый раздел (например, с помощью parted disk_image.raw unit B print ) yoursef и затем смонтировать его с полной опцией mount comman как:

 mount disk_image.raw /mntpoint/ -o loop,offset=${OFFSET_of_PARTITION} 

В этом синтаксисе устройство цикла не было указано, и предполагается, что система выбирает первое свободное ( /dev/loop0 , /dev/loop1 т. Д.). Среди других новых возможностей команды mount является то, что вам не нужно указывать тип файловой системы смонтированное блочное устройство (в вашем случае -t iso9660 ), если была установлена ​​поддержка файловой системы.

Нет разницы между mount ubuntu.iso /mnt и mount -o loop ubuntu.iso /mnt .

Первый прозрачно обрабатывается, как если бы вы использовали второй.