![使用 dd 创建具有小分区的驱动器映像](https://linux22.com/image/172218/%E4%BD%BF%E7%94%A8%20dd%20%E5%88%9B%E5%BB%BA%E5%85%B7%E6%9C%89%E5%B0%8F%E5%88%86%E5%8C%BA%E7%9A%84%E9%A9%B1%E5%8A%A8%E5%99%A8%E6%98%A0%E5%83%8F.png)
我有一个带有一个分区的可启动 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
所以我们不必使用块大小的倍数(因此我们可以使用更大的大小,只要缓存可以容纳它就会更快)。