所谓 loop device 指的就是拿文件" name="description" />

linux下loop device的使用

发表于:2007-06-09来源:作者:点击数: 标签:
MI LY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">所谓 loop device 指的就是拿文件
MILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">所谓loop device指的就是拿文件来模拟块设备。最近在看<<Linux内核0.11(0.95)详细注释>> ( http://www.oldlinux.org/index_cn.html),对Linuxloop设备的使用琢磨了一段时间。记录如下:

Albert Woodhull语:"The Linux loop device can be used to handle this - it makes a file look like a filesystem, and the file can be defined as a byte offset from the beginning of a primary partition"

losetup  loop device block device . loop device , loop_device . loop device .  

最近在看<<Linux内核0.11(0.95)详细注释>> ( http://www.oldlinux.org/index_cn.html),对Linuxloopback设备的使用琢磨了一段时间。记录如下:

一、imag 文件的生成

1.       可以通过bochs提供的bximage.exe生成。

2.       FC3下通过命令dd if=/dev/zero of=test.img bs=512 count=524160 命令生成。

二、对生成的文件进行分区

     1、可以将生成的image文件挂载在bochs下,当作从属硬盘

          fdisk /dev/hdb 命令对硬盘分区

     2、在FC3

          losetup /dev/loop0 test.img

          fdisk /dev/loop0 不过发现在这种方式下的fdisk在保存的时候会提示参数错误。

三、创建文件系统

      测试只能在bochs下创建文件系统,无法在loopback设备上创建文件系统。

        mkfs /dev/hdb1  64000

四、Fdisk分区表显示参数(本文精华)

      normal模式下按p显示分区表,列名说明
           start       end          blocks                                   id              system

           起始磁道   终止磁道    block(1 block size=1k bytes)   分区类型id    分区类型

      其中的blocks数用于创建文件系统mkfs 所需的blocks

          如: mkfs /dev/sdb1 65015

     

      expert模式下按p显示分区表,其中

       start 列指当前分区起始sector

       size  列指当前分区所占的sectors. 1 secotr size=512 byte)

 

     如果一个loop设备含有几个文件系统(即几个分区)的话,要正确读取分区中的文件,要正确计算分区的偏移值。

     假设一个/dev/hdb1 start sector=63   size=1023

              /dev/hdb2  start sector=1086 size=2048

   具体如下:

   1mount /dev/hdb1的操作 63*512 = 32256

       losetup -o 32256  /dev/loop0 test.img

       mount -t minix /dev/loop0 /mnt

ls /mnt

umount /mnt

       losetup -d /dev/loop0

   2mount /dev/hdb2的操作 (1086*512  = 556032)

       losetup -o 556032 /dev/loop0 test.img

       mount  -t minix /dev/loop0 /mnt

ls /mnt

umount /mnt

       losetup -d  /dev/loop0   

原文转自:http://www.ltesting.net