什么是BIOS?

计算机启动时会加载 BIOS,以初始化和测试硬件功能。它使用 POST 或 Power On Self Test 来确保硬件配置有效且工作正常,然后寻找存储引导设备的 MBR(Master Boot Records),并使用它来启动引导加载程序,然后是内核,然后操作系统。

所有这些在 BIOS 上的启动过程都称为 Legacy Boot,下面简单介绍一下 BIOS 上的启动过程。

BIOS > MBR > Bootloader > Kernel > Operating System

BIOS 被认为是旧的和过时的固件,尽管总会有人使用它。 BIOS 对于当今的计算机和现代 PC 而言功能有限,它必须在只有 1 MB 空间的 16 位处理器上运行。此外,它会同时初始化多个硬件,这使得启动过程变慢。

BIOS 的固件替代品是 UEFI,它在现代主板上可用。

什么是 UEFI?

UEFI 或统一可扩展固件接口被认为是 BIOS 的固件替代品。它具有更多受 BIOS 限制的特性和功能,并且在当今的主板和现代 PC 上可用。

尽管它被认为是 BIOS 的替代品,但 UEFI 的工作方式不同并且具有与 BIOS 相反的概念。 UEFI 将所有关于初始化和启动的信息存储在.efi 文件中,该文件存储在ESP(EFI System Partition)分区中。 ESP还会存储计算机上安装的操作系统的引导加载程序。

UEFI 使用 GPT 来存储有关分区的所有信息,而不是 MBR。并在下面简单说明操作系统如何在 UEFI 上启动。

UEFI > GPT/ESP > Kernel > Operating System

以下是传统 BIOS 所不具备的一些值得注意的 UEFI 功能:

  • 启动更快
  • 处理超过 2TB 或驱动器(这对当今环境来说很重要)
  • 支持4个以上带GUID分区表的分区
  • 支持安全启动
  • 支持 64 位现代固件设备
  • 具有简单的图形用户界面

KVM 虚拟化固件

默认情况下,KVM 虚拟化使用 BIOS 作为来宾虚拟机的默认固件。要在 KVM 上启用 UEFI 支持,您必须在主机系统上安装 OVMF(开放虚拟机固件)包。

OVMF 项目是 qemu 虚拟机的 intels tianocore 固件的一部分。

先决条件

对于本指南,您将了解如何在 KVM 虚拟机上启用 UEFI 支持。您将在主机上安装 OVMF 包并使用 UEFI 固件设置虚拟机。

在开始之前,请确保您的机器上安装了 KVM 虚拟化。

以下是在 Arch Linux 上安装 KVM 虚拟化的指南。

安装 OVMF 包

首先,您必须登录 KVM 主机服务器并安装软件包。默认情况下,ovmf 包可用于大多数 Linux 发行版存储库,例如 Debian、Ubuntu、CentOS 等。

1. 使用 apt 命令在基于 Debian 的系统上安装 ovmf,如下所示。

sudo apt install ovmf

2. 对于基于 RHEL 的系统,如 CentOS/Fedora,您需要使用 DNF/Yum 命令安装包 edk2-ovmf 包,如下所示。

sudo dnf install edk2-ovmforsudo yum install edk2-ovmf

3. 对于像 Manjaro 这样基于 Arch Linux 的系统,你可以使用下面的 pacman 命令。

sudo pacman -S edk2-ovmf

并启用了 KVM 虚拟化上的 UEFI 支持。现在让我们创建新的虚拟机。

在虚拟机上启用 UEFI

在 KVM 虚拟化上创建虚拟机有多种方法。您可以使用命令行模式(使用 virt-install 命令),或使用图形应用程序,例如“虚拟机管理器”。

使用 virt-install 创建虚拟机

1. 要使用命令行 virt-install 创建带有 UEFI 固件的虚拟机,请在命令选项中添加选项 --boot uefi

下面是使用 virt-install 命令创建带有 UEFI 固件的新虚拟机 Artix 的示例。

sudo virt-install --name=Artix \--os-type=Linux \--os-variant=archlinux \--vcpu=2 \--ram=1024 \--disk path=/var/lib/libvirt/images/Artix.img,size=15 \--graphics spice \--cdrom=/home/user/Desktop/artix-base-openrc-20210726-x86_64.iso \--network network=default \--boot uefi

现在您将启动到您的虚拟机。

如果您进入 UEFI 设置,下面是您将获得的一些屏幕截图。

下面是 KVM 虚拟机上 UEFI Interactive Shell 的截图。

下面是UEFI KVM虚拟机上OVMF设置的截图

使用 Virtual Machine Manager 创建虚拟机

虚拟机管理器应用程序提供用于管理 KVM 虚拟化的图形界面。

如果您是 KVM 虚拟化的新手,建议您使用 virt-manager(虚拟机管理器)来设置您的虚拟化环境。

要使用 virt-manager 应用程序创建支持 UEFI 固件的虚拟机,您必须在创建虚拟机本身的过程中对其进行配置。

1. 在使用 virt-manager 创建虚拟机的最后一个窗口中,您将看到如下确认窗口。

您必须选中选项安装前自定义配置,然后单击完成 按钮。

2. 在新窗口中,单击菜单Overview 并移至Hypervisor details 部分。

在固件选项上,选择 UEFI x86_64: ...,然后单击应用 按钮。

现在单击按钮开始安装 开始安装虚拟机。

3. 在虚拟机启动过程中,您将看到TianoCore 启动画面,如下所示。

4. 之后您将看到您的操作系统,如下所示。

现在你已经在 KVM 虚拟化上成功创建了虚拟机,虚拟机现在使用的是 UEFI 固件,而不是默认的 BIOS。

结论

恭喜!您已经学习了如何在 KVM 虚拟化上启用 UEFI 支持。此外,您还学习了如何使用 virt-install 命令行和 virt-manager 图形应用程序设置虚拟机,并在虚拟机上启用 UEFI 固件。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐