我想要制作Linux系统的镜像。我有一张64GB的SD卡,但系统只占用11GB。 dd 命令、Win32DiskManager 等都会创建 64 GB 的原始映像,比 11 GB 大得多。
Filesystem Size Used Avail Use% Mounted on
/dev/root 59G 11G 46G 20% /
devtmpfs 430M 0 430M 0% /dev
tmpfs 462M 4.0K 462M 1% /dev/shm
tmpfs 462M 13M 450M 3% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 462M 0 462M 0% /sys/fs/cgroup
/dev/mmcblk0p1 43M 25M 18M 59% /boot
tmpfs 93M 4.0K 93M 1% /run/user/1000
我还有另一张 16 GB SD 卡,想将整个系统转移到 16 GB SD 卡上。最好是创建一个 11 GB 的 img 文件,稍后我可以在 16 GB SD 卡上刻录。
答案1
您无法将 64 GB 设备的映像写入 16 GB 卡。这与“图像”的含义直接矛盾。
但这根本不重要:Linux只关心文件系统上的文件,所以使用
sudo mksquashfs /path/where/you/mounted/your/sdcard sdcard.squashfs -comp zstd
制作所有文件、目录、符号链接、设备文件等的压缩存档,包括所有属性。
您可以稍后安装该存档,例如使用udisksctl loop-setup -f sdcard.squashfs
,或sudo mount -o loop sdcard.squashfs /mnt
查看内部,从那里获取文件等等。
您还可以通过安装和使用将所有文件恢复到新格式化的(例如 ext4、F2FS)SD 卡
sudo cp -ar /mnt/* /mount/point/of/sdcard
或者简单地通过运行
sudo unsquashfs -d /mount/point/of/sdcard sdcard.squashfs