在Linux中为KVM虚拟机启用UEFI支持
本教程说明什么是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返回到引导菜单。