我在笔记本电脑的硬盘上安装了 Lubuntu 17.04。我现在买了一块几乎相同大小的 SSD 作为替代品;它是空的,没有动过。
现在,我想切换磁盘,并将我在 HDD 上已经拥有的内容基本完全相同的内容转移到 SSD - 并且让我的 Linux 启动并运行而无需任何进一步的调整(可能是/etc/fstab
UUID 问题除外)。
我怎样才能做到这一点...
- 没有额外 PC 的帮助?
- 在额外的 PC 的帮助下?
笔记:
- 如有必要,我可以生成可启动的 U 盘。
- 如有必要,我可以使用 CD/DVD 阅读器。
- HDD 的使用率为 33%,因此数据适合 - 但 HDD 容量稍大。
- 硬盘驱动器可能有一些临界坏的扇区(但现在 - Linux 启动并工作)。
- 硬盘上只有一个分区,据我所知——考虑到我是唯一的用户,我也可以在 SSD 上保持这种方式,并且它不用作某些公共服务器等。
您有两种基本方法可以将安装切换到新磁盘、克隆磁盘或复制内容并修复系统(即引导加载程序、fstab 条目)。这两种方法都有其优点和缺点。
这两种方法都需要另一个系统,该系统连接了该磁盘以及一些额外的存储空间或第二个磁盘。这可以是另一台笔记本电脑或台式机 - 或实际笔记本电脑上的 live usb/cd。
如果您可以将两个磁盘都连接到系统,这是最简单的 - 但如果您不能这样做,您可以在交换驱动器时将额外的存储用作临时暂存区域。如果你有一个大的 USB 硬盘驱动器,可以使用它。一个更简单的选择可能是获得一个USB 机箱,它允许您将两个磁盘连接到同一台计算机。
因此,使用 live usb 和 usb 机箱,您可以在要更换驱动器的笔记本电脑上完成所有操作。对于这两种方法,我将讨论在连接两个磁盘并且两者都未安装的情况下进行直接磁盘传输(即您安装了另一台计算机或正在使用现场 USB/CD)。我将使用
/dev/sdS
来指示源磁盘(在您的情况下为硬盘)并/dev/sdD
指示目标磁盘。将这些替换为系统上的实际磁盘 - 请务必验证这些磁盘,因为出错会破坏您拥有的任何数据。方法一:克隆磁盘
这是从磁盘转到相同大小或更大的磁盘时最简单的方法,但是通过额外的步骤可以从较大的磁盘转到较小的磁盘。这样做的主要缺点是它逐块复制磁盘,因此需要读取和写入整个磁盘。当磁盘大部分为空时,这将比复制系统花费更长的时间。
您提到从稍大的磁盘到较小的磁盘,因此第一步是将源磁盘上的分区调整为小于目标磁盘的大小。使用gparted最容易做到这一点,只需确保缩小驱动器,使可用空间位于磁盘末尾。这可能需要一段时间,因为它必须将磁盘末尾的任何数据移动到新位置。
dd
现在您只需使用或将源磁盘克隆到目标ddrescue
。ddrescue
可能是可取的,因为它会更加努力地重新读取您提到的可能有的坏扇区。或者使用
dd
:请注意,您将在写入期间收到目标磁盘已满的错误消息 - 这很好,因为我们调整了磁盘大小,因此磁盘末尾不应包含任何有用的内容。这就是为什么您必须确保将其调整为略小于目标的大小。
现在您可以再次使用 gparted 来调整目标的大小以填充驱动器。
您现在应该能够交换磁盘并引导新系统。
方法2:复制根文件系统
如果您只在大磁盘上使用少量空间,则此方法可能更快,但需要更多步骤来重新配置引导加载程序和 fstab 以引导系统。它还具有仅在源磁盘上读取的优点,因此破坏原始磁盘的可能性较小(尽管上述方法并非如此,因为由于目标小于源磁盘,您必须调整磁盘大小)。它也更加灵活,因为您可以根据需要轻松更改分区。
第一步是在新驱动器上设置分区表并格式化分区。您提到驱动器上只有一个分区-据此我假设您使用的是旧版 bios 引导(因为 uefi 除了根文件系统之外还需要 vfat 分区)。这是最容易做到的
parted
:但你也可以使用
fdisk
orgdisk
或者即使gparted
你喜欢。如果您的源磁盘有更多分区,或者您想更改分区布局,您现在可以这样做 - 只需根据您的需要或要求设置目标磁盘。现在挂载源磁盘和目标磁盘。
如果您有/想要比此更多的分区,请将根安装在上述位置以及与该位置相关的其他分区。(例如,如果您的源有一个额外的引导分区,则将其挂载到 /mnt/src/boot)。
现在将内容从源复制到目标。
这需要一段时间。如果它被中断,您可以通过重新运行命令来恢复它。
您现在可以卸载源驱动器,因为我们不再需要它。
最后的步骤是修复系统,使其可以启动。首先为新系统打开
/mnt/dest/fstab
并修复它 - 如果分区布局相同,这应该是更新 UUID/驱动器号以反映新分区的问题。用于blkid
获取所需信息,建议使用UUID=
或PARTUUID=
如果可用。最后,我们需要修复引导加载程序——在这里我假设您使用的是带有旧版 bios 的 grub2,如果这不是真的,请忽略这一点并按照有关如何恢复引导加载程序的说明进行操作。
可以在此处找到有关恢复 ubuntu 引导加载程序的更多信息。
如果一切顺利,您应该能够关机、交换驱动器并启动新磁盘。
附加功能
通过第三个磁盘工作
如果您无法将两个磁盘都附加到一台计算机上,您将需要一些额外的存储空间 - 这可能是 USB 磁盘、网络附加存储或您可以在本地访问的任何其他东西,并且足够大以存储磁盘或根文件系统。
上述两种方法的总体过程是相同的,但是先从一个磁盘复制到另一个磁盘,然后再复制到临时暂存区;
使用方法1:请注意,这要求暂存区域与您正在复制的磁盘一样大。
将存储安装到
/mnt/staging
:您可以随心所欲地保存所有文件。如果您愿意,您可以从这里压缩它并将其作为系统的备份。
然后您可以关闭交换驱动器并再次启动 live usb 以恢复映像
请注意,源和目标的驱动器号可能与此方法相同。
使用方法 2:请注意,这仅要求暂存区域在压缩时与文件系统一样大,而不是整个磁盘。
将存储安装到
/mnt/staging
并且源安装到/mnt/src
:然后,您可以关闭交换驱动器并再次启动 live usb 以在设置目标磁盘文件系统后恢复文件系统。
然后继续恢复 fstab 和 bootloader。
最简单的解决方案(如果 HDD 小于 SDD 并且 SDD 可以连接到计算机)是:
使用 dd 将整个磁盘 HDD 复制到 SDD:
当然,必须将 HDD 和 SDD 替换为整个磁盘的正确名称,例如
/dev/sda
or/dev/sdd
(不是 partitions/dev/sda1
)。用计算机中的 SDD 替换 HDD。
唯一的问题是两个硬件的 UUID 相同,可能会阻止您将 HDD 分区安装为附加驱动器。如果需要,可以稍后更正。