- 电脑型号:hp 暗影精灵5 Air
- 显卡:RTX 2060
- CPU:i7-9750H
- 硬盘:500G固态 + 1T固态
- 启动方式:UEFI
- 操作系统:Ubuntu16.04
之前安装Ubuntu的时候给Ubuntu系统分配的空间太小了,安装新硬盘后给ubuntu分配了更大的分区,需要将原来的系统迁移到新硬盘分区中,下面开始系统迁移。
一、系统备份
参考自Ubuntu全盘备份与恢复,亲自总结,实测可靠
Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,所以备份系统就是将所有文件打包成一个压缩包
1、挂载存放备份文件的分区(使用mount命令或通过鼠标点击资源管理器左侧的磁盘,挂载的磁盘会出现在/media/用户名/
目录下),假设要存放备份文件的目录为$back_folder
,且该目录在“/media”目录下
2、按住ctrl+Alt+f1
进入控制台字符终端,用root用户登录
3、进入存放备份文件的目录cd $back_folder
4、将系统打包压缩,将命令中$back_folder
换成自己的目录
tar -cvpzf $back_folder/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /
- ‘tar’是用来备份的程序
- c - 新建备份文档
- v - 详细模式,tar程序将在屏幕上实时输出所有信息
- p -保存许可,并应用到所有文件,所有文件的权限信息都会保留
- z - 采用‘gzip’压缩备份文件,以减小备份文件体积
- f - 说明备份文件存放的路径,$back_folder/backup.tgz 是本例子中备份文件名
- “/”是我们要备份的目录,在这里是整个文件系统
- –exclude表示要删除的目录,“/proc”、“/lost+ found”、“/sys”、“/mnt”、“/media”都要排除在外,如果backup.tgz没有在“/media”目录下,要加上
--exclude=$back_folder/backup.tgz
以排除backup.tgz文件
5、漫长的等待。。。。。。
在备份命令结束时你可能会看到这样一个提示:’tar: Error exit delayed from previous errors’,多数情况下你可以忽略它。
二、系统恢复
1、使用原来的Ubuntu系统,打开终端。如果原来的Ubuntu系统已经崩溃,无法进入。则可以使用Ubuntu安装U盘(live USB)进入试用Ubuntu界面。
2、使用gparted将用于恢复系统的磁盘分区格式化EXT4文件系统
3、挂载用于恢复系统的磁盘分区,将backup.tgz拷贝进去
4、cd进入该磁盘分区
5、解压
sudo tar xvpfz backup.tgz
- x - 表示解压缩
6、重新创建那些在备份时被排除在外的目录
sudo mkdir proc lost+found mnt sys media
以上操作只是将所有文件恢复进了新的磁盘,但是没有重建启动引导,因此再次重启时还是会进入原来的系统。下面开始重建UEFI启动文件。
三、重建UEFI启动文件
写了两个方法,第一个没试过,第二个试过。
3.1 简单方法
写了一半发现个更简单的方法,奈何自己没机会试了,各位看客可以试一下,在原系统中,输入sudo update-grub
,再重启,可能会在启动菜单中看到新迁移的操作系统。如果试过这个方法,希望留个评论告诉可不可用,下次遇到同类问题就知道咋办了。
如果不行,就按照下面的流程操作。
3.2 复杂一点的方法
当时安装系统时就在UEFI启动文件上费了些功夫,其中ubuntu的启动引导是在windows下用EasyUEFI指定的,其为启动分区(即第一块硬盘的第一个分区,在windows下为隐藏分区)中的文件“EFI/ubuntu/grubx64.efi”,具体可参考暗影精灵5 (i7 9750H + RTX2060) 安装win10+Ubuntu18.04双系统。
以下操作在原来的Ubuntu系统中进行
1、进入新系统所在目录的根目录,注意是新系统!!!!!!
2、切换到root用户 su root
3、删除boot/efi
目录,并新建boot/efi
目录,该目录本应该为挂载EFI分区的目录,备份时直接将文件复制过来了,后面会将EFI分区重新挂载过来。
rm -r boot/efi
mkdir boot/efi
4、在原系统中卸载EFI分区,然后将EFI分区挂载到新系统的/boot/efi
目录下
umount /boot/efi
mount /dev/nvme0n1p1 boot/efi
/dev/nvme0n1p1
为EFI分区,按照自己的电脑配置进行修改
5、将原系统的“/proc、/sys”等文件夹挂载到新系统的环境中
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i .$i; done
注意第二个$i
前面有个.
,表示当前目录,即新系统的根目录
6、加载efivars
模块
modprobe efivars
7、配置grub,将root目录更改为新系统的根目录
grub-install --no-nvram --root-directory=.
8、将根目录位置切换为新系统的根目录,然后更新grub
chroot .
update-grub
9、查看./boot/efi/ubuntu/grubx64.efi
文件是不是刚刚更新的,是的话,就证明更新efi文件成功了。
ll boot/efi/ubuntu/
10、打开新的终端,输入sudo reboot
重启系统
此时应进入新的系统。
11、重启后,打开终端,更新grub
sudo update-grub
该命令会将电脑中所有操作系统都加入启动菜单中,再次重启会发现其他操作系统都加入了启动菜单。
四、思考
更简单一点的话,是不是两步就完成了,只是思考,没有验证过。
1、用cp
命令将所有文件复制到新系统的分区中,同时保留所有权限
2、用update-grub
命令更新grub,重启后查看新系统是否在启动列表里。