如何在不重新安装的情况下将Ubuntu / Windows 7 dualboot从HDD迁移到HDD + SSD?

我的笔记本电脑上有一个工作的双启动设置(Ubuntu 12.10和Win7)。
我有一个带有分区的320GB硬盘,用于//homeswapwinsys和一个大型windata分区。 整体占用的空间超过250GB。

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

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

  • Clonezilla磁盘到磁盘克隆已经完成,因为目标磁盘较小。
  • Clonezilla分区到分区(省略数据分区)似乎是一种方式,但我只能按比例放大分区(即使我可以),我不知道这是否会创建正确的SSD分区对齐。 另外,引导扇区/引导加载程序,特别是wrt dualboot呢?
  • 最安静的方式似乎是从live cd使用GParted,根据需要在SSD上创建分区,然后将HDD分区复制到新分区,并扩展HDD上的数据分区。 这在我看来是最简单的方式 – GParted可以做正确的对齐,但我不知道是否也可以复制引导加载程序? 此外,如果这有效,为什么每个人似乎都推荐Clonezilla?
  • 我的启动分区是Windows系统所在的第一个分区(sda1)。

纯粹在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 

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

只要运行Boot Repair, Grub / linux就会在复制后启动 。 根据这篇文章,只要你有一个Windows修复盘来移动它就可以修复安装,所以windows应该可以用GParted移动。

虽然您可以安全地删除新驱动器上的扩展分区,只要您只有4个主分区,我就不推荐它。 您可能希望将ssd放入一个扩展分区,并将所有其他分区放在一个扩展分区中。

当然,做这样的操作总是会失败,即使原因是任意的事情,比如活动cd失败的电源,所以在复制之前一定要备份你的数据。 我还建议您在使用Windows和Linux成功启动SSD之前不要对HHD进行任何更改。

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

启动到Live CD并运行GParted。

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

将linux / partition和winsys分区复制到SSD,原来HHD上的原始版本保持不变。

如果你想在SSD上使用/ home,那么在扩展分区内创建一个新的ext4分区,并使用rsync将所有数据从原始数据复制到副本。 一个示例rsync命令可能是这样的:

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

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

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

卸下并可能断开HHD与计算机的连接,然后运行boot-repair ,将grub安装到SSD并制作/ bootable。

仍然从Live CD,编辑SSD /分区上的fstab以获得新的/ home分区UUID。

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

然后,如果是这样,使用Windows修复磁盘来启动SSD上的Windows分区。

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

注意:在确认SSD和Linux都在SSD上工作之前,请务必不要删除或移动HHD上的任何内容。

如果所有都在SSD上工作,那么从HHD中删除/,/ home和winsys分区,并展开windata分区以使用整个事物。

我概述了我将采取的步骤。 我不能保证Windows修复磁盘工作,但根据那篇文章它应该。 我可以保证在移动/分区时启动修复工作。 我知道这很有效,因为我使用GParted将我的分区移动了很多。

此外,如果这些步骤中的任何一个失败并且SSD无法启动,您仍然拥有所有数据,并且所有数据仍在HHD上运行。

OP的其他经验:

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