Ранее я использовал для создания файлов изображений с помощью dd
, настроить на них файловую систему mkfs
и mount
их доступ к ним как смонтированные разделы. Позже я увидел в Интернете, что многие примеры используют losetup
заранее, чтобы сделать запись устройства петли /dev
, а затем смонтировать ее. Я не мог сказать, почему практически нужен файл изображения, чтобы он работал как устройство цикла и имел собственную /dev
запись, в то время как такое же поведение можно было бы получить без всяких хлопот.
Описание: В реальном сценарии, зачем нам вообще нужна /dev/loopX
запись, когда мы можем просто смонтировать образ fs без него? Какая польза от петлевого устройства?
mount
достаточно умен, чтобы доставить вам хлопоты. (как показывает Стивен Харрис в своем ответе)Ответы:
Монтирование, как правило, должно выполняться на блочных устройствах. Драйвер цикла помещает интерфейсный блок устройства в ваш файл данных.
Если вы делаете монтирование без цикла,
losetup
то ОС делает это в фоновом режиме.например
Вам может потребоваться позвонить
losetup
напрямую, если в вашем образе файла есть встроенные разделы.например, если у меня есть это изображение:
Я не могу установить это напрямую
Но если я использую
losetup
иkpartx
тогда я могу получить доступ к разделам:источник
losetup
, просто используйтеmount -o loop,offset=$((512*2048))
, где512
размер сектора, и2048
это то, чтоfdisk
далоStart
для раздела.losetup
иkpartx
. Пусть инструменты сделают тяжелую работу :-)Файловые системы ожидают чтения и записи на блочные устройства, но файлы изображений не являются блочными устройствами. Петлевые устройства предоставляют блочное устройство поверх файла (или другое блочное устройство, возможно с переназначением).
Во многих случаях нет необходимости учитывать петлевые устройства при монтаже изображений, потому что
mount
обо всем позаботится; но петлевые устройства все еще участвуют.losetup -l -a
покажет им.Смотрите также В чем разница между циклом mount и mount -o .
источник
mount
?mount
заботитсяlosetup
, добавляет-o loop
и т. Д.Похоже, вы работаете в Linux, и Linux использует неверное имя для этой функции.
Я изобрел эту функцию в 1988 году на SunOS-4.0, и я называю эту функцию
fbk
- файл эмулирует устройство BlocK.Фоном является то, что драйвер устройства эмулирует блочное устройство поверх простого файла. Это необходимо, поскольку файловая система не может использовать обычный файл в качестве фонового хранилища для файловой системы. Это скорее нуждается в блочном устройстве, и это - то, что
fbk
подражает.С тех пор некоторые люди сделали программу
mount
немного более умной, и есть реализации монтирования, которые автоматически создаютfbk
экземпляр для файла в случае, еслиmount
программа обнаруживает, что аргумент, который, как ожидается, будет блочным устройством, вместо этого представляется файлом плана.источник
lofi
(«loopback file»), которое работало аналогично; BSD представила их под именемvnd
(«vnode disk»), так что у концепции было много разных названий за эти годы.Даже если он не нужен в фоновом режиме для монтирования файловых систем из файлов, он все равно понадобится для любой установки, использующей драйвер или программу, которая абсолютно ожидает блочное устройство. Представьте себе серверы nbd (сетевые блочные устройства), драйверы составных блочных устройств, такие как mdraid, lvm и т. Д.
источник