使用 dd 创建的图像没有分区

使用 dd 创建的图像没有分区

我在 Acer C720P Chromebook 上安装了 Bodi。在开始升级之前,我创建了一个备份

dd if=/dev/sda1 of=/path/to/image
当然,升级出错了。我可以再次设置 chromebook,现在我尝试访问我的备份。但我无法安装映像,fdisk 告诉我没有分区

fdisk -l chromi.img
Disk chromi.img: 23.6 GB, 23623172096 bytes
255 heads, 63 sectors/track, 2872 cylinders, total 46139008 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk chromi.img doesn't contain a valid partition table

有谁能帮助我吗?

答案1

让我们先来看看哪里出了问题:

您没有备份磁盘(即 /dev/sda)。
您仅备份了一个分区。

在 ASCII 图形中:

-------------------- whole disk sda --------------------------    
[MBR]  [partition sda1]  [possible second partition sda2] ...

您的 dd 命令告诉计算机仅备份分区 /dev/sda1。
但现在您告诉 fdisk 查找 MBR,而 MBR 不在 /dev/sda1 中,因此未备份。

简而言之,fdisk 是正确的‘chromi.img 不包含有效的分区表’。


现在尝试修复此问题:

你的目标是什么:

  • 将旧映像复制回现有分区吗?
  • 还是从备份中读取旧数据?

要复制回来,您可以从某个地方启动,访问您的映像(无论它在哪里。我假设您将它存储在外部硬盘或 SD 卡上的某个地方)并反转 dd 命令以恢复到备份之前的情况。

dd of=/dev/sda1 if=/path/to/image

要安装文件系统(而不是整个磁盘)在图像中,您将:

  • 创建环回设备(例如losetup -d /dev/loop0
  • 并告诉它使用图像(losetup /dev/loop0 /path/to/image
  • 然后,您可以像安装常规设备一样安装环回设备。(例如 mount /dev/loop0 /mnt`)


供将来参考(以及其他遇到类似问题的读者):
您可能想要备份整个磁盘,包括引导记录、所有分区和空白空间。为此,您可以使用 /dev/sda(不带分区号)。您可能希望通过 gzip 或 netcat 将其堆叠起来。

可以通过使用偏移量来访问整个磁盘备份中的文件系统(例如 losetup /dev/loop0 disk.img -o NUMBER_HERE)

相关内容