非特权访问RAW镜像文件中的文件系统

获取文件系统在镜像文件中的偏移地址

partx -s sdcard.img

输出结果示例:

$ partx -s 2024-03-15-raspios-bookworm-arm64-lite.img 
NR   START     END SECTORS SIZE NAME UUID
1    8192 1056767 1048576 512M      fb33757d-01
2 1056768 5406719 4349952 2.1G      fb33757d-02

START字段代表分区开始的offset,单位是sector

转换成bytes:

8192 * 512 = 4194304

FAT

mtools支持将文件拷贝到镜像中:

# 将file1拷贝到镜像内的FAT文件系统中
mcopy -i sdcard.img@@offset file1 ::/
# offset需要指定单位:
# 1s 一个sector
# 1M 一个MiB

例如将文件abc拷贝到上面镜像的第一个分区中:

touch abc
mcopy -i 2024-03-15-raspios-bookworm-arm64-lite.img@@8192s file1 ::/

EXT4

e2fsprogs 1.47.0 以及之后的版本中的fuse2fs加入了指定偏移的选项:

fuse2fs -o offset=Nbytes sdcard.img mountpoint

例如挂载上面的镜像的第二个分区到rootfs目录:

fuse2fs -o offset=$((1056768 * 512)) 2024-03-15-raspios-bookworm-arm64-lite.img rootfs

Last updated: 2024-08-29