如何将Ubuntu转移到SSD,但保留在硬盘上?

我想将现有的Ubuntu Trusty(14.04.1)系统(包括从PPA安装的应用程序)转移到SSD。 我想在硬盘上保留现有的主目录。 什么是最好的方法,最好是不涉及重新安装Ubuntu的方法?

从实时媒体启动时,可以分为3个步骤:

  1. 将操作系统数据复制到新驱动器

    在开始之前,请确保新驱动器具有正确的分区表 。 GPT(主要)用于EFI,并且需要为引导加载程序提供特殊分区。 不要忘记在MBR安装上将新操作系统分区标记为可引导。

    从实时媒体使用rsync应该是复制文件最实用的解决方案:

    sudo rsync -av --exclude=/home/* /media/$mountpoint_of_old_drive/ /media/$mountpoint_of_new_drive/ 
  2. 将引导加载程序安装到新驱动器

     sudo grub-install --boot-directory /media/$mountpoint_of_new_drive/boot /dev/sdX 

    /dev/sdX应更改为新驱动器的实际设备名称。

    如果你有EFI安装而不是MBR,你应该确保你在EFI模式下启动了实时媒体,运行sudo apt-get install grub-efi-amd64 ,在新驱动器上创建了一个EFI系统分区(ESP) ESP安装到/media/$mountpoint_of_new_drive/boot/efi (或使用--efi-directory选项,查看grub-install联机帮助页 )。

  3. 更新配置

    您需要在/etc/fstab更新/etc/fstab的UUID。 通过执行sudo blkid /dev/sdXY获取新操作系统分区的UUID,复制不带引号的UUID,运行sudo nano /media/$mountpoint_of_new_drive/etc/fstab并将现有的UUID替换为如下所示的行:

     # / was on /dev/sda2 during installation UUID=a7aea81b-0e7f-4ec0-8be4-b0ec75c13fdc / ext4 errors=remount-ro 0 1 

    但在更换线之前,您可能需要按Ctrl + KCtrl + U复制它。 由于您的家仍在旧驱动器上,旧的UUID应该是正确的,您只需要将挂载点更新为/home/$your_username (将$your_username替换$your_username用户主目录的名称)和一些选项(注意最后时间relatime,acl2 ):

     # Mountpoint for home or user partition UUID=063a996a-0303-42b2-b719-af920fd105fa /home/$your_username ext4 relatime,acl 0 2 

    使用Ctrl + O保存并使用Ctrl + X退出。

    你应该考虑将各个主目录移动到一个单独的home -partition (它只是一个分区,用户的主目录在fstab挂载为/home ,你可以再次使用sudo rsync -av来复制数据,请参阅如何移动我的/主目录到另一个分区,如果它已经是/分区的一部分? ),因为你必须以这种方式为每个用户创建一个新行。

    如果您在SSD上创建了新的交换分区 ,则还必须为此更新UUID:

     # SSD swap UUID=b7c315cb-cf89-463b-888a-185a1faa8250 none swap sw 0 0 

    此外,您需要在/media/$mountpoint_of_new_drive/etc/initramfs-tools/conf.d/resume sudo update-initramfs -k all -u交换分区的UUID,在第一次从新驱动器启动后运行sudo update-initramfs -k all -u重新启动以使hibernate再次运行。

    请记住,对于EFI安装,也要在fstab中更新ESP的挂载点。

    看起来很复杂,但做起来很简单,难以详细描述。


故障排除

grub-install以某种方式无法与UEFI一起安装

提示:当GRUB说一些关于i386-pc东西时,你可能忘了运行sudo apt-get install grub-efi-amd64

  • 你复制了根( / )分区的内容,包括/boot ,对吧?
  • 你复制了ESP的内容? 如果你没有这样做。

    • 在新ESP上编辑EFI/ubuntu/grub.cfg 。 如果不相应地更改此示例中的hd0,gpt2部分,则用新根分区的UUID替换UUID应该足够了。 这是文件内容通常如下所示:

       search.fs_uuid a7aea81b-0e7f-4ec0-8be4-b0ec75c13fdc root hd0,gpt2 set prefix=($root)'/boot/grub' configfile $prefix/grub.cfg 
  • 安装启动,运行sudo update-grub ,os-prober应在其他分区上找到新安装并添加GRUB条目。

    • 启动这个新条目。
    • 您现在应该从SSD启动,再次运行sudo update-grub以更新和修复SSD上的GRUB配置。
  • 运行efibootmgr -c -d /dev/sdX -p Y -l \EFI\ubuntu\grubx64.efi -L "Ubuntu"将新的/传输安装的引导加载程序添加为UEFI NVRAM的新引导选项。 /dev/sdX是新硬盘的设备名称, Y是分区号。