对linux下loop设备的理解。

原创
2013/08/01 20:23
阅读数 5.6K
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
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部