非特权访问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