从BIOS+MBR迁移到UEFI+GPT 并修复Ubuntu Grub2 UEFI引导
之前在虚拟机里使用了默认配置安装了Ubuntu16.04,由于需要扩充磁盘空间不得不将磁盘从MBR分区表转换到GPT分区表。
简单介绍一下思路:首先通过Windows下的DiskGenius软件备份Ubuntu的根分区,再通过新建虚拟机并配置UEFI环境安装一个新的Ubuntu,然后将之前的备份根分区恢复到这个新的Ubuntu环境,最后修改fstab并通过使用Grub2命令手动加载内核启动系统后在系统里通过update-grub工具修复引导。
先新建一个虚拟机安装一个Windows系统(很多Windows PE工具没有Vmware磁盘驱动),再新建一个虚拟机安装UEFI的Linux系统。将需要迁移的Linux系统和旧的Linux系统磁盘挂载到Windows系统虚拟机下。
安装DiskGenius软件,使用该软件备份旧的Linux系统分区到镜像。注意,选择按扇区备份,不要使用按文件备份。
然后使用备份的镜像恢复到新的Linux系统上。
至此,系统迁移就算完成了,接下来修复引导。我们要准备一个系统安装镜像,并启动它,我们需要修改系统中的fstab,从而让系统可以正确认到根目录,交换目录所挂载的磁盘。
打开磁盘管理工具,并挂载磁盘。然后可以通过下面的命令查看UUID
ls -l /dev/disk/by-uuid/
修改fstab中的UUID
重启系统后显示grub界面,仍旧不能进入系统,此时我们就需要手动加载内核来启动系统。
先输入ls命令查看系统分区
使用下面的指令来设置启动参数,其中gpt2对应sda2,vmlinuz对应系统内核。系统内核可能有多个,请按tab键补全并选择自己的内核,root代表根目录,boot就是启动内核。
set root=(hd0,gpt2) linux /boot/vmlinuz ro root=/dev/sda1 initrd /initrd.img boot

成功进入桌面后使用下面的命令修复启动项,并重启系统。至此系统迁移完成。
sudo update-grub

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!