循环设备是一种虚拟设备,它可以将文件映射为块设备。losetup 命令在以下场景非常有用:
losetup [选项] [循环设备] [文件]
常用形式:
losetup [选项] 循环设备 文件 - 关联循环设备和文件losetup [选项] 循环设备 - 查看或操作指定循环设备losetup [选项] - 查看所有循环设备| 选项 | 说明 |
|---|---|
-a, --all |
显示所有循环设备的状态 |
-d, --detach |
分离循环设备 |
-f, --find |
查找第一个可用的循环设备 |
-L, --show |
显示循环设备关联的文件路径 |
-o, --offset |
设置数据起始偏移量(字节) |
--sizelimit |
限制可访问的数据大小 |
-c, --set-capacity |
重新读取循环设备的大小 |
-r, --read-only |
以只读模式设置循环设备 |
-P, --partscan |
强制内核扫描分区表 |
-j, --associated |
显示与指定文件关联的所有循环设备 |
# 查看当前系统中所有循环设备的状态
sudo losetup -a
# 或者使用
sudo losetup --all
# 输出示例:
# /dev/loop0: [0030]:12345 (/path/to/image.iso)
# /dev/loop1: [0031]:67890 (/path/to/disk.img)
# 1. 创建一个空的磁盘镜像文件(100MB)
dd if=/dev/zero of=disk.img bs=1M count=100
# 2. 格式化镜像文件
mkfs.ext4 disk.img
# 3. 挂载镜像文件到循环设备
sudo losetup -f disk.img
# 4. 查看刚刚分配的循环设备
sudo losetup -a | grep disk.img
# 5. 挂载循环设备到目录
sudo mkdir /mnt/loopdisk
sudo mount /dev/loop0 /mnt/loopdisk
# 6. 查看挂载结果
df -h | grep loop
# 分离指定的循环设备
sudo losetup -d /dev/loop0
# 分离所有循环设备(注意:确保已卸载)
for loop in $(losetup -a | cut -d: -f1); do
sudo losetup -d $loop
done
# 1. 挂载ISO文件到循环设备
sudo losetup -f /path/to/ubuntu-22.04.iso
# 2. 查看分配的循环设备
sudo losetup -a
# 3. 挂载ISO到目录
sudo mount -o ro /dev/loop0 /mnt/iso
# 4. 访问ISO内容
ls /mnt/iso/
# 5. 卸载并分离
sudo umount /mnt/iso
sudo losetup -d /dev/loop0
# 当镜像文件包含多个分区时,使用-P选项自动创建分区设备
sudo losetup -fP disk_with_partitions.img
# 查看创建的分区设备
ls /dev/loop0*
# 输出:/dev/loop0 /dev/loop0p1 /dev/loop0p2 /dev/loop0p3
# 可以直接挂载分区
sudo mount /dev/loop0p1 /mnt/partition1
# 1. 创建加密容器文件
dd if=/dev/zero of=encrypted.img bs=1M count=500
# 2. 使用cryptsetup设置加密
sudo cryptsetup luksFormat encrypted.img
# 3. 打开加密容器
sudo cryptsetup open encrypted.img myencrypted
# 4. 格式化加密卷
sudo mkfs.ext4 /dev/mapper/myencrypted
# 5. 挂载加密卷
sudo mount /dev/mapper/myencrypted /mnt/encrypted
将下载的操作系统ISO镜像挂载为文件系统,无需刻录到光盘。
创建加密的文件容器,保护敏感数据的安全。
在文件中创建虚拟磁盘,用于测试文件系统操作而无需实际硬盘。
-f 选项时,系统会自动分配第一个可用的循环设备/proc/sys/kernel/max-loop 查看和修改