Loopback Device: Difference between revisions

[unchecked revision][unchecked revision]
m (Device names changed.)
 
(12 intermediate revisions by 8 users not shown)
Line 1:
A Loopback Device is a mechanism used to interpret files as real devices. The main advantage of this method is that all tools used on real disks can be used with a loopback device.
 
Note: This article only covers UNIX environments (including [[Cygwin]]). For information on how to use loopback devices on Windows, see [http://wiki.osdev.org/[Windows_Tools#diskpart | diskpart]].
 
== Loopback Device under Linux==
Line 8:
=== Floppy Disk Images With GRUB and EXT2 ===
 
First, lets create aan empty image.
 
dd if=/dev/zero of=floppy.img bs=512 count=2880
Line 46:
setup (fd0)
 
NOTE: You must unmount /mnt/myfloppy before using a emulator to directly read /dev/loop0, such as.:
 
qemu -fda /dev/loop0
 
NOTE: When deleting the loop device, the original floppy.img file will be saved with the modified contents.
 
=== Floppy Disk Images With FAT16 ===
 
First, lets createCreate an empty image.
dd if=/dev/zero of=floppy.img bs=512 count=2880
 
Now, lets setSet it up for mounting.
 
losetup /dev/loop0 floppy.img
 
Now lets makeMake it MSDOS formatted.
 
mkdosfs /dev/loop0
Line 69:
 
mount -t msdos /dev/loop0 /mnt/myfloppy
 
=== Floppy Disk Images With FAT12 ===
 
The steps mentioned below will be useful for the BrokenThorn Entertainment tutorials
 
Create an empty image.
dd if=/dev/zero of=floppy.img bs=512 count=2880
 
Set it up for mounting.
 
vnconfiglosetup vn0/dev/loop0 floppy.img
 
Format it to FAT12.
 
mkdosfs -F 12 /dev/loop0
 
Mount!
mount /dev/loop0 /mnt -t msdos -o "fat=12"
 
Unmount
 
umount /mnt/myfloppy
 
Destroy loopback device
 
losetup -d /dev/loop0
 
=== Hard Disk Images ===
Line 185 ⟶ 212:
For ext2fs, use:
 
mke2fs -b1024 /dev/loop0 #blocks
 
Explanation:
Line 191 ⟶ 218:
|-
| mke2fs
| Create an ext2EXT2 filesytem
|-
| -b1024
Line 203 ⟶ 230:
|}
 
This gives us a clean ext2EXT2 formatted partition.
 
Note: mke2fs is smart enough to figure out block size and #blocks for itself, but if you ever want to use multiple partitions you'll need to know how to use those values.
Line 209 ⟶ 236:
For FAT32, use:
 
mkdosfs -F32 /dev/loop0 #blocks
 
Explanation:
Line 239 ⟶ 266:
mount -text2 /dev/loop0 /mnt/wherever
 
or:
 
mount -tvfat /dev/loop0 /mnt/wherever
 
Explanation:
{| {{Wikitable}}
mount Linux command to mount a filesystem
|-
-text2/-tvfat Filesystem being used, Linux can usually figure this out on its own.
| mount
/dev/loop0 The device representing our PARTITION
/mnt/wherever| ALinux directorycommand to mount thea partition on.filesystem
|-
| -text2 / -tvfat
-text2/-tvfat| Filesystem being used, Linux can usually figure this out on its own.
|-
| /dev/loop0
/dev/loop0| The device representing our PARTITIONpartition
|-
| /mnt/wherever
| A directory to mount the partition on.
|}
 
This should leave you with a nicely mounted partition. If you run df -Th you should end up with a line similar to:
Line 254 ⟶ 291:
/dev/loop0 vfat 492M 4.0K 492M 1% /mnt/wherever
 
...or for ext2fs...:
 
Filesystem Type Size Used Avail Use% Mounted on
Line 271 ⟶ 308:
 
Explanation:
{| {{Wikitable}}
umount Linux command to unmount a filesystem.
|-
/dev/loop0 The device that was mounted
| umount
mount| Linux command to mountunmount a filesystem.
|-
| /dev/loop0
/dev/loop0| The device that was mounted
|}
 
==== Making it Easier ====
Line 278 ⟶ 321:
One final thing to do, which is to simplify mounting and unmounting that partition.
 
Command:
Mounting:
 
mount -text2 -oloop=/dev/loop0,offset=32256 /path/to/c.img /mnt/wherever
 
Unmounting:
 
umount /path/to/c.img
 
Explanation:
 
This is essentially a combination of the losetup and mount commands we used previously when formatting the partition. If used it also means we lose access to the raw 'disk' or 'partition' through /dev/loop0.
 
See also http://www.pixelbeat.org/scripts/lomount.sh
 
Finally, if you have to mount and umount that image very frequently and you're too lazy to type the sudo password each time, just add to /etc/fstab:
 
/path/to/c.img /mnt/wherever ext2 user,loop 0 0
 
now you can just call:
 
mount /mnt/wherever
umount /mnt/wherever
 
==== The End ====
Line 298 ⟶ 347:
 
Things to remember:
losetup type command will give you the equivalent of a raw disk device (Eg /dev/hda)
losetup -o type command will give you the equivalent of a raw partition device (Eg /dev/hda1)
 
* losetup type command will give you the equivalent of a raw disk device (Eg /dev/hda)
== Loopback Device under FreeBSD ==
* losetup -o type command will give you the equivalent of a raw partition device (Eg /dev/hda1)
 
Don't forget to flush the filesystem buffers when manipulating with files on mounted disk image. On a Unix-like system, this can be simply done by executing the <tt>sync</tt> program in your shell.
FreeBSD 4.x uses vnconfig FreeBSD 5.x uses mdconfig
 
== Loopback Device under FreeBSD ==
First, use DD to create an empty floppy image (1.44mb in size)
 
FreeBSD uses mdconfig. First, use DD to create an empty floppy image (1.44 MB in size). Memdisks are allocated dynamically, and the name is displayed after the mdconfig command. This assumes that "md0" is printed.)
=== FreeBSD 4.x ===
 
dd if=/dev/zero of=floppy.img bs=512 count=2880
vnconfig vn0 floppy.img
newfs_msdos -f 1440 /dev/vn0
mount -t msdosfs /dev/vn0 /mnt/myfloppy
 
To shut and image down, unmount and unconfigure it.
 
umount /mnt/myfloppy
vnconfig -c /dev/vn0
=== FreeBSD 5.x ===
Memdisks are allocated dynamically, and the name is displayed after the mdconfig command. This assumes that "md0" is printed.)
 
To mount:
Line 342 ⟶ 377:
 
Configuring the vnd0 device:
vnconfig svnd0vnd0 /path/to/floppy.img
 
Listing configured devices:
Line 355 ⟶ 390:
Creating a FAT12 file system and then mounting the device:
newfs_msdos -F 12 -f 1440 /dev/rvnd0c
mount -t msdos /dev/svnd0ivnd0i /mnt/floppy
 
Removing the device mount and removinguninstalling the svnd0vnd0 device:
umount /mnt/floppy
vnconfig -u vnd0
Anonymous user