×

您可以以统一可扩展固件接口 (UEFI) 模式启动虚拟机 (VM)。

关于虚拟机的 UEFI 模式

统一可扩展固件接口 (UEFI) 与传统 BIOS 一样,在计算机启动时初始化硬件组件和操作系统镜像文件。UEFI 支持比 BIOS 更现代的功能和自定义选项,从而实现更快的启动时间。

它将有关初始化和启动的所有信息存储在一个扩展名为 .efi 的文件中,该文件存储在一个名为 EFI 系统分区 (ESP) 的特殊分区上。ESP 还包含安装在计算机上的操作系统的引导加载程序。

在 UEFI 模式下启动虚拟机

您可以通过编辑 VirtualMachine 清单来配置虚拟机以在 UEFI 模式下启动。

先决条件
  • 安装 OpenShift CLI (oc)。

步骤
  1. 编辑或创建 VirtualMachine 清单文件。使用 spec.firmware.bootloader 节来配置 UEFI 模式

    在安全启动处于活动状态的情况下以 UEFI 模式启动
    apiversion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        special: vm-secureboot
      name: vm-secureboot
    spec:
      template:
        metadata:
          labels:
            special: vm-secureboot
        spec:
          domain:
            devices:
              disks:
              - disk:
                  bus: virtio
                name: containerdisk
            features:
              acpi: {}
              smm:
                enabled: true (1)
            firmware:
              bootloader:
                efi:
                  secureBoot: true (2)
    # ...
    1 OpenShift Virtualization 需要启用系统管理模式 (SMM) 才能在 UEFI 模式下进行安全启动。
    2 使用 UEFI 模式时,OpenShift Virtualization 支持带有或不带有安全启动的虚拟机。如果启用了安全启动,则需要 UEFI 模式。但是,可以在不使用安全启动的情况下启用 UEFI 模式。
  2. 通过运行以下命令将清单应用到您的集群

    $ oc create -f <file_name>.yaml

启用持久性 EFI

您可以通过在集群级别配置 RWX 存储类并在虚拟机的 EFI 部分调整设置来在虚拟机中启用 EFI 持久性。

先决条件
  • 您必须拥有集群管理员权限。

  • 您必须拥有支持 RWX 访问模式和 FS 卷模式的存储类。

步骤
  • 通过运行以下命令启用 VMPersistentState 功能网关

    $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \
      --type json -p '[{"op":"replace","path":"/spec/featureGates/VMPersistentState", "value": true}]'

配置具有持久性 EFI 的虚拟机

您可以通过编辑其清单文件来配置虚拟机以启用 EFI 持久性。

先决条件
  • 已启用 VMPersistentState 功能网关。

步骤
  • 编辑虚拟机清单文件并保存以应用设置。

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm
    spec:
      template:
        spec:
          domain:
            firmware:
              bootloader:
                efi:
                  persistent: true
    # ...