Почему нужно вообще нужна петли?

Это объясняется в Practical Unix & Internet Security как функция безопасности: uucp должен войти в систему для выполнения команд, а uucico - это оболочка с ограниченной функциональностью, с отдельным логином/паролем от обычных учетных записей.

15
18.10.2018, 00:33
4 ответа

Монтирование, как правило, должно выполняться на блочных устройствах. Драйвер цикла помещает переднюю часть блочного устройства -в ваш файл данных.

Если вы выполняете петлевое монтирование без losetup, ОС делает это в фоновом режиме.

например

$ dd if=/dev/zero of=/tmp/foo bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.0798775 s, 1.3 GB/s
$ mke2fs /tmp/foo
mke2fs 1.42.9 (28-Dec-2013)
....


$ losetup    
$ mount -o loop /tmp/foo /mnt1    
$ losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         1  0 /tmp/foo
$ umount /mnt1
$ losetup
$ 

Возможно, вам придется вызвать losetupнапрямую, если ваш образ файла содержит встроенные разделы.

например, если у меня есть это изображение:

$ fdisk -l /tmp/foo2      

Disk /tmp/foo2: 104 MB, 104857600 bytes, 204800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x1f25ff39

     Device Boot      Start         End      Blocks   Id  System
/tmp/foo2p1            2048      204799      101376   83  Linux

Я не могу установить это напрямую

$ mount -o loop /tmp/foo2 /mnt1
mount: /dev/loop0 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error

Но если я использую losetupи kpartx, то я могу получить доступ к разделам:

$ losetup -f /tmp/foo2
$ losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /tmp/foo2
$ kpartx -a /dev/loop0
$ mount /dev/mapper/loop0p1 /mnt1
$
25
27.01.2020, 19:49

Файловые системы предполагают чтение и запись на блочные устройства, но файлы изображений не являются блочными устройствами. Контурные устройства предоставляют блочное устройство поверх файла (или другое блочное устройство, опционально с переназначением ).

Во многих случаях при монтировании образов нет необходимости учитывать устройства петли, потому что mountобо всем позаботится за вас; но петлевые устройства все еще задействованы. losetup -l -aпокажет их.

См. также В чем разница между креплением и креплением -o петля .

22
27.01.2020, 19:49

Похоже, вы работаете в Linux, а Linux использует неправильное имя для этой функции.

Я изобрел эту функцию в 1988 году в SunOS -4.0 и назвал ееfbk-File emulates BlocK device.

Суть в том, что драйвер устройства эмулирует блочное устройство поверх обычного файла. Это необходимо, поскольку файловая система не может использовать обычный файл в качестве фонового хранилища для файловой системы. Ему скорее нужно блочное устройство, и это то, что fbkэмулирует.

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

11
27.01.2020, 19:49

Даже если он не нужен в фоновом режиме для монтирования файловых систем из файлов, он все равно понадобится для любой настройки с использованием драйвера или программы, которая абсолютно ожидает блочное устройство. Подумайте о nbd (сетевых блочных устройствах )серверах, драйверах составных блочных устройств, таких как mdraid, lvm и т. д....

0
27.01.2020, 19:49

Теги

Похожие вопросы