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

时间:2020-03-21 11:47:48  来源:igfitidea点击:

本教程说明什么是UEFI以及如何在Linux中启用对KVM虚拟机的UEFI支持。
UEFI是统一可扩展固件接口的缩写,是传统BIOS的新替代品。
与BIOS不同,UEFI是一个微型操作系统,它位于计算机硬件和固件的顶部。
请记住,BIOS存储在固件中。
UEFI可以做的不仅仅是BIOS。
我们可以将其存储在主板上的闪存中,也可以存储在硬盘驱动器中,甚至存储在网络共享中。

用UEFI替换旧BIOS的最初动机是在1990年代中期早期开发第一个Intel-HP Itanium系统的过程中产生的。
由于较大服务器平台的BIOS限制,英特尔于1998年开始从事“英特尔启动计划”。
后来被称为可扩展固件接口(EFI)。

苹果为其基于Intel的Mac系统采用了EFI,惠普为Itanium 2服务器采用了EFI。
但是,其他芯片供应商对采用英特尔EFI的兴趣不大。
2005年,由多家领先的技术组成了一个名为Unified EFI Forum的非营利组织,这些包括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规范的管理和推广。

与旧版BIOS相比,UEFI规范具有许多重要优势。
以下是一些值得注意的功能:

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

请注意,我们无法在现有硬件中将BIOS替换为UEFI。
我们需要购买支持并包括UEFI的硬件。
UEFI规范与平台无关,支持多种平台和体系结构。
希望我们对UEFI有基本的了解。
现在让我们看看如何为KVM guest虚拟机启用UEFI支持。

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

假设我们已经在系统上安装了KVM。

在创建虚拟机之前,我们需要在KVM主机系统上安装OVMF软件包。
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/theitroad/centos8.iso --network bridge=br0 --graphics vnc --boot uefi

或者,我们可以使用Virt-manager GUI应用程序创建新的访客。

对于新手来说,这非常容易。

打开Virt-manager应用程序并创建一个新的虚拟机:

选择KVM guest虚拟机的安装介质或者ISO文件位置:

选择KVM guest虚拟机的内存和cpu核心:

为KVM guest虚拟机创建磁盘镜像:

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

现在,我们应该看到虚拟机的硬件详细信息。
在“概述”部分中,从“固件”下拉框中选择“ UEFI X86_64 ...”选项。

单击“应用”按钮,然后单击顶部的“开始安装”按钮以继续安装KVM来宾计算机。

现在,我们应该在初始启动时看到TianoCore初始屏幕:

继续并照常完成安装。

UEFI设置界面

对于传统的BIOS,必须在启动菜单出现之前按适当的功能键才能进入BIOS并修改任何BIOS设置。
在UEFI中,这不是必需的。
我们可以直接从Grub引导菜单访问UEFI设置屏幕。

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

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

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

在PC固件中进行任何更改后,选择“继续”,然后按ENTER返回到引导菜单。