loop设备的使用

以下引自zh.wikipedia.org

/dev/loop(或称vnd (vnode disk)、lofi(循环文件接口))在类Unix系统中是一种伪设备,这种设备使得文件可以如同块设备一般被访问。

在使用之前,循环设备必须与现存文件系统上的文件相关联。这种关联将提供给用户一个应用程序接口,接口将允许文件视为块特殊文件(参见设备文件系统)使用。因此,如果文件中包含一个完整的文件系统,那么这个文件就能如同磁盘设备一般被挂载

用法

在目录上挂载包含文件系统的文件一般需要两步:

  1. 用一个循环设备节点连接文件。
  2. 在目录上挂载该循环设备

方法一

1
2
losetup /dev/loop0 example.img
mount /dev/loop0 /home/you/dir

方法二

1
mount -o loop example.img /home/you/dir

设备卸载

之后设备便能用下列命令实现卸载:

1
2
3
4
5
umount /home/you/dir
# 或者通过诸如 mount | grep "/home/you/dir" 
# 或是 losetup -a | grep example.img 的查找找到与文件相关联的loop设备号码
# 并执行下列命令:(<N>代表设备号)
umount /dev/loop<N> 

总结

将文件挂载为loop设备,前提是要挂载的文件内包含完整的文件系统。

实例

1
2
3
4
5
$ sudo mount -o rootfs.cramfs /mnt/ #rootfs.cramfs是自己用busybox制作的cramfs格式的根文件系统
$ ls /mnt
# 可以看到根文件系统中的内容
$ losetup -a
/dev/loop10: []: (/home/kevin/rootfs.cramfs) # 可以看到设备loop10和rootfs.cramfs文件系统绑定了

此方法可以用于调试根文件系统,以及挂载本地的iso光盘镜像

1
mount -o loop -t iso9660 /usr/local/tooldisk/mydisk4.iso  /mnt/vcdrom