注意:我的/boot文件夹没有和Ubuntu系统其他分区放在同一个物理硬盘上,这个设置和大多数的默认配置并不一样,因此本文章只是个人记录而非教程。
将Ubuntu 20.04从较小容量硬盘迁移到较大容量硬盘的过程分为几个步骤。以下是详细步骤:
1. 准备新的大容量硬盘。确保已经正确地安装和连接到计算机上。
2. 从Ubuntu 20.04的安装介质(例如USB驱动器)启动计算机。可以使用UltraISO制作Linux的硬盘镜像。
3. 在启动菜单中选择"Try Ubuntu"(尝试Ubuntu)而不是安装。
4. 打开终端并安装gparted
分区编辑器(如果尚未安装):
sudo apt update
sudo apt install gparted
5.使用gparted
创建新硬盘上的分区。首先,通过以下命令启动gparted
:
sudo gparted
使用gparted
为新硬盘创建一个与旧硬盘相同的分区布局。确保为/boot
,/
(root)和swap
分区创建相应的分区。如果有/home
分区或者其他分区,也需要对应创建。
6. 使用命令行进行各分区的搬家
1)复制根目录分区
sudo dd if=/dev/sdX1 of=/dev/sdY1 bs=64K conv=noerror,sync status=progress
其中,/dev/sdX1
是旧硬盘上的根目录分区,/dev/sdY1
是新硬盘上的根目录分区。
2)复制/home
分区
sudo dd if=/dev/sdX2 of=/dev/sdY2 bs=64K conv=noerror,sync status=progress
其中,/dev/sdX2
是旧硬盘上的/home
分区,/dev/sdY2
是新硬盘上的/home
分区。
3)复制/var
分区
sudo dd if=/dev/sdX3 of=/dev/sdY3 bs=64K conv=noerror,sync status=progress
其中,/dev/sdX3
是旧硬盘上的/var
分区,/dev/sdY3
是新硬盘上的/var
分区。
4)复制和设置swap
分区
a.使用dd
命令复制swap
分区:
sudo dd if=/dev/sdX4 of=/dev/sdY4 bs=64K conv=noerror,sync status=progress
其中,/dev/sdX4
是旧硬盘上的swap
分区,/dev/sdY4
是新硬盘上的swap
分区。
b.使用mkswap
命令在新硬盘上的swap
分区创建swap签名:
sudo mkswap /dev/sdY4
c.更新/etc/fstab
文件以引用新的swap
分区UUID。首先,获取新swap
分区的UUID:
sudo blkid /dev/sdY4
然后,使用文本编辑器(例如nano
)打开/etc/fstab
文件(见后文常见问题1):
sudo nano .../etc/fstab # 仅作示例,需要挂载新硬盘并在对应硬盘上操作
在/etc/fstab
文件中找到旧swap
分区的UUID,并将其替换为新swap
分区的UUID。保存更改并关闭文件(Ctrl+X后选择Y)。
7. GParted修复unallocated空间
使用dd将/home等分区转移至新硬盘后,GParted显示新硬盘上出现了unallocated空间,是因为dd
会精确复制源分区的大小,所以如果新硬盘上的分区比源分区大,那么就会产生未分配的空间。
解决问题:在GParted中选择对应红色感叹号的硬盘选择Check并自动修复。
注意:如果其他硬盘安装了Windows系统,由于Windows系统的保留也会出现红色感叹号的硬盘,请忽略,只修复安装了Linux系统的对应硬盘位置。
8. 使用boot-repair自动修复引导
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
选择Advanced Options,选择对应引导所在的硬盘,并实行自动修复。
/etc/fstab
文件需要先挂载新硬盘上的根分区。
1. 创建一个临时挂载点,例如 /mnt/new_root
sudo mkdir /mnt/new_root
2. 挂载新硬盘上的根分区
sudo mount /dev/sdY1 /mnt/new_root
其中,/dev/sdY1
是新硬盘上的根分区。请根据实际情况替换Y
。
3. 现在,可以编辑目标大容量硬盘上的/etc/fstab
文件
sudo nano /mnt/new_root/etc/fstab
4. 更新/etc/fstab
文件中的UUID,然后保存并关闭文件。(由于dd拷贝,新旧硬盘的UUID应该是对应一致的,经过检查如果确实如此,可以省略此步)
5. 最后,卸载新硬盘上的根分区
sudo umount /mnt/new_root
完成这些步骤后,目标大容量硬盘上的/etc/fstab
文件已更新,以正确挂载新硬盘上的/home
、/var
和/swap
分区。
以下是如何调整swap
分区大小的步骤:
1. 关闭旧硬盘上的swap
分区:
sudo swapoff -a
或者
sudo swapoff /dev/sdX4
其中,/dev/sdX4
是旧硬盘上的swap
分区。请根据实际情况替换X
。
2. 更新/etc/fstab
文件以引用新的swap
分区UUID。
在/etc/fstab
文件中找到swap
分区的配置行,或者如果不存在,请创建一个新行。确保该行遵循以下格式:
UUID=你的swap分区UUID none swap sw 0 0
将swap分区UUID
替换为第1步中获得的UUID(UUID可以通过Ubuntu自带的“磁盘”工具获得)。
例如:
UUID=12345678-90ab-cdef-1234-567890abcdef none swap sw 0 0
保存更改并关闭/etc/fstab
文件。
3. 重新启动计算机:
sudo reboot
现在,每次重启时,swap
分区应该自动挂载。