Nella maggior parte delle situazioni creeresti semplicemente un dispositivo di loopback usando "losetup" e lo monteresti usando le opzioni "-o loopback". Ma se si desidera creare un file di loopback, partizionarlo e infine montare una sottopartizione, questa opzione non può essere utilizzata. Vediamo come creare partizioni all'interno di un'immagine di loopback.
Creazione di un dispositivo di loopback
1. Per prima cosa crea un file di dimensioni intorno a 1 GB usando il comando "dd".
# dd if=/dev/zero of=loopbackfile.img bs=100M count=10 10+0 records in 10+0 records out 1048576000 bytes (1.0 GB) copied, 1.26748 s, 827 MB/s
2. Crea un dispositivo di loopback sopra il file creato nel passaggio precedente.
# losetup -fP loopbackfile.img
3. Per stampare il dispositivo loop generato utilizzando il comando precedente, utilizzare "losetup -a".
# losetup -a /dev/loop0: [64769]:4199216 (/root/loopbackfile.img)
Creazione di partizioni all'interno di un'immagine di loopback utilizzando fdisk
1. Utilizzare il comando fdisk per creare partizioni sul dispositivo di loopback /dev/loop0. Viene creata una partizione primaria di dimensioni 500 MB come mostrato di seguito.
# fdisk /dev/loop0 Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x4d455ea1. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-2047999, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-2047999, default 2047999): +500M Partition 1 of type Linux and of size 500 MiB is set
2. Salvare la tabella delle partizioni ed uscire dall'utilità fdisk.
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Creazione del filesystem e montaggio
1. Crea il filesystem ext4 sulla partizione /dev/loop0p1 creata nel passaggio precedente.
# mkfs.ext4 /dev/loop0p1 mke2fs 1.42.9 (28-Dec-2013) Discarding device blocks: done Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 128016 inodes, 512000 blocks 25600 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=34078720 63 block groups 8192 blocks per group, 8192 fragments per group 2032 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
2. Montare il filesystem nella directory desiderata.
# mkdir /loopfs # mount -o loop /dev/loop0p1 /loopfs
3. Verifica la dimensione del punto di montaggio e il tipo di filesystem.
# df -hP /loopfs Filesystem Size Used Avail Use% Mounted on /dev/loop1 477M 2.3M 445M 1% /loopfs
# mount | grep loopfs /dev/loop0p1 on /loopfs type ext4 (rw,relatime,seclabel,data=ordered)Come creare un dispositivo a blocchi virtuali (dispositivo di loop/filesystem) in Linux