最后一个分区 dd 复制失败

最后一个分区 dd 复制失败

我正在尝试将 NOOBS Raspbian 发行版的 8GB SD 卡复制到新卡。

由于某种原因,逻辑分区/dev/sdb6无法正确复制。

尝试恢复后访问fdisk /dev/sdb会出现几个警告:

  • “忽略分区表 6 中的额外数据”
  • “分区表条目未按顺序排列。”

fdisk /dev/sdb ... p以下是源 SD 卡上的输出:

Device Boot Start End Sectors Size Id Type /dev/sdb1 8192 3011718 3003527 1.4G e W95 FAT16 (LBA) /dev/sdb2 3014656 15349759 12335104 5.9G 85 Linux extended /dev/sdb3 15349760 15415295 65536 32M 83 Linux /dev/sdb5 3022848 3145727 122880 60M c W95 FAT32 (LBA) /dev/sdb6 3153920 15349759 12195840 5.8G 83 Linux

我目前的备份步骤如下......

sudo dd if=/dev/sdb of=mbr.img bs=512 count=1 sudo dd if=/dev/sdb1 bs=4M | sudo pv -tpreb /dev/sdb1 > sdb1.img sudo dd if=/dev/sdb2 bs=4M | sudo pv -tpreb /dev/sdb2 > sdb2.img sudo dd if=/dev/sdb3 bs=4M | sudo pv -tpreb /dev/sdb3 > sdb3.img sudo dd if=/dev/sdb5 bs=4M | sudo pv -tpreb /dev/sdb5 > sdb5.img sudo dd if=/dev/sdb6 bs=4M | sudo pv -tpreb /dev/sdb6 > sdb6.img

我的恢复步骤如下:

sudo dd if=mbr.img of=/dev/sdb sudo pv -tpreb sdb1.img | sudo dd bs=4M of=/dev/sdb1 sudo pv -tpreb sdb2.img | sudo dd bs=4M of=/dev/sdb2 sudo pv -tpreb sdb3.img | sudo dd bs=4M of=/dev/sdb3 sudo pv -tpreb sdb5.img | sudo dd bs=4M of=/dev/sdb5 sudo pv -tpreb sdb6.img | sudo dd bs=4M of=/dev/sdb6

不幸的是,逻辑分区的映像似乎没有复制。有人有什么想法吗?这是fdisk /dev/sdb ... p新/目标 SD 卡中的输出:

Device Boot Start End Sectors Size Id Type /dev/sdb1 8192 3011718 3003527 1.4G e W95 FAT16 (LBA) /dev/sdb2 3014656 15349759 12335104 5.9G 85 Linux extended /dev/sdb3 15349760 15415295 65536 32M 83 Linux /dev/sdb5 3022848 3145727 122880 60M c W95 FAT32 (LBA) /dev/sdb6 ? 1221850234 3381616533 2159766300 1T e1 DOS access


sdb1 - 恢复操作系统映像、NOOBS 启动文件和 initramfs

sdb2 - 任何逻辑分区

sdb3-NOOBS 设置

sdb5——Raspbian BOOT 文件

sdb6——Raspbian 文件系统

https://github.com/raspberrypi/noobs/wiki/NOOBS-partitioning-explained

答案1

您的备份和恢复步骤中存在许多错误。

  1. 该命令sudo dd if=/dev/sdb1 bs=4M | sudo pv -tpreb /dev/sdb1 > sdb1.img可能正确,也可能不正确。我没有 pv 进行测试,但根据手册,提供文件将导致它将该文件复制到标准输出。pv手册中没有指定在 stdin 上输入内容并同时提供文件。

  2. /dev/sdb2是扩展分区。它包含分区/dev/sdb5/dev/sdb6。您的恢复步骤是复制和恢复扩展分区两次。

  3. 分区映射不会在之后更新sudo dd if=mbr.img of=/dev/sdb,如果之前有不同的分区映射,则必须重新读取才能/dev/sdbX更新块设备。sfdisk --re-read /dev/sdb将会这样做。

此外,如果您的新 SD 卡标称容量为 8 GB,则其块数可能会略有不同。

请注意,/dev/sdbX块设备只是代表整个磁盘的块设备的窗口/dev/sdb。如果您想复制所有内容,那么复制整个 SD 卡的块设备会比单独复制每个分区更简单。例如sudo pv -tpreb /dev/sdb > sdb.img备份然后sudo pv -tpreb sdb.img > /dev/sdb恢复。

相关内容