我可以从完整驱动器映像安装分区吗?

我可以从完整驱动器映像安装分区吗?

注意:虽然我同意这个问题基本上是上述问题的重复,但我觉得@alienth的答案(如下)更简洁,所以我建议您在讨论另一个问题之前先看一下它。

我定期将整个 ubuntu 系统驱动器备份/映像/克隆到另一个驱动器:

dd if=/dev/sda of=/media/disk1/backup.iso

当我需要在实验、驱动器故障等之后恢复驱动器时,它非常有用。

不过,我现在想从该 .iso 中安装一个分区(即当我添加驱动器时 /dev/sda1)。如果我备份:

dd if=/dev/sda1 of=/media/disk1/backup.iso

那么可以使用 ubuntu 的安装卷实用程序轻松安装 .iso。但该实用程序不适用于整个驱动器的 iso。有没有办法从原始iso挂载sda1?

答案1

您需要确定分区在磁盘映像中的起始位置。为此,请运行以下命令:

sudo parted /media/disk1/backup.iso unit s print

输出将如下所示:

Model:  (file)
Disk /tmp/file: 200000s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End      Size     Type     File system  Flags
 1      2048s  199999s  197952s  primary

您需要获取逻辑扇区大小并将其乘以Start要安装的分区的大小。在这种情况下,如果我想挂载第一个分区,位置将是2048 * 512, 或1048576

然后,您可以使用环回设置挂载分区,将上面确定的值插入到参数中offset

mount -o loop,offset=1048576 /media/disk1/backup.iso /mnt/mydisk

答案2

有一种方法可以查看全磁盘映像中的分区表。事实上,两个。

第一种方式:

# losetup /dev/loop0 /media/disk1/backup.iso
# fdisk /dev/loop0 # Be very careful with this!
Command: w

理想情况下,这应该为 中的分区创建循环设备/dev/loop0p1等等。然后您可以将它们正常安装为循环设备;将其设置为只读可能是谨慎的做法,以免损坏您的备份。可能有比直接使用更安全的方法来触发分区读取,例如或;然而,我遇到了这些可靠性问题,这是我发现的最好的方法。/dev/loop0p2backup.isofdiskpartprobekpartxfdisk

第二种方法比较困难。它涉及手动读取分区起始位置 ( fdisk -l /dev/loop0),然后losetup使用适当的--offset选项重做以使循环设备从分区起始位置开始。您传递的确切数字取决于 的输出fdisk,但它是以字节为单位的偏移量,等于起始块乘以块大小。此时,您可以/dev/loop0直接挂载(再次强调,只读是谨慎的做法)。

相关内容