如何将文件系统复制到较小的设备

如何将文件系统复制到较小的设备

由于我用它将 32 GB 的 SD 卡(使用了 13 GiB)复制到 16 GB 的 SD 卡,因此我与您分享了下面的过程(适用于树莓派):我在 /dev/loop0 上丢失了一些时间......

答案1

我假设您在要复制的第一个 SD 卡上有 2 个未挂载的分区 /dev/mmcblk0p1(启动 fat16,100 MiB)和 /dev/mmcblk0p2(ext4,~31,9 GB)。

  1. 将分区复制到文件:

    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
    
  2. 调整分区大小

    第一个分区是启动分区,不需要调整大小使用以下命令检查分区 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 字节)则无法容纳...

  3. 在第二张 SD 卡上重新创建分区表

    我让你用第二张 SD 卡上的其他工具重新创建分区表,例如使用Raspberry Pi 4 上fdisk的安装手册:archlinuxhttps://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4

    笔记:您还可以通过dd将第一张 SD 卡的前 200M 复制/dev/mmcblk0到第二张 SD 卡来重新创建分区表(顺便说一下,还有启动分区)。

  4. 将文件复制到第二张 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
    
  5. 在启动新的 SD 卡(在你的树莓派上)之前,挂载/dev/mmcblk0p2修改文件(如)/etc/fstab

相关内容