In Linux everything is a file, so it is possible to use files as virtual disks with ease.
losetup comes in when you want to use one virtual disk and partition it.
losetup will read the partition table inside the file and prepare device files to use them.
dd is the simplest way to create an empty file, here is an example for 1 gigabyte image:
$ dd if=/dev/zero of=1gb_virtualdisk bs=1M count=1024
fdisk allows to make partitions inside the virtual disk:
$ fdisk 1gb_virtualdisk
Now we have a problem, how we can format the patitions
fdisk made inside
losetup can help, but it must be executed as superuser:
$ sudo losetup --find --nooverlap --partscan --show 1gb_image
This command will find (
--find) a free loop device ensuring that no backing files are shared between loop devices (
–nooverlap) and it will connect it to the file (
1gb_image). Once done,
losetup asks the kernel to scan the partitions inside the loop device (
--partscan) and finally output the name of the used loop device on the shell (
The short form of the command is:
$ sudo losetup -fLP --show 1gb_image
A possible output is:
/dev/loop0 will be a block device connected to the virtual disk and
X are integers) connect to the partitions inside the file.
Once the work is done, all the files can be deattached using
sudo losetup -D
It is also possible to use
-d /dev/loop0 to deattach a single loop device.
The main use case is to create disk images, for example for using Qemu or before burning them on a CD.