крок 1. створюємо порожній файл потрібного розміру (128 мб для прикладу):
head -c 128M /dev/zero > /path/to/fileкрок 2. шукаємо першу вільну мітку пристрою (/dev/loopX):
losetup -fкрок 3. підключаємо файл file.img як пристрій (для прикладу /dev/loop1):
(sudo) losetup /dev/loop1 /path/to/file.imgкрок 4. створюємо файлову систему (ext4 для прикладу):
(sudo) mkfs.ext4 /dev/loop1крок 5. …і монтуємо пристрій куди треба (/mnt/mount_point):
(sudo) mount /dev/loop1 /mnt/mount_pointкористуємося.
коли треба відмонтувати:
(sudo) umount /dev/loop1коли треба взагалі відключити файл і звільнити мітку пристрою:
(sudo) losetup -d /dev/loop1бонус! якщо маємо файл з уже створеною файловою системою (тобто крок 4 не потрібен) — тоді кроки 2, 3 та 5 можна об’єднати, бо mount вміє це робити сам:
(sudo) mount -o loop /path/to/file.img /mnt/mount_pointще один бонус! команди для резервування місця під файл, в порядку спадання швидкості (для порівняння в дужках даю час, що знадобився на моєму ноутбуці з ssd):
- fallocate -l 128M /path/to/file (3 мс)
- dd if=/dev/zero of=/path/to/file (208 мс)
- head -c 128M /dev/zero > /path/to/file (324 мс)
очевидно, що fallocate не заповнює файл нулями, як це роблять дві інших команди, лише резервує місце (в більшости випадків цього досить).