Linux挂载多分区的loop文件

生成环回文件

sudo dd if=/dev/zero of=loop.img bs=4M count=256;sync

对文件进行分区

sudo fdisk loop.img

查看分区表

sudo fdisk -lu loop.img

输出

Disk loop.img: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2c0896a8

    Device Boot      Start         End      Blocks   Id  System
loop.img1            2048     1050623      524288   83  Linux
loop.img2         1050624     2097151      523264   83  Linux

假设要挂载第个二分区

1050624 * 512 = 537919488

使用losetup

sudo losetup -f loop.img -o $((1050624 * 512 ))

#ps: losetup -o 指定偏移量 -f 使用第一个未使用的loop设备

查看使用的loop设备

sudo losetup -a

/dev/loop0: [0808]:1724 (/home/hy511/loop.img), offset 537919488

格式化磁盘

sudo mkfs.ext4 /dev/loop0

挂载设备

sudo mount /dev/loop0 /mnt

df -h 

文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1        20G  6.9G   12G   37% /
udev            3.9G  4.0K  3.9G    1% /dev
tmpfs           1.6G  1.1M  1.6G    1% /run
none            5.0M     0  5.0M    0% /run/lock
none            3.9G  900K  3.9G    1% /run/shm
/dev/sda3        50G  180M   47G    1% /disk/C
/dev/sda7        50G  180M   47G    1% /disk/E
/dev/sda2        50G   29G   19G   62% /disk/share
/dev/sda6        50G  180M   47G    1% /disk/data
/dev/sda8        68G   53G   11G   84% /home
/dev/loop0      495M   11M  460M    3% /mnt

使用file -s 查看文件属性

sudo file -s /dev/loop0

/dev/loop0: Linux rev 1.0 ext4 filesystem data, UUID=e9cdfada-f874-473a-a1a8-0ce951dd0b86 (needs journal recovery) (extents) (huge files)

移除loop设备

sudo umount /mnt

sudo losetup -d /dev/loop0 

PS: 还可以使用mount -o loop 挂载

sudo mount -t ext4 -o loop,offset=$((1050624 * 512 )) loop.img /mnt

发表评论