Linux系统迁移(同一台电脑),重建UEFI启动文件

  • 电脑型号: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,重启后查看新系统是否在启动列表里。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值