diff --git a/build_library/legacy_disk_layout.json b/build_library/legacy_disk_layout.json index 85c40f1d1c..fcdcf0ec0c 100644 --- a/build_library/legacy_disk_layout.json +++ b/build_library/legacy_disk_layout.json @@ -63,7 +63,7 @@ "num": 9, "label":"STATE", "type":"data", - "blocks":"2097152" + "blocks":"1048576" } ], "vm": [ @@ -73,6 +73,14 @@ "type":"data", "blocks":"6291456" } + ], + "vagrant": [ + { + "num": 9, + "label":"STATE", + "type":"data", + "blocks":"33587200" + } ] } } diff --git a/build_library/vm_image_util.sh b/build_library/vm_image_util.sh index c66db74a1f..b33bed58de 100644 --- a/build_library/vm_image_util.sh +++ b/build_library/vm_image_util.sh @@ -48,6 +48,9 @@ IMG_DEFAULT_OEM_PACKAGE= # May be raw, qcow2 (qemu), or vmdk (vmware, virtualbox) IMG_DEFAULT_DISK_FORMAT=raw +# Name of the partition layout from legacy_disk_layout.json +IMG_DEFAULT_DISK_LAYOUT=base + # Name of the target config format, default is no config IMG_DEFAULT_CONF_FORMAT= @@ -56,6 +59,7 @@ IMG_DEFAULT_MEM=1024 ## qemu IMG_qemu_DISK_FORMAT=qcow2 +IMG_qemu_DISK_LAYOUT=vm IMG_qemu_CONF_FORMAT=qemu ## xen @@ -65,24 +69,29 @@ IMG_xen_CONF_FORMAT=xl ## virtualbox IMG_virtualbox_DISK_FORMAT=vmdk +IMG_virtualbox_DISK_LAYOUT=vm IMG_virtualbox_CONF_FORMAT=ovf ## vagrant IMG_vagrant_DISK_FORMAT=vmdk +IMG_vagrant_DISK_LAYOUT=vagrant IMG_vagrant_CONF_FORMAT=vagrant IMG_vagrant_OEM_PACKAGE=oem-vagrant ## vagrant_vmware IMG_vagrant_vmware_fusion_DISK_FORMAT=vmdk +IMG_vagrant_vmware_fusion_DISK_LAYOUT=vagrant IMG_vagrant_vmware_fusion_CONF_FORMAT=vagrant_vmware_fusion IMG_vagrant_vmware_fusion_OEM_PACKAGE=oem-vagrant ## vmware IMG_vmware_DISK_FORMAT=vmdk +IMG_vmware_DISK_LAYOUT=vm IMG_vmware_CONF_FORMAT=vmx ## vmware_insecure IMG_vmware_insecure_DISK_FORMAT=vmdk +IMG_vmware_insecure_DISK_LAYOUT=vm IMG_vmware_insecure_CONF_FORMAT=vmware_zip IMG_vmware_insecure_OEM_PACKAGE=oem-vagrant @@ -92,6 +101,7 @@ IMG_ami_OEM_PACKAGE=oem-ami ## openstack, supports ec2's metadata format so use oem-ami IMG_openstack_DISK_FORMAT=qcow2 +IMG_openstack_DISK_LAYOUT=vm IMG_openstack_OEM_PACKAGE=oem-ami ## pxe, which is an cpio image @@ -182,7 +192,7 @@ _disk_ext() { # alternate filesystem image for the state partition instead of the one # from VM_SRC_IMG. Start new image using the given disk layout. unpack_source_disk() { - local disk_layout="$1" + local disk_layout="${1:-$(_get_vm_opt DISK_LAYOUT)}" local alternate_state_image="$2" if [[ -n "${alternate_state_image}" && ! -f "${alternate_state_image}" ]] @@ -217,7 +227,8 @@ unpack_source_disk() { } resize_state_partition() { - local size_in_bytes="$1" + local disk_layout="${1:-$(_get_vm_opt DISK_LAYOUT)}" + local size_in_bytes=$(get_filesystem_size "${disk_layout}" ${NUM_STATEFUL}) local size_in_sectors=$(( size_in_bytes / 512 )) local size_in_mb=$(( size_in_bytes / 1024 / 1024 )) local original_size=$(stat -c%s "${TEMP_STATE}") diff --git a/image_to_vm.sh b/image_to_vm.sh index 2664257083..2e42ef1964 100755 --- a/image_to_vm.sh +++ b/image_to_vm.sh @@ -37,7 +37,7 @@ DEFINE_string format "qemu" \ "Output format, one of: ${VALID_IMG_TYPES[*]}" DEFINE_string from "" \ "Directory containing rootfs.image and mbr.image" -DEFINE_string disk_layout "vm" \ +DEFINE_string disk_layout "" \ "The disk layout type to use for this image." DEFINE_integer mem "${DEFAULT_MEM}" \ "Memory size for the vm config in MBs." @@ -111,9 +111,8 @@ trap vm_cleanup EXIT # Unpack image, using alternate state image if defined # Resize to use all available space in new disk layout -STATEFUL_SIZE=$(get_filesystem_size "${FLAGS_disk_layout}" ${NUM_STATEFUL}) unpack_source_disk "${FLAGS_disk_layout}" "${FLAGS_state_image}" -resize_state_partition "${STATEFUL_SIZE}" +resize_state_partition "${FLAGS_disk_layout}" # Optionally install any OEM packages install_oem_package