Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

By default BIOS legacy boot loader is selected, When an instance is deployed on VMware ESXI host using CP CloudStack UI. 

XenServer

By default BIOS legacy boot loader is selected, When an instance is deployed on Xen host using CP CloudStack UI. 

KVM:      

By default BIOS legacy boot loader is selected, When an instance is deployed on KVM host using CP CloudStack UI.  KVM by default does not come with UEFI boot out of the box. 

...

  1. Deploy VM 'review' Wizard  added with new select drop downs "Boot Type[UEFI,BIOS]", "Boot Mode[LEGACY, SECURE]".  Once the Deploy VM request is submitted with params [Boot type, Boot Mode] , same information will be persisted in CP CloudStack 'cloud' DB in table 'user_vm_details' as [<id>,<vm-id>,<UEFI or BIOS>,<LEGACY or SECURE>,<1>]. In case of deployed Guest VM Boot information is BIOS  and LEGACY by default and there won't any functionality changes. Once VM is deployed in either UEFI or BIOS mode remains in the same mode till it's end of life cycle and can't be altered.
  2. Once resource availability and authentication done, user vm deploy job is submitted to VM Job queue. Job Framework will handle the rest of the work flow for vm deploy. In order to deploy the Guest VM in UEFI enabled Host  Deployment Planner and Allocator are extended with UEFI support. 
  3. ServerDiscovery functionality is extended with UEFI feature detection while adding/on-boarding a Host [KVM,VMware] in CloudPlatformCloudStack. When a new Host is on-boarded to CP CloudStack , additional detail information is inserted in 'host_details' table as [<id>,<host_id>,Host.Uefi.Enable,<Yes or No>].
  4. VM deploy process happens using deployment planner. Since all the Hosts listed by the Planner in the deployment plan may not support UEFI boot , additional care need to be taken in case of UEFI enabled VM Deploy. While the selected planner picking the available hosts , additional constraint will be added to get host list.  
  5. Deployment Planner Changes : 
    • Guest VM deployed with out UEFI Boot Loader
       In this scenario planner behaviour is same as earlier , it will try at the CPU and memory capacity of the cluster to create an ordered cluster list. And based on the least utilised Cluster it will returns the Cluster List for the deployment Allocator.
    • Guest VM deployed with UEFI Boot Loader
      Where as in this scenario it returns the Cluster List based on the resource availability And the cluster  list is reordered to protect the Host with UEFI capabilities. 
    • Guest VM deployed with UEFI Boot Loader
      DeployVM Cmd additional params will be considered in this use case, and try to fetch Hosts with UEFI capability List. Cluster List which is given by FirstFit Planner will get retained with the constraint that hosts which are not supporting UEFI capability. In case of no Host Available in the current cluster then as per the existing CP CloudStack framework it try's to deploy in other cluster and looks for the host with UEFI capability.
    • Guest VM deployed with out UEFI Boot Loader
      Nothing changed in the behaviour, it will be like as previous.
    • FirstFitPlanner is handled two cases 
    • FirstFit Allocator Changes:
  6. Add Host Command get the information from the ServerDiscovery Resource layer, whether  Host supports UEFI boot or not. If host supports uefi, host information will be updated in host_details table as explained in (point 3). 
  7. It's not supported In case of existing [KVM]Host to be updated with UEFI capabilities once it's added.
  8. In order to support legacy behaviour by default  ['Uefi Supported','No'] considered for the existing Host.
  9. UEFI support is prohibited for migrating the VM to another host in cluster , in this implementation. It can be addressed in future release as Enhancement.
  10. Host Changes

KVM  

    1. KVM Host ( RHEL / CENT OS 7.x above version) along with agent , additional edk2-ovmf/OVMF  package should be installed
    2. Libvirt configuration changes like adding nvram config param in /etc/libvirt/qemu.conf
    3. UEFI related params information added in uefi.properties which is located /etc/cloudstack/agent
    4. In case of newly configuring KVM Host , Cloud Admin [Customer admin] will have to prepare and add uefi.properties after successful completion of agent.

VMWare

    • Check whether specified VM supports secure UEFI boot mode OR not.
    • Update VM configuration to use UEFI legacy mode for booting
    • Ensure when host is added, to check if it supports (UEFI legacy OR UEFI secure) boot modes, and update DB accordingly. This information should be displayed in UI as well as listHost response.
    • Both IDE and SATA controllers can be used in UEFI booted VM for CDROM drives. But preferred controller is SATA where ever EFI firmware is recommended. Hence instance will be configured with SATA CDROM at virtual node "0:0". In case of DHCP offload scenario, the user instance will have config-drive ISO image mounted on IDE controller at "0:1" which is same as the instance booted with BIOS that contains all CDROM drives on IDE controller only. Hence irrespective of BIOS or EFI boot mode every instance deployed by CloudStack will have IDE 0:1 node reserved only for config drive ISO image purpose.
  1.  
    • KVM
    • VMWare

11. Design should support the legacy feature with out any deviation in the functionality. 

Protecting non-UEFI instances from being deployed on UEFI capable hosts

...

  1. Enable deploy VM wizard Offer wizard with UEFI param[Boot type, Boot Mode]
  2. Display VM Instance detail with UEFI information either enabled or disabled
    1. Image Removed
  3. If the host is UEFI enabled, details page will be updated like shown below 
    1. Image Added
  4. Display VM Instance detail with UEFI information either enabled or disabled

           


Upgrade

N/A

Open Items/Questions

  1. UEFI enabled template provision/ support to be taken care by Customer Cloud Admin. 

References

...

  1. http://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt
  2. https://www.kraxel.org/repos/
  3. https://wiki.ubuntu.com/UEFI/EDK2
  4. https://wiki.ubuntu.com/UEFI/SecureBoot
  5. https://github.com/tianocore/tianocore.github.io/wiki/How-to-run-OVMF
  6. https://communities.vmware.com/docs/DOC-28494

...