diff --git a/build_library/qemu_template.sh b/build_library/qemu_template.sh index 30de34c9be..66cb2234fc 100755 --- a/build_library/qemu_template.sh +++ b/build_library/qemu_template.sh @@ -8,6 +8,8 @@ VM_KERNEL= VM_INITRD= VM_MEMORY= VM_CDROM= +VM_PFLASH_RO= +VM_PFLASH_RW= VM_NCPUS="`grep -c ^processor /proc/cpuinfo`" SSH_PORT=2222 SSH_KEYS="" @@ -169,6 +171,12 @@ if [ -n "${VM_CDROM}" ]; then set -- -cdrom "${SCRIPT_DIR}/${VM_CDROM}" "$@" fi +if [ -n "${VM_PFLASH_RO}" ] && [ -n "${VM_PFLASH_RW}" ]; then + set -- \ + -drive if=pflash,file="${SCRIPT_DIR}/${VM_PFLASH_RO}",format=raw,readonly \ + -drive if=pflash,file="${SCRIPT_DIR}/${VM_PFLASH_RW}",format=raw "$@" +fi + # Default to KVM, fall back on full emulation qemu-system-x86_64 \ -name "$VM_NAME" \ diff --git a/build_library/vm_image_util.sh b/build_library/vm_image_util.sh index 412b00674f..9d0ffb5b22 100644 --- a/build_library/vm_image_util.sh +++ b/build_library/vm_image_util.sh @@ -12,6 +12,7 @@ VALID_IMG_TYPES=( openstack qemu qemu_no_kexec + qemu_uefi rackspace rackspace_onmetal rackspace_vhd @@ -111,6 +112,11 @@ IMG_qemu_no_kexec_DISK_FORMAT=qcow2 IMG_qemu_no_kexec_DISK_LAYOUT=vm IMG_qemu_no_kexec_CONF_FORMAT=qemu +IMG_qemu_uefi_BOOT_KERNEL=0 +IMG_qemu_uefi_DISK_FORMAT=qcow2 +IMG_qemu_uefi_DISK_LAYOUT=vm +IMG_qemu_uefi_CONF_FORMAT=qemu_uefi + ## xen IMG_xen_BOOT_KERNEL=0 IMG_xen_CONF_FORMAT=xl @@ -574,6 +580,19 @@ _write_qemu_conf() { sed -e "s%^VM_IMAGE=.*%VM_IMAGE='${dst_name}'%" -i "${script}" } +_write_qemu_uefi_conf() { + local script="$(_dst_dir)/$(_dst_name ".sh")" + local ovmf_ro="$(_dst_name "_ovmf_code.fd")" + local ovmf_rw="$(_dst_name "_ovmf_vars.fd")" + + _write_qemu_conf + cp "/usr/share/edk2-ovmf/OVMF_CODE.fd" "$(_dst_dir)/${ovmf_ro}" + cp "/usr/share/edk2-ovmf/OVMF_VARS.fd" "$(_dst_dir)/${ovmf_rw}" + sed -e "s%^VM_PFLASH_RO=.*%VM_PFLASH_RO='${ovmf_ro}'%" \ + -e "s%^VM_PFLASH_RW=.*%VM_PFLASH_RW='${ovmf_rw}'%" -i "${script}" + VM_GENERATED_FILES+=( "$(_dst_dir)/${ovmf_ro}" "$(_dst_dir)/${ovmf_rw}" ) +} + _write_pxe_conf() { local script="$(_dst_dir)/$(_dst_name ".sh")" local vmlinuz_name="$(_dst_name ".vmlinuz")"