在 Linux 中启用对 KVM 虚拟机的 UEFI 支持

BIOS 初始化硬件并将操作系统加载到内存中。 在现代硬件中,BIOS 被 UEFI 取代。 本指南解释了什么是 UEFI 以及如何在 Linux 中为 KVM 虚拟机启用 UEFI 支持。

什么是 UEFI?

UEFI, 短缺 ü确定的 可扩展的 F固件 一世ninterface,是传统BIOS的新替代品。

与 BIOS 不同,UEFI 是位于计算机硬件和固件之上的微型操作系统。 请记住 BIOS 存储在固件中。

UEFI 可以做的不仅仅是 BIOS。 我们可以将它存储在主板上的闪存中,也可以存储在硬盘上,甚至可以存储在网络共享中。

用 UEFI 替换旧版 BIOS 的最初动机是在 1990 年代中期第一个 Intel-HP Itanium 系统的早期开发过程中诞生的。

由于大型服务器平台的 BIOS 限制,英特尔于 1998 年开始致力于“英特尔启动计划”. 它后来被称为可扩展固件接口 (EFI)。

Apple 为其基于 Intel 的 Mac 系统采用了 EFI,HP 为其 Itanium 2 服务器采用了 EFI。 然而,其他芯片供应商对采用英特尔的 EFI 并没有太大兴趣。

2005 年,一家名为 统一 EFI 论坛 由 AMD、American Megatrends、ARM、Apple、Dell、Hewlett Packard Enterprise、HP Inc.、IBM、Insyde Software、Intel、Lenovo、Microsoft 和 Phoenix Technologies 等领先科技公司组成。

UEFI 论坛的董事会成员包括来自所有这 13 家公司的代表。

UEFI 论坛以 EFI 1.10 规范为起点,接手开发,并从 2.0 版本开始将其重命名为 Unified EFI。

他们同意 UEFI 作为 BIOS 的通用替代品,并负责 UEFI 规范的管理和推广。

UEFI 优势

UEFI 规范提供了许多优于传统 BIOS 的显着优势。 以下是一些值得注意的功能:

  • 支持大于 2.2 TB 或更大的硬盘分区。
  • UEFI 将 MBR 替换为 GPT 分区,因此您现在可以在一个驱动器上拥有四个以上的主分区。
  • UEFI 安全启动功能有助于在操作系统加载之前防御恶意软件攻击,
  • 更快的启动时间。
  • 时尚的用户界面,包括图形和鼠标光标支持。
  • 高效的电源和系统管理。
  • 强大的可靠性和故障管理。
  • 向后和向前兼容性。

请注意,您不能在现有硬件中将 BIOS 替换为 UEFI。 您需要购买支持并包含 UEFI 的硬件。

UEFI 规范独立于平台,支持多种平台和架构。 希望您对 UEFI 有基本的了解。 现在让我们看看如何为 KVM 来宾启用 UEFI 支持。

在 Linux 中启用对 KVM 虚拟机的 UEFI 支持

我假设您已经在系统上安装了 KVM。 如果您尚未安装,请查看以下指南:

  • 在 CentOS 8 服务器上安装和配置 KVM
  • 在 Ubuntu 20.04 Headless Server 中安装和配置 KVM
  • 在 OpenSUSE Tumbleweed 中安装和配置 KVM

在创建虚拟机之前,我们需要安装 OVMF KVM 主机系统上的软件包。

OVMF 是英特尔 tianocore 固件到 KVM/QEMU 虚拟机的一个端口。 它包含 KVM 和 QEMU 的示例 UEFI 固件。

它允许使用 UEFI 固件轻松调试和试验,以测试虚拟机或使用(包含的)EFI shell。

安装 KVM 时,UEFI 可能已作为依赖项安装。 以防万一没有安装,可以如下图安装。

如果您的 KVM 主机使用 CentOS/RHEL 运行,请运行以安装适用于虚拟机的 UEFI 固件:

$ sudo dnf install edk2-ovmf

如果您的主机系统是 Ubuntu,请运行:

$ sudo apt install ovmf

完毕! 我们刚刚启用了 UEFI 支持。 让我们创建一个支持 UEFI 的虚拟机。

使用 UEFI 引导虚拟机

如果您更喜欢命令行模式,请添加 --boot uefi 创建新虚拟机时的选项:

$ virt-install --name centos8 --ram=2048 --vcpus=1 --cpu host --hvm --disk path=/var/lib/libvirt/images/centos8-vm1,size=10 --location /home/ostechnix/centos8.iso --network bridge=br0 --graphics vnc --boot uefi

或者,您可以使用 虚拟管理器 用于创建新来宾的 GUI 应用程序。 这对新手来说非常容易。

打开 虚拟管理器 应用程序并创建一个新的虚拟机:

从 Virt-manager 创建一个新的 KVM 虚拟机

为您的 KVM 来宾选择安装介质或 ISO 文件位置:

为 kvm 虚拟机选择安装介质或 iso

为 KVM 来宾选择内存和 cpu 内核:

为 KVM 虚拟机选择内存和 cpu 内核为 KVM 虚拟机选择内存和 cpu 内核

为 KVM 来宾创建磁盘映像:

为 KVM 虚拟机创建磁盘映像为 KVM 虚拟机创建磁盘映像

选中“安装前自定义配置”框,然后单击“完成”按钮:

安装前自定义 KVM 虚拟机配置安装前自定义 KVM 虚拟机配置

您现在应该可以看到虚拟机的硬件详细信息。 从概览部分中,选择 “UEFI X86_64……” 固件下拉框中的选项。

从 Virt-manager 的 Firmware 下拉框中选择 UEFI从 Virt-manager 的 Firmware 下拉框中选择 UEFI

单击应用按钮,然后单击顶部的“开始安装”按钮继续安装 KVM 客户机。

现在您应该在初始启动时看到 TianoCore 启动屏幕:

为 KVM 虚拟机启用 UEFI 支持为 KVM 虚拟机启用 UEFI 支持

像往常一样继续并完成安装。

UEFI设置界面

使用传统的 BIOS,您必须在启动菜单出现之前点击相应的功能键才能进入 BIOS 并修改任何 BIOS 设置。 在 UEFI 中,没有必要。 您可以直接从 Grub 启动菜单访问 UEFI 设置屏幕。

如果在 KVM 上启用了 UEFI 支持,您应该会在 Grub 启动菜单中看到“系统设置”菜单项:

Grub 启动菜单中的系统设置Grub 启动菜单中的系统设置

Enter 进入系统设置以查看 UEFI 设置界面的外观。

UEFI接口UEFI接口

您可能会在物理系统上看到具有不同功能的不同 UEFI 接口。 许多 PC 仍配备文本模式 UEFI 设置界面,其外观和工作方式与旧版 BIOS 设置屏幕类似,如下所示。

文本模式 UEFI 设置界面

对 PC 固件进行任何更改后,选择“继续”并按 ENTER 键返回启动菜单。

资源: