如何将 Ubuntu/Windows 7 双启动从 HDD 迁移到 HDD+SSD 而无需重新安装?

如何将 Ubuntu/Windows 7 双启动从 HDD 迁移到 HDD+SSD 而无需重新安装?

我的笔记本电脑上有双启动设置(Ubuntu 12.10 和 Win7)。
我有一块 320GB 的硬盘,其中有//homeswap和分区winsys,还有一个大windata分区。总共占用了超过 250GB 的空间。

现在我买了一个 250GB 的 SSD,我将把它放在我的 Ultrabay 中,我想将除大数据分区之外的所有分区迁移到 SSD 上,根据 SSD 空间以可控的方式扩大它们,留windata在 HDD 上,并将其扩展到整个大小。我想避免全新安装 Ubuntu 和 Windows。

我已经读了很多,但我不确定实现这一目标的最佳方法是什么?

  • Clonezilla 磁盘到磁盘克隆已失败,因为目标磁盘较小。
  • Clonezilla 分区到分区(省略数据分区)似乎是一种方法,但我只能按比例扩大分区(即使可以),而且我不知道这是否会创建正确的 SSD 分区对齐。此外,引导扇区/引导加载程序怎么样,尤其是双引导?
  • 最明智的方法似乎是使用实时 CD 中的 GParted,根据需要在 SSD 上创建分区,然后将 HDD 分区复制到新分区中,并扩展 HDD 上的数据分区。在我看来,这是最简单的方法 - GParted 可以进行正确的对齐,但我不知道引导加载程序是否也可以复制?此外,如果这有效,为什么每个人似乎都推荐 Clonezilla?
  • 我的启动分区是第一个分区(sda1),Windows 系统位于该分区上。

纯粹在 GParted 中执行此操作可行吗?我可以安全地删除扩展分区设置吗(我不再需要它了,因为现在每个磁盘只有 4 个分区)?或者,如果我想在将来进一步细分(用于暂存盘等),我是否应该保留它?

附加问题:我的 /home 仍然是 ext2 - 我可以将新的 /home 设为 ext4,并将 ext2 分区复制过去,并且它不会损坏吗?

我知道我必须重写 /etc/fstab 来调整 UUID,而且我可能需要 Windows 救援盘来“修复”混乱的 Windows 启动系统。还有其他陷阱吗?

fdisk -l输出:

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 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: 0x80d2f3ee

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   104856254    52428096    7  HPFS/NTFS/exFAT
/dev/sda2       184538655   625137344   220299345    7  HPFS/NTFS/exFAT
/dev/sda3       104856255   136311524    15727635   83  Linux
/dev/sda4       136311649   184538654    24113503    5  Extended
/dev/sda5       148890420   184538654    17824117+  83  Linux
/dev/sda6       136311651   148874354     6281352   82  Linux swap / Solaris

Partition table entries are not in disk order

答案1

我将使用 GParted 来复制 / 和 winsys 分区。

只要运行引导修复. 并且根据文章中介绍,只要您有一个 Windows 修复磁盘,可以在移动后修复安装,Windows 就应该能够使用 GParted 移动。

虽然你只要您只有 4 个主分区,就安全地将扩展分区放在新驱动器上,我不建议这样做。您可能希望将 SSD 放入一个扩展分区,并将所有其他分区放在该扩展分区内。

当然,执行此类操作总是会失败,即使原因是某些随机因素,例如实时 CD 断电,因此在复制数据之前一定要备份数据。我还建议您在成功使用 Windows 和 Linux 启动 SSD 之前不要对 HHD 进行任何更改。

您可能需要采取的步骤是:

启动实时 CD 并运行 GParted。

在 SSD 上创建一个覆盖整个驱动器的扩展分区。

将linux/分区和winsys分区复制到SSD,保持HHD上原有部分不变。

如果您希望将 /home 放在 SSD 上,则请在扩展分区内创建一个新的 ext4 分区,并使用 rsync 将所有数据从原始分区复制到副本。rsync 命令示例如下:

sudo rsync -rhtvlpEog --progress /media/PATH_TO_HOME_PARTITION_ON_HHD/ /media/PATH_TO_HOME_PARTITION_ON_SSD/

该命令的解释:-r 递归复制,-h 提供人类可读的输出,-t 保留修改时间,-v 提供更多输出,-l 将符号链接复制为符号链接,-p 保留文件权限,-E 保留可执行性,-o 保留所有者,-g 保留组。

在 SSD 上将 winsys 和 / 标记为可启动。

卸载并断开 HHD 与计算机的连接,然后运行启动修复,将 grub 安装到 SSD 并使 / 可启动。

仍然从实时 CD 中,编辑 SSD / 分区上的 fstab 以获取新的 /home 分区 UUID。

通过启动仅安装 SSD 的计算机来测试 grub/linux 是否正常工作。(还要测试 /home 分区中是否有所有数据)

如果确实如此,请使用 Windows 修复磁盘使 SSD 上的 Windows 分区可启动。

在 SSD 上使用 Windows 修复盘后,尝试启动 Windows 和 Linux,无需连接 HHD。

注意:在确认 Windows 和 Linux 均可在 SSD 上运行之前,请勿删除或移动 HHD 上的任何内容。

如果所有操作都在 SSD 上进行,则从 HHD 中删除 /、/home 和 winsys 分区,并扩展 windata 分区以使用整个分区。

我已经概述了我将采取的步骤。我不能保证 Windows 修复盘能正常工作,但根据那篇文章,它应该能正常工作。我不过,我还是要保证移动 / 分区时 Boot Repair 可以正常工作。我知道这可以正常工作,因为我已经使用 GParted 多次移动过我的分区。

此外,如果任何这些步骤失败并且 SSD 无法启动,您仍然可以使用所有数据并且 HHD 上的所有内容仍然可以正常工作。

OP 的额外经验:

  • 最好有 3 个实时 CD/USB 记忆棒 - GParted Live、启动修复、Windows 系统修复,我三个都需要
  • 我最终没有转换主分区,所以我没有使用 rsync 步骤
  • 请注意,在分区复制时,UUID(唯一分区标识符)保持不变。这很好,因为您不必编辑 Ubuntu fstab,并且 Windows 也不想再次激活,但在初始复制阶段之后,为了进行测试,您应该从系统中移除/拔下 HDD,否则将存在多个具有相同 UUID 的分区。这会产生意想不到的结果。
  • 使用 Live CD 镜像制作可启动 USB 盘(如果你没有 CD 驱动器)的有用工具有:燕尾靴网启动全方位贴片机。特别是对于 Windows 系统修复盘,这可能比较棘手 - 使用 TotalMounter 直接将其创建为 .iso,例如本指南

相关内容