我想将现有的 Ubuntu Trusty (14.04.1) 系统(包括从 PPA 安装的应用程序)传输到 SSD。我想将现有的主目录保留在硬盘上。最好的方法是什么,最好是不涉及重新安装 Ubuntu 的方法?
答案1
从实时媒体启动时,可分为 3 个步骤:
将操作系统数据复制到新驱动器
在开始之前,请确保新驱动器具有正确的分区表。GPT(主要)用于 EFI,需要为引导加载程序提供一个特殊分区。不要忘记在 MBR 安装中将新的操作系统分区标记为可引导。
从实时媒体使用 rsync 应该是复制文件最实用的解决方案:
sudo rsync -av --exclude=/home/* /media/$mountpoint_of_old_drive/ /media/$mountpoint_of_new_drive/
将引导加载程序安装到新驱动器
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 手册页)。更新配置
您需要更新 中的 UUID
/etc/fstab
。/
通过执行 获取新操作系统分区的 UUIDsudo blkid /dev/sdXY
,复制不带引号的 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但在替换该行之前,您可能需要按+K和Ctrl+复制它U。由于您的主目录仍在旧驱动器上,旧的 UUID 应该是正确的,您只需要将挂载点更新为
/home/$your_username
(替换$your_username
为用户主目录的名称)和一些选项(注意最后的relatime,acl
和):2
# Mountpoint for home or user partition UUID=063a996a-0303-42b2-b719-af920fd105fa /home/$your_username ext4 relatime,acl 0 2
Ctrl使用+保存并使用+O退出。CtrlX
您应该考虑将各个主目录移动到单独的
home
-分割(它只是一个安装了用户主目录的分区/home
,fstab
您可以sudo rsync -av
再次使用它来复制数据,请参阅如果我的 /home 目录已经是 / 分区的一部分,我该如何将其移动到另一个分区?),因为这样您必须为每个用户创建一个新行。如果你创建了一个新的交换分区在 SSD 上你也必须更新 UUID:
# SSD swap UUID=b7c315cb-cf89-463b-888a-185a1faa8250 none swap sw 0 0
此外,您需要更新交换分区的 UUID,在第一次从新驱动器启动后
/media/$mountpoint_of_new_drive/etc/initramfs-tools/conf.d/resume
运行并重新启动即可sudo update-initramfs -k all -u
冬眠重新开始工作。记得还要更新ESP在 fstab 中也适用于 EFI 安装。
看起来很复杂,但做起来很简单,只是详细描述起来很困难而且冗长。
故障排除
grub-install 无法通过 UEFI 安装
sudo apt-get install grub-efi-amd64
提示:当 GRUB 说起时您可能忘记运行i386-pc
。
- 您复制了根()分区的内容(
/
包括)/boot
,对吗? 您复制了 ESP 的内容吗?如果没有,请复制。
在新的 ESP 上进行编辑
EFI/ubuntu/grub.cfg
。将 UUID 替换为新根分区的 UUID 就足够了,如果不行的话,hd0,gpt2
也请相应地更改此示例中的部分。文件内容通常如下所示: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
分区号。