Users and administrators sometimes need to change the boot order of a virtual machine (VM) so that they can (for example) force a VM to boot from an ISO. However, sometimes the proxied console session does not appear until after the opportunity to enter the BIOS menu has passed. This feature allows an admin to request that a VM boots into the BIOS or other hardware setup screen rather than into the operating system (OS). The nature of the setup depends on the underlying hardware version and the OS of the virtual machine, and can be BIOS or UEFI. This feature applies to VMware only (as XenServer and KVM do not provide a BIOS).
With this feature, when deploying a virtual machine the boot type can be chosen. It can be BIOS or UEFI, and if UEFI it can be Secure or Legacy. The choice made must be supported by the underlying hardware and the virtual machine’s OS and cannot be changed once a VM instance has been created.
In addition to the boot type options “bootintosetup” can be specified. The latter option is also available on reboot or starting a stopped machine.
Some examples from cloudmonkey:
New parameters for deploy vm:
(localcloud) SBCM5> > deploy virtualmachine boot bootintosetup= bootmode= boottype=
Boot into setup takes a Boolean value:
(localcloud) SBCM5> > deploy virtualmachine bootintosetup= true false
On trying to boot a VM into hardware setup will fail. As can be seen the option is only implemented for VMware:
(localcloud) SBCM5> > reboot virtualmachine id=68ba4b83-12ec-4da1-aefa-8462d9135f00 bootintosetup=true { "accountid": "1508af67-9c07-11ea-8893-1e000601081e", "cmd": "org.apache.cloudstack.api.command.admin.vm.RebootVMCmdByAdmin", "completed": "2020-05-22T16:33:29+0000", "created": "2020-05-22T16:33:29+0000", "jobid": "0137c77f-0a00-47b8-adcf-959315846000", "jobinstanceid": "68ba4b83-12ec-4da1-aefa-8462d9135f00", "jobinstancetype": "VirtualMachine", "jobprocstatus": 0, "jobresult": { "errorcode": 431, "errortext": " Booting into a hardware setup menu is not implemented on KVM" }, "jobresultcode": 530, "jobresulttype": "object", "jobstatus": 2, "userid": "150c8809-9c07-11ea-8893-1e000601081e" } Error: async API failed for job 0137c77f-0a00-47b8-adcf-959315846000
This feature was included in Apache CloudStack 4.15, which is an LTS release.
Daan Hoogland has been a developer for 30 years. He joined the CloudStack community in 2012 and became a committer in 2013 and a PMC member later that year. After working on CloudStack during his time at Schuberg Philis and Leaseweb, Daan joined ShapeBlue in 2017 where he now builds and maintains CloudStack installations for several large customers and is part of the Software Engineering team. As a professional Daan subscribes to the idea that learning one language per year is a good objective. In. his free time, he enjoys cycling.