vSphere环境ubuntu24.04虚拟机从BIOS切换为EFI模式启动

文章目录

一、操作背景

公司虚拟化平台vsphere上新建一台大模型服务器,操作系统是ubuntu24.04版本,BIOS启动方式。ESXI上正在配置直通显卡,需要EFI,这与现有的BIOS冲突,因此需要将BIOS改为EFI。

二、操作步骤

注意事项:

撰写本文时,笔者已将BIOS改为EFI,因此图片的各项配置是最终结果。如果想模仿本文操作,您主机的部分配置显示信息与笔者不同,是正常的,只需要确认最后正常修改为EFI即可。

1.配置本地镜像仓库(可选)

笔者的工作场景,无法直接从外网的镜像源地址下载对应的软件包,因此需要把ISO镜像挂载到当前主机,如果apt下载没有问题的,可以忽略此步。

首先打开vsphere找到对应的主机,添加CD设备,勾好各选项后,找到上传好的ISO镜像文件。

一般来讲,新加的镜像文件是 /dev/sr0

这里 笔者的镜像文件是 /dev/sr1

我只是临时使用镜像源,因此不配置开机自动挂载。

bash 复制代码
mount /dev/sr1 /mnt

最终的挂载情况如上图显示,接着修改apt配置文件。

进入到 /etc/apt/sources.list.d/ 目录,备份ubuntu.sources 为 ubuntu.sources.bak ,然后对源配置文件进行修改,结果如下。

如果挂载目录和笔者一样都是 /mnt 那么ubuntu.sources文件直接复制就好,不需要任何修改;如果不一样,只需要改URIs这个参数就好。

最后更新软件包列表

bash 复制代码
apt update

到此为止,本地镜像仓库配置完成。

2.确认当前分区是gpt分区

使用命令查看当前系统根分区/ 是否是gpt分区,如果是mbr分区,需要转化为gpt

bash 复制代码
fdisk -l /dev/sda

如果是mbr分区,需要首先安装gdisk工具

bash 复制代码
apt install gdisk

接着转换格式硬盘

bash 复制代码
gdisk /dev/sda

接着按照提示,选择 r 恢复和变换菜单;选择g进行转换。

此处具体操作不作赘述,如果不清楚,可以查找其他线上资料。

3.创建EFI分区

同样的,先创建一个512M硬盘,精简置备。

根据2.2的第二张图片,笔者的新块存储设备名称是 sdc ,文件的绝对路径是/dev/sdc 因此对其创建分区。

bash 复制代码
fdisk /dev/sdc

磁盘分区的具体操作,此处笔者不作具体赘述,若不清楚,可参考笔者的另一篇文章。

Linux磁盘分区和管理

将512M全部空间分配给 /dev/sdc1

格式化操作

bash 复制代码
mkfs.fat -F32 /dev/sdc1

新建目录 /boot/efi

bash 复制代码
mkdir /boot/efi

设置为永久挂载模式

在 /etc/fstab 文件添加一行内容如下

bash 复制代码
/dev/sdc1 /boot/efi vfat defaults 0 1

最后使挂载生效。

bash 复制代码
mount -a

4.安装和修改GRUB

安装GRUB引导程序,指向EFI分区

bash 复制代码
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu

执行这个命令后,有可能会报错。

报错大概如下:

bash 复制代码
grub-install:error   /usr/lib/grub/x86_64-rfi/modinfo.sh doesn't exist. 

看报错是缺少什么文件,实际上就是 GRUB EFI 的相关软件包未安装

所以直接装上就好。

bash 复制代码
apt install grub-efi-amd64

然后重新跑一下第一个命令。

最后重新生成gurb配置文件。

bash 复制代码
update-grub

5.重启配置生效

首先虚拟机关机。

然后打开vsphere控制台,找到主机,将BIOS改为EFI,保存退出。

重启开机后,需要等待一段时间,能够正常开机并且经过下面的验证,表示已从BIOS切换为EFI模式。

三、验证EFI模式

方法 1:检查 /sys/firmware/efi 目录

bash 复制代码
ls /sys/firmware/efi

判断结果:

目录存在(显示文件列表)→ EFI/UEFI 模式

目录不存在(报错 No such file or directory)→ Legacy BIOS 模式

方法 2:检查 dmesg 启动日志

bash 复制代码
dmesg | grep -i "efi\|bios"

判断结果:

出现 EFI v 或 UEFI → UEFI 模式

出现 BIOS 或无 EFI 字样 → Legacy BIOS 模式

方法 3:使用 efibootmgr(仅 UEFI 有效)

bash 复制代码
efibootmgr

判断结果:

显示 UEFI 启动项列表 → UEFI 模式

报错 EFI variables are not supported → BIOS 模式

方法 4:检查磁盘分区表

bash 复制代码
parted -l | grep "Partition Table"

判断结果:

Partition Table: gpt → 通常是 UEFI 模式(GPT 分区表)

Partition Table: msdos → 通常是 BIOS 模式(MBR 分区表)

⚠️ 注意:磁盘分区表(GPT/MBR)和启动模式(UEFI/BIOS)并非严格绑定,但 UEFI 通常搭配 GPT,BIOS 通常搭配 MBR。

相关推荐
矩阵老炮2 小时前
Ubuntu20.4编译AOSP源码实践
ubuntu·aosp
嵌入式成长家3 小时前
ubuntu rules 使用规则
linux·ubuntu·rules 使用规则
椰汁菠萝3 小时前
ubuntu下免sudo执行docker
ubuntu·docker·免sudo
BD_Marathon4 小时前
ubuntu防火墙使用
linux·ubuntu
Koma_zhe10 天前
【ToolJet远程开发】Ubuntu+Docker结合内网穿透技术搭建ToolJet远程开发环境
linux·ubuntu·docker
从零开始学习人工智能10 天前
在Ubuntu上设置Firefox自动化测试环境:指定Marionette端口号
ubuntu·firefox·腾讯云
Yawesh_best10 天前
从零到一:基于Ubuntu部署MyIP系统并整合内网穿透技术实现远程访问
linux·运维·ubuntu
珺毅同学10 天前
ubuntu24.04+5090显卡驱动安装踩坑
linux·ubuntu·gru
昵称什么的不存在11 天前
Ubuntu 20.04安装Miniconda
linux·运维·ubuntu
lsnm11 天前
【LINUX网络】网络socet接口的基本使用以及实现简易UDP通信
linux·网络·c++·网络协议·ubuntu·udp·centos