vSphere环境ubuntu24.04虚拟机从BIOS切换为EFI模式启动
文章目录
- 一、操作背景
- 二、操作步骤
- 1.配置本地镜像仓库(可选)
- 2.确认当前分区是gpt分区
- 3.创建EFI分区
- 4.安装和修改GRUB
- 5.重启配置生效
- 三、验证EFI模式
- 方法 1:检查 /sys/firmware/efi 目录
- 方法 2:检查 dmesg 启动日志
- 方法 3:使用 efibootmgr(仅 UEFI 有效)
- 方法 4:检查磁盘分区表
一、操作背景
公司虚拟化平台vsphere上新建一台大模型服务器,操作系统是ubuntu24.04版本,BIOS启动方式。ESXI上正在配置直通显卡,需要EFI,这与现有的BIOS冲突,因此需要将BIOS改为EFI。
二、操作步骤
注意事项:
撰写本文时,笔者已将BIOS改为EFI,因此图片的各项配置是最终结果。如果想模仿本文操作,您主机的部分配置显示信息与笔者不同,是正常的,只需要确认最后正常修改为EFI即可。
1.配置本地镜像仓库(可选)
笔者的工作场景,无法直接从外网的镜像源地址下载对应的软件包,因此需要把ISO镜像挂载到当前主机,如果apt下载没有问题的,可以忽略此步。
首先打开vsphere找到对应的主机,添加CD设备,勾好各选项后,找到上传好的ISO镜像文件。
一般来讲,新加的镜像文件是 /dev/sr0
这里 笔者的镜像文件是 /dev/sr1
我只是临时使用镜像源,因此不配置开机自动挂载。
mount /dev/sr1 /mnt
最终的挂载情况如上图显示,接着修改apt配置文件。
进入到 /etc/apt/sources.list.d/ 目录,备份ubuntu.sources 为 ubuntu.sources.bak ,然后对源配置文件进行修改,结果如下。
如果挂载目录和笔者一样都是 /mnt 那么ubuntu.sources文件直接复制就好,不需要任何修改;如果不一样,只需要改URIs这个参数就好。
最后更新软件包列表
apt update
到此为止,本地镜像仓库配置完成。
2.确认当前分区是gpt分区
使用命令查看当前系统根分区/ 是否是gpt分区,如果是mbr分区,需要转化为gpt
fdisk -l /dev/sda
如果是mbr分区,需要首先安装gdisk工具
apt install gdisk
接着转换格式硬盘
gdisk /dev/sda
接着按照提示,选择 r 恢复和变换菜单;选择g进行转换。
此处具体操作不作赘述,如果不清楚,可以查找其他线上资料。
3.创建EFI分区
同样的,先创建一个512M硬盘,精简置备。
根据2.2的第二张图片,笔者的新块存储设备名称是 sdc ,文件的绝对路径是/dev/sdc 因此对其创建分区。
fdisk /dev/sdc
磁盘分区的具体操作,此处笔者不作具体赘述,若不清楚,可参考笔者的另一篇文章。
Linux磁盘分区和管理
将512M全部空间分配给 /dev/sdc1
格式化操作
mkfs.fat -F32 /dev/sdc1
新建目录 /boot/efi
mkdir /boot/efi
设置为永久挂载模式
在 /etc/fstab 文件添加一行内容如下
/dev/sdc1 /boot/efi vfat defaults 0 1
最后使挂载生效。
mount -a
4.安装和修改GRUB
安装GRUB引导程序,指向EFI分区
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
执行这个命令后,有可能会报错。
报错大概如下:
grub-install:error /usr/lib/grub/x86_64-rfi/modinfo.sh doesn't exist.
看报错是缺少什么文件,实际上就是 GRUB EFI 的相关软件包未安装
所以直接装上就好。
apt install grub-efi-amd64
然后重新跑一下第一个命令。
最后重新生成gurb配置文件。
update-grub
5.重启配置生效
首先虚拟机关机。
然后打开vsphere控制台,找到主机,将BIOS改为EFI,保存退出。
重启开机后,需要等待一段时间,能够正常开机并且经过下面的验证,表示已从BIOS切换为EFI模式。
三、验证EFI模式
方法 1:检查 /sys/firmware/efi 目录
ls /sys/firmware/efi
判断结果:
目录存在(显示文件列表)→ EFI/UEFI 模式
目录不存在(报错 No such file or directory)→ Legacy BIOS 模式
方法 2:检查 dmesg 启动日志
dmesg | grep -i "efi\|bios"
判断结果:
出现 EFI v 或 UEFI → UEFI 模式
出现 BIOS 或无 EFI 字样 → Legacy BIOS 模式
方法 3:使用 efibootmgr(仅 UEFI 有效)
efibootmgr
判断结果:
显示 UEFI 启动项列表 → UEFI 模式
报错 EFI variables are not supported → BIOS 模式
方法 4:检查磁盘分区表
parted -l | grep "Partition Table"
判断结果:
Partition Table: gpt → 通常是 UEFI 模式(GPT 分区表)
Partition Table: msdos → 通常是 BIOS 模式(MBR 分区表)
⚠️ 注意:磁盘分区表(GPT/MBR)和启动模式(UEFI/BIOS)并非严格绑定,但 UEFI 通常搭配 GPT,BIOS 通常搭配 MBR。