我有一个带有 2 个操作系统分区的硬盘。它们加在一起太大,无法克隆到我的闪存驱动器上。无论如何,我只想克隆较小的一个。
/dev/sda1
: 120GB HDD 分区 1(Lubuntu)
/dev/sda2
: 8GB HDD 分区 2(Debian) <-- 想要克隆这个
/dev/sdb
: 32GB 闪存驱动器
我尝试通过克隆单个分区dd
,但它似乎无法启动:
sudo dd if=/dev/sda2 of=/dev/sdb status=progress bs=1M
当我尝试启动此闪存驱动器时,我单击“启动 USB”,但 BIOS 菜单重置为 grub 启动菜单,其中我唯一的 2 个选项是 2 HDD 操作系统。
问题是我尝试将单个分区 (
sda2
) 克隆到驱动器 (sdb
) 吗?我应该改用sdb1
吗?由于我只克隆一个分区,这是否意味着启动(grub)内容丢失了?
如何成功将单个操作系统分区克隆至可启动闪存驱动器?
答案1
你的两个假设都是正确的。当您将分区直接转储到拇指驱动器时,没有分区表,因此也没有引导扇区。
为了使其发挥作用,您可以采取几种方法。通常,首先在驱动器上创建分区表,然后创建将包含操作系统数据的实际分区(/dev/sdb1),然后将数据复制到那里。获得所有数据后,您也可以将 grub 安装到驱动器上。
这可以通过几个命令很快完成,但如果您不习惯术语和概念,很容易犯(可怕的)错误。所以我会建议你以下,这应该更容易:
- 备份!一切!有时,您可能会因丢失单个字符而永久丢失所有数据。
- 安装并打开 gparted:
- 选择您的拇指驱动器(确保它没有选择您的磁盘)
- 菜单“设备”>“创建分区表”
- 你可以使用msdos
- 在未分配的空间上创建一个主分区,如 ext4
- 将新分区设置为可启动
- 申请并退出
- 跑步
sudo dd if=/dev/sda2 of=/dev/sdb1; sudo resize2fs /dev/sdb1
。 - 启动进入你的 Debian 系统(我假设你的拇指驱动器
/dev/sdb
在启动 Debian 后仍然存在)- 运行
blkid /dev/sdb1
以获取已克隆的分区的 UUID。 - 备份当前
/etc/fstab
文件。 - 更新它,使其引用
/
您获得的 UUID 的路径,如下所示:
- 运行
...
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=5405ba56-dd62-48b4-b381-976162b4957c / ext4 errors=remount-ro 0 1
- 运行
sudo mount /dev/sdb1 /mnt; sudo cp -p /etc/fstab /mnt/etc/fstab; sudo umount /mnt
以将这个新的 fstab 复制到您的拇指驱动器 Debian。 - 跑步
sudo grub-install /dev/sdb
- 将文件备份恢复
/etc/fstab
到原始状态(使用磁盘分区的 UUID,而不是拇指驱动器分区)。 - 这些命令不应该扰乱你的 Debian 磁盘的启动,但现在已经
fstab
恢复到原来的状态,运行sudo update-grub
只是为了确保,因为更新可以在文件/etc/fstab
设置到拇指驱动器时读取该文件。
这应该已将 debian 分区的内容克隆到拇指驱动器并为其创建启动环境。我现在无法在这里验证此过程,因此请注意,尽管我已经做过几次这样的事情,但此处的命令目前尚未经过测试。