循环设备(Loop Device)是将普通文件模拟为块设备的伪设备,通过losetup命令可将磁盘镜像如disk.img关联到/dev/loop0等设备,实现分区访问、格式化等操作。常用选项包括-f查找空闲设备、-P启用分区扫描、-d断开连接。例如sudo losetup -fP disk.img自动分配并扫描分区,之后可挂载/dev/loop0p1至/mnt/image;卸载时需先umount再losetup -d释放。该命令适用于ISO挂载、usb启动盘制作等场景,需root权限,依赖内核loop模块支持,功能较mount -o loop更强大,适合多分区或低级操作。

losetup 命令用于在 linux 系统中设置或管理循环设备(loop device),它能将普通文件当作块设备挂载使用,常用于创建和操作磁盘镜像。这个命令在制作可启动 USB、测试文件系统、挂载 ISO 镜像等场景中非常实用。
什么是循环设备(Loop Device)
循环设备是一种伪设备,允许将一个普通文件模拟为块设备。例如,你可以把一个 .img 或 .iso 文件通过 losetup 关联到 /dev/loop0,然后像操作真实磁盘一样对其进行分区、格式化或挂载。
Linux 内核原生支持 loop 设备,一般系统会提供多个(如 /dev/loop0 到 /dev/loop7),按需自动分配或手动指定。
基本语法与常用选项
基本语法:
losetup [选项] 循环设备 文件
常见用法和选项:
- -f, –find:查找第一个可用的 loop 设备
- -r, –read-only:以只读方式关联文件
- -P, –partscan:启用分区扫描,挂载后可访问镜像内的分区
- -d, –detach:断开指定的 loop 设备
- -a, –all:显示所有已使用的 loop 设备状态
- -j, –associated 文件路径:查看某个文件是否已绑定到 loop 设备
常见使用场景示例
1. 挂载一个磁盘镜像
假设你有一个名为 disk.img 的镜像文件,想把它挂载为 loop 设备:
sudo losetup -P /dev/loop0 disk.img
加上 -P 参数后,系统会扫描镜像中的分区,之后可通过 /dev/loop0p1、/dev/loop0p2 等访问各个分区。
2. 自动查找并分配空闲 loop 设备
sudo losetup -fP disk.img
系统会自动选择第一个可用的 loop 设备(比如 /dev/loop1),并将 disk.img 绑定上去,同时启用分区扫描。
3. 查看当前已使用的 loop 设备
losetup -a
输出类似:
/dev/loop0: [0801]:262147 (/path/to/disk.img)
4. 断开 loop 设备
sudo losetup -d /dev/loop0
解除 /dev/loop0 与对应文件的绑定。建议先卸载已挂载的分区再执行此操作。
5. 挂载镜像中的某个分区
完成 losetup 后,可以挂载具体分区:
sudo mount /dev/loop0p1 /mnt/image
之后就可以访问 /mnt/image 中的内容了。
6. 卸载并清理流程
sudo umount /mnt/image<br>sudo losetup -d /dev/loop0
顺序不能反,必须先卸载文件系统,再释放 loop 设备。
注意事项与技巧
使用 losetup 时需要注意以下几点:
- 操作需要 root 权限,多数命令前要加 sudo
- 如果镜像包含分区表(如 MBR/gpt),务必使用 -P 参数才能看到内部分区
- 避免重复绑定同一个文件到多个 loop 设备,可能导致混乱
- 某些旧系统可能默认未加载 loop 模块,可用 modprobe loop 加载
- 临时使用推荐配合 -f 自动分配,减少手动管理负担
基本上就这些。losetup 是处理本地磁盘镜像的底层工具,虽然不如 mount -o loop 直观,但功能更强大,尤其适合需要访问多个分区或进行低级操作的场景。熟练掌握后,对系统维护和嵌入式开发很有帮助。


