示例镜像如下:
root@x230:/mnt# sudo losetup --find --show hd9901_debian.img
/dev/loop21
root@x230:/mnt# sudo kpartx -av /dev/loop21
add map loop21p1 (252:0): 0 8000 linear 7:21 64
add map loop21p2 (252:1): 0 8192 linear 7:21 16384
add map loop21p3 (252:2): 0 8192 linear 7:21 24576
add map loop21p4 (252:3): 0 229376 linear 7:21 32768
add map loop21p5 (252:4): 0 3669983 linear 7:21 262144
要将镜像文件及其分区挂载为可读写模式,请按以下步骤操作:
创建挂载点目录
sudo mkdir -p /mnt/{loader1,loader2,trust,boot,rootfs}
设置循环设备并映射分区
# 附加镜像到循环设备 sudo losetup --find --show hd9901_debian.img # 输出示例:/dev/loop21 # 映射GPT分区到/dev/mapper sudo kpartx -av /dev/loop21 # 输出示例: # add map loop21p1 (254:0): 0 8000 linear /dev/loop21 64 # add map loop21p2 (254:1): 0 8192 linear /dev/loop21 16384 # ...(其他分区映射)
挂载各分区
# loader1分区(3.9 MiB) sudo mount -o rw /dev/mapper/loop21p1 /mnt/loader1 # loader2分区(4.0 MiB) sudo mount -o rw /dev/mapper/loop21p2 /mnt/loader2 # trust分区(4.0 MiB) sudo mount -o rw /dev/mapper/loop21p3 /mnt/trust # boot分区(112.0 MiB) sudo mount -o rw /dev/mapper/loop21p4 /mnt/boot # rootfs分区(1.7 GiB) sudo mount -o rw /dev/mapper/loop21p5 /mnt/rootfs
验证挂载
df -Th | grep /mnt # 应显示所有已挂载分区及其文件系统类型
卸载步骤(操作完成后):
# 卸载所有分区
sudo umount /mnt/{loader1,loader2,trust,boot,rootfs}
# 移除分区映射
sudo kpartx -dv /dev/loop21
# 释放循环设备
sudo losetup -d /dev/loop21
注意事项:
- 确保使用
sudo
或root权限执行所有操作 - 修改文件后建议执行
sync
命令同步数据 如果镜像文件来自不可信来源,挂载前建议先进行文件系统检查:
sudo fsck /dev/mapper/loop21p5 # 对rootfs分区进行检查
- 要保持持久化修改,需确保镜像文件未被压缩或挂载为只读
高级技巧:
创建可写快照:
qemu-img create -f qcow2 -b hd9901_debian.img debian_writable.qcow2
之后可直接挂载
debian_writable.qcow2
进行写操作直接修改镜像内容(无需挂载):
sudo modprobe nbd max_part=16 sudo qemu-nbd --connect=/dev/nbd0 hd9901_debian.img # 现在可以直接操作/dev/nbd0p1-p5分区
评论 (0)