使用 dd 创建具有小分区的驱动器映像

使用 dd 创建具有小分区的驱动器映像

我有一个带有一个分区的可启动 USB 驱动器。驱动器为 16GB,分区为 32MB。我想创建驱动器的 ISO(包括引导扇区)。使用 dd,我可以创建分区的映像(这将是 32MB 大,但这不是我想要的,因为它无法启动),或者我可以创建整个驱动器的映像,这将是一个巨大的浪费时间和磁盘空间。我尝试使用clonezilla,但无法从clonezilla 映像创建ISO。

如何创建驱动器的可启动映像而不对驱动器的整个未使用部分进行映像? PS:只要映像是可启动的并且可以在 virtualbox 中使用,我并不关心它是否是 ISO。

答案1

您要做的是将分区表与分区一起复制。您可以通过仅将驱动器复制到分区末尾(表位于第一个扇区)来实现这一点。

首先,检查驱动器的确切几何形状。例如与分手:

# parted /dev/sdb
GNU Parted 3.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit B
(parted) print
Model: blah
Disk /dev/sdb: 1000204886016B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start     End             Size          File system   Name   Flags
 1      2048B     33556480B       33554432B     fat32         Boot

我将单位切换到yte 以获得分区末尾的确切位置。现在使用 dd,复制适量的数据就变得很简单。

# dd if=/dev/sdb of=drive.img iflag=count_bytes bs=32k count=33556480

应该可以做到这一点。您将在开始时获得分区和分区表。注意使用count_bytes所以我们不必使用块大小的倍数(因此我们可以使用更大的大小,只要缓存可以容纳它就会更快)。

相关内容