由于我用它将 32 GB 的 SD 卡(使用了 13 GiB)复制到 16 GB 的 SD 卡,因此我与您分享了下面的过程(适用于树莓派):我在 /dev/loop0 上丢失了一些时间......
答案1
我假设您在要复制的第一个 SD 卡上有 2 个未挂载的分区 /dev/mmcblk0p1(启动 fat16,100 MiB)和 /dev/mmcblk0p2(ext4,~31,9 GB)。
将分区复制到文件:
sudo dd bs=1M if=/dev/mmcblk0p1 of=/home/pi/file_part1 status=progress sudo dd bs=1M if=/dev/mmcblk0p2 of=/home/pi/file_part2 status=progress
调整分区大小
第一个分区是启动分区,不需要调整大小使用以下命令检查分区 ext4
e2fsck
(必须在之前完成resize2fs
):sudo e2fsck /home/pi/file_part2 sudo resize2fs /home/pi/file_part2 14G
我选择 14G 是因为我的文件系统使用了 13GiB,如果你的文件系统使用较少,请选择较小的数字)。
验证文件大小
file_part2
现在为 14 GiB(而不是 32 GB)警告和吉比字节(2^30)和千兆字节(10^9),它可以产生很大的不同:
例如,如果您有一个 15 GiB 文件系统(15 * 2^30 字节 = 16 492 674 416 640 字节),而“16 GB”的 SD 卡(16 000 000 000 字节)则无法容纳...
在第二张 SD 卡上重新创建分区表
我让你用第二张 SD 卡上的其他工具重新创建分区表,例如使用Raspberry Pi 4 上
fdisk
的安装手册:archlinux
https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4笔记:您还可以通过
dd
将第一张 SD 卡的前 200M 复制/dev/mmcblk0
到第二张 SD 卡来重新创建分区表(顺便说一下,还有启动分区)。将文件复制到第二张 SD 卡(16 GB)的分区
sudo dd bs=1M if=/home/pi/file_part1 of=/dev/mmcblk0p1 status=progress sudo dd bs=1M if=/home/pi/file_part2 of=/dev/mmcblk0p2 status=progress
在启动新的 SD 卡(在你的树莓派上)之前,挂载
/dev/mmcblk0p2
修改文件(如)/etc/fstab