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

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

内容

  1. 什么是 UEFI?
  2. UEFI优势
  3. 在 Linux 中为 KVM 虚拟机启用 UEFI 支持
    1. 使用 UEFI 引导虚拟机
      1. UEFI设置界面

什么是 UEFI?

欧足联, 短缺 可扩展的 F固件 一世界面,是传统BIOS的全新替代品。

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

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

用 UEFI 取代传统 BIOS 的最初动机是在 1990 年代中期第一批 Intel-HP Itanium 系统的早期开发过程中诞生的。

由于 BIOS 对大型服务器平台的限制,Intel 于 1998 年开始致力于“Intel Boot Initiative”. 它后来被称为可扩展固件接口 (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 家公司的代表。

以 EFI 1.10 规范为起点,UEFI 论坛接管了开发,并从 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 是 Intel 的 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 返回启动菜单。

资源:

  • UEFI论坛

基于BiosKernel的虚拟机KVMLinuxqemuTianocoreUEFI统一可扩展固件接口虚拟化