我在一块故障硬盘上安装了 Ubuntu 10.04 LTS(我已经备份了数据,所以这不是问题)。我想将当前的 Ubuntu 安装完整地移动到新硬盘上。新硬盘还需要启动 1 个用于旧版软件的 Windows 版本和 1 个其他 Linux 发行版(出于测试目的,它会不时更改)。
我当前的 Ubuntu 分区方案:/dev/sda1 ext2 boot /dev/sda2 Linux swap /dev/sda3 Linux extended /dev/sda5 ext4 LVM2 pv
实现此目标的良好(即简单、直接)方法是什么?我没有考虑虚拟机设置,因为我的大多数硬件都很旧了。
我已多重启动了许多操作系统,但从未将 Linux 安装移至多重启动或使用过 LVM。
答案1
众所周知,“Windows 无法与其他分区很好地兼容”。但这仍有可能。
虽然我从未这样做过,但我相信下面的策略是可行的。如果发生任何不愉快的事情,你可以轻松地撤回。
1)确定当前磁盘的大小,减去启动分区。
2) 转到新磁盘,并按如下方式格式化:为 Windows 创建 NTFS 分区,为 Linux 创建 extN 分区。将 Linux 空间分成 2 个以上分区以及使用 ext2/ext3/ext4 并不重要,我们很快就会用 dd 覆盖它。只需确保 Linux 分区至少与当前磁盘一样大(减去启动分区)。
此步骤必须从实时 Linux 发行版执行,我建议您使用 Ubuntu,原因稍后会说明。
3)在新磁盘上安装 Windows,安装在它唯一能识别的分区上,即 NTFS 分区。
4) 确保它没有侵入 Linux 分区。您可以使用 gparted 从 Live Ubuntu 棒轻松完成此操作。
5) 现在将旧磁盘上的 dd 内容添加到 Linux 分区中的新磁盘上。再次使用实时发行版来执行此操作。
您不需要卸下旧磁盘,只需使用外部硬盘作为“传输代理”即可。
在将数据添加到新磁盘时,您需要跳过 Windows 分区。如果 Windows 分区为 X MiB,则以下命令将执行
dd if=/dev/sdT of=/dev/sdV bs=1M skip=X
现在您明白为什么我告诉您在新磁盘上细分 Linux 分区是没有用的:原因是我们在此步骤中会覆盖它。
6) 还有几件事需要检查。首先,您是否有一个使用 GUID 的 /etc/fstab?如果有,那就没问题,因为 GUID 当然是通过 dd 保留的。否则,您必须编辑 /etc/fstab 来识别要挂载的分区。您可以通过磁盘上新创建的 Linux 文件系统的 / 文件夹中的 chroot jail 实时执行此操作,但我的建议是,如果您还没有在旧系统上执行此操作,请在放弃它之前先在旧系统上执行此操作。您会发现您的工作已经在新系统上完成了。
其次,检查您是否有硬件驱动程序,尤其是以太网、无线和显示器。您可以从 live 下载它们,然后再次将它们传输到 chroot jail 中,并从 chroot 中安装它们。
7) 这就是为什么我建议你使用 Ubuntu。你的新系统不可能启动 Ubuntu,因为我们遗留了它的 MBR,而且新系统是在 Linux 尚未安装在系统上时由 Windows 安装的。但 Ubuntu 有一个非常好用的实用程序,叫做引导修复,您可以将其下载到 live 上,并使用它来修复 MBR 和 grub。
就这些了,各位。
答案2
备份:您是否已经有 $HOME 的经过验证的备份?(反问,当然有)。
Windows 将会破坏您所有的 Linux 安装,因此 Windows 必须首先运行。
然后,重新安装 10.04 LTS(或者认真考虑升级到带有 Xfce GUI 的 12.04)并
恢复你的$HOME数据。
希望我有一种简单、直接的方法来做到这一点而无需重新安装,但 Windows 不允许这样做。