我正在测试一些文件系统驱动程序代码,并希望在内核之外进行测试。最简单,最安全的方法来自用户空间。所以,我创建了一个长度一定的文件
dd if=/dev/zero of=testfs bs=10M count=50
然后我使用fdisk安装了MBR分区方案
fdisk testfs
我可以设置一个循环设备以块仿真模式访问我的文件:
$ losetup /dev/loop0 testfs
此时,我可以在设备列表中看到这个新的模拟块设备:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 46G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 4G 0 part [SWAP]
sr0 11:0 1 55.2M 0 rom
loop0 7:0 0 50M 0 loop
并且该设备具有以下分区表
$ fdisk -l /dev/loop0
Disk /dev/loop0: 52 MB, 52428800 bytes
96 heads, 25 sectors/track, 42 cylinders, total 102400 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: 0xe7d5af9a
Device Boot Start End Blocks Id System
/dev/loop0p1 * 2048 102399 50176 7 HPFS/NTFS/exFAT
但是,要创建fileyststem,我需要安装分区,而不是“磁盘”。循环系统是否不会像其他块设备那样自动安装设备的分区?我能够通过将文件通过循环以偏移量安装来创建文件系统
$ losetup -o $((2048*512)) /dev/loop0 testfs
但是此解决方案并不理想,因为其行为与实际的块设备略有不同。通过循环设备执行操作时,是否可以“自动挂载”分区?