我有一个完全配置好的 Linux 系统,安装在一个 16GB 的 USB 驱动器上。我有 10 个相同品牌/类型的 USB 驱动器和 10 个完全相同的主板。
现在我想将 USB 驱动器复制到其他驱动器,这样 10 个系统就可以使用相同的映像。
我使用 WinDiskImager32 创建了 USB 驱动器的映像,然后尝试将其写回到原始 USB 驱动器。这样做成功了,因为驱动器是同一个,但是当我尝试将其写入其他 USB 驱动器时,却失败了,因为映像对于这些驱动器来说太大了。尽管它们都是 16GB,但实际上总会存在细微的差异。
显然这不是正确的做法,所以我想知道如何正确地“克隆”我原来的 USB,以便我可以将它部署到其他 USB 上?
(请注意,系统配置为处理安装在新计算机上的事实,所以这不是问题,只需要获取一个精确的副本)
更新
根据 WesleyDavid 的回答,我使用 gparted 检查了驱动器,并记得我最初使用 WinDiskImager32 从 8GB 设备复制了映像,因此分区已经足够小了。
问题在于 WindDiskImager 复制整个驱动器,而不仅仅是分区。
现在,“dd”解决方案通过仅复制一个分区解决了这个问题,但是如何在目标 USB 上获取 ext2 和交换文件系统呢?
使用 dd 复制整个设备会导致再次出现完整的 16GB 空间,而这在其他设备上并不总是适合
更新 2
按照 WesleyDavid 的建议使用 dd 即可,
只需使用 dd 的 count 参数即可这里
基本上,这意味着运行“fdisk -u -l /dev/sdb”(用您的设备替换 sdb)
> Disk /dev/sdb: 16.3 GB, 16257318912 bytes 64 heads, 32 sectors/track,
> 15504 cylinders, total 31752576 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:
> 0x000392d4
>
> Device Boot Start End Blocks Id System
> /dev/sdb1 * 2048 13672447 6835200 83 Linux
> /dev/sdb2 13674494 15818751 1072129 5 Extended
> /dev/sdb5 13674496 15818751 1072128 82 Linux swap
在我的例子中,最后一个分区的末尾是“15818751”,因此我使用:
dd if=/dev/sdb of=/home/myusername/usbimage.img count=15818752
为了安全起见,再添加一个。这给了我一个可以安装的图像。
答案1
最简单且经过验证的选项:使用 gparted 将源分区设为 15GB,以确保万无一失。然后克隆到其他 USB 驱动器。
本质上,这不是克隆问题,而是分区大小问题。一旦分区/磁盘大小低于最大大小,只需dd if=source of=destination
(假设是 Windows)继续使用您的坏系统即可。