Penguin

Differences between current version and previous revision of LoopDevice.

Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Tuesday, May 23, 2006 11:09:22 pm by MattBrown
Older page: version 2 Last edited on Tuesday, May 23, 2006 11:52:10 am by IanMcDonald Revert
@@ -4,28 +4,56 @@
 * You have a cdrom [ISO] or other disk image, and want to access it 
 * You want to have access to a particular filesystem type 
 * You want to simulate a filesystem condition, such as low disk space, to test your software 
  
-!!Example under Linux 
+! !!Example under Linux 
 This is what I did to make sure to test that my software failed gracefully when 
 disk space ran out. 
  
-1) Create a file containing a filesystem 
+! 1. Create a file containing a filesystem 
 <pre> 
  ''create a 2 MB file with an ext2 filesystem'' 
  $ dd if=/dev/zero of=/tmp/loop.fs bs=1M count=2 
  $ mke2fs -F /tmp/loop.fs 
 </pre> 
  
-2) mount it as a loop back device (must be done as root) 
+! 2. mount it as a loop back device (must be done as root) 
 <pre> 
  ''load the loop.ko kernel module if support is not compiled into the kernel'' 
  # modprobe loop 
  ''where I want it to be mounted'' 
  # mount /tmp/loop.fs /mnt/directory -o loop 
 </pre> 
  
 Now /mnt/directory will only allow around 2MB (minus filesystem overhead) of data to be written to it, and then the device will be out of space. 
+  
+! 3. Determining Partition Offsets  
+  
+If you're trying to mount a partition of a disk image that has been created via dd(1) or similar you will likely need to specify an offset to where the partition starts in the disk image. This offset can then be passed as an option to the mount command.  
+  
+The offset can be determined by using fdisk to find out which sector the partition starts on and then multiplying that number by the sector size (which is also helpfully printed by fdisk). See the example below:  
+  
+<verbatim>  
+matt@argon:~/crcnet/ecn$ fdisk -u -l ecn-base.img  
+You must set cylinders.  
+You can do this from the extra functions menu.  
+  
+Disk ecn-base.img: 0 MB, 0 bytes  
+4 heads, 62 sectors/track, 0 cylinders, total 0 sectors  
+Units = sectors of 1 * 512 = 512 bytes  
+  
+ Device Boot Start End Blocks Id System  
+ecn-base.img1 62 250727 125333 83 Linux  
+</verbatim>  
+  
+There is one partition, starting at sector 62 which equates to offset (62*512 = 31774) which can then be mounted like so:  
+  
+<verbatim>  
+matt@argon:~/crcnet/ecn$ sudo mount -o loop,offset=31744 -t ext2 ecn-base.img img/  
+matt@argon:~/crcnet/ecn$ cd img/  
+matt@argon:~/crcnet/ecn/img$ ls  
+bin dev lib packages root tmp var  
+boot etc lost+found proc sbin usr var.tgz  
+</verbatim>  
+  
 ---- 
 CategoryDiskNotes 
-----  
-See also LoopbackMounting