从 UEFI 镜像启动¶
https://blueprints.launchpad.net/nova/+spec/boot-from-uefi
nova 计算 libvirt 驱动程序不支持从 UEFI 镜像启动。这是一个问题,因为操作系统向 UEFI 格式迁移的趋势正在缓慢但稳定地发展,在某些情况下,UEFI 格式已成为它们唯一的格式。微软 Windows 正在朝着这个方向发展,而 Clear Linux 已经属于这一类别。鉴于此,我们建议使用 libvirt 驱动程序启用 UEFI 启动,并使用经过充分测试和实战检验的 Open Virtual Machine Firmware (OVMF) 作为 x86_64 虚拟机的固件。
统一可扩展固件接口 (UEFI) 是一种旨在取代 BIOS 的标准固件。自 1.2.9 版本以来,libvirt 支持使用 UEFI/OVMF 启动虚拟机。
OVMF 是 Intel 的 tianocore 固件在 qemu 虚拟机上的移植,换句话说,该项目为虚拟机启用 UEFI 支持。
问题描述¶
平台厂商越来越多地采用 UEFI 作为平台固件,取代传统的 BIOS。这在一定程度上导致操作系统厂商也开始支持或提供 UEFI 镜像。然而,随着 UEFI 镜像对操作系统的采用率不断提高,已经显而易见,OpenStack 通过其 Nova 计算 Libvirt 驱动程序,不支持 UEFI 镜像启动。这是一个问题,需要解决。
用例¶
1. 用户希望使用 UEFI 启动虚拟机。在这种情况下,用户需要能够告知 Nova 启动所需的一切信息。唯一需要的新信息应该是新的镜像属性,指示将使用哪种固件类型,uefi 或 bios。
提议的变更¶
在 libvirt 驱动程序中添加缺失的元素以支持 OVMF 固件。同时添加一个新的镜像元数据值来指定将使用哪种固件类型。
以下是新的元数据值。
‘hw_firmware_type’: fields.EnumField()
这表示将使用哪种固件类型来启动虚拟机。此属性可以设置为 ‘uefi’ 或 ‘bios’。‘uefi’ 将指示将使用 uefi 固件。如果未设置该属性,将使用 ‘bios’ 固件。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
应将以下软件包添加到系统中
ovmf
开发人员影响¶
无
实现¶
负责人¶
主要负责人:qiaowei-ren
其他贡献者:Victor Morales <victor.morales@intel.com> Xin Xiaohui <xiaohui.xin@intel.com>
工作项¶
主要工作项目是
将 ‘hw_firmware_type’ 字段添加到 ImageMetaProps 对象
当存在 UEFI 镜像属性时,更新 libvirt guest XML 配置
依赖项¶
此规范仅实现 x86_64 和 arm64 的 uefi 启动。并且此规范将依赖于以下库
libvirt >= 1.2.9
来自 EDK2 的 OVMF
测试¶
需要新的单元测试。如果没有某种功能测试,在使用时会发出警告,表明它未经测试,因此被认为是实验性的。
文档影响¶
关于使用 Nova 启动 UEFI 镜像的一些小的补充,关于额外的配置选项和元数据属性的说明,UEFI 固件的运营商/安装信息。此外,还应更新虚拟机管理程序支持矩阵。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Mitaka |
引入 |