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 1gb_virtualdisk
? 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 (--show
).
The short form of the command is:
$ sudo losetup -fLP --show 1gb_image
A possible output is:
/dev/loop0
/dev/loop0
will be a block device connected to the virtual disk and /dev/loop0pX
(where X
are integers) connect to the partitions inside the file.
Once the work is done, all the files can be deattached using -D
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.