loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。它能使我们像块设备一样访问一个文件。
对于.img之类的文件我们是否一定要把它刻录进光盘,然后才能用光驱读取呢?答案是否定的。在linux系统下,对于每一个硬件都会有一个文件与之对应,而为了读取光盘映像之类的文件我们则可以同过loop这个伪设备 。把一个文件链接到loop这个伪设备上,然后这个文件就能够用mount驱动起来,和使用其他的块设备没什么区别。
这些镜像文件就可以被 mount 到当前文件系统的一个目录下。
对于loop的含义我是这样理解的,对于一般的设备文件,仅仅是一个外部设备的接口。通过这个接口就可以访问到外部的设备。 而loop这个伪设备则反过来继续加载在第一层的文件系统上。相当与一个环回。
如果一个镜像文件存在linux的文件系统下,但是因为它是个镜像格式,正常方法我们是读取不了的,那么loop这个伪设备则提供了一个接口,把这个文件看作是一个特殊的块设备(在linux下硬件设备都是以文件的形式映射的) ,然后这个文件就可以挂载在目录下了。由于这个文件原来就存在linux文件系统下。我们很形象的认为它又loop回来了。 而不是真的去访问外面的真正的块硬件设备。这个有点类似一种链接,但是这种的链接过程包含了一些特殊的数据处理。
详细:/dev/loop
用dd命令创建一个文件,文件大小即为你的新设备的大小
dd if=/dev/zero of=sd1 bs=4M count=1000
要在一个目录下 mount 一个包含有磁盘镜像的文件,需要分 2 步走:
losetup /dev/loop0 disk.img #使磁盘镜像文件与循环设备连结起来
mount /dev/loop0 /home/groad/disk_test #将循环设备 mount 到目录 disk_test 下
经过上面的两个命令后,镜像文件就如同一个文件系统挂载在 disk_test 目录下,当然我们也可以往镜像里面添加文件。
其实上面的两个步骤可以写成一个步骤:
mount -t minix -o loop ./disk.img ./disk_test