diff options
author | Tom Rini <trini@konsulko.com> | 2017-07-28 20:14:32 -0400 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-07-30 08:46:20 +0100 |
commit | 9d07c736e39a9aa922630b4241eda185a19a11ea (patch) | |
tree | ed423305c18dc7bac77ca01e8621ffd40f976b79 | |
parent | d2ebee7c3a0c8ab9a09ebad12a2fda51f8d10954 (diff) | |
download | poky-9d07c736e39a9aa922630b4241eda185a19a11ea.tar.gz |
image: Convert vmdk/vdi/qcow2 to strict CONVERSION_CMD types
The vmdk/vdi/qcow2 IMAGE_FSTYPEs predate wic. As such, they provide
some similar underlying functionality in order to produce a "disk" image
that in turn can be converted into different formats that various
hypervisor types work with. They do not however provide the ability for
other disk image types to be converted into these same output types.
Furthermore, they are less flexible than what wic does provide. This
drops the old style vmdk/vdi/qcow2 types and re-introduces them under
the CONVERSION_CMD framework. The equivalent of vmdk is now wic.vmdk
and so forth for the other types.
(From OE-Core rev: 929ba563f1bc7195c4981b8e139c432b2cc388ea)
Signed-off-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/image-vm.bbclass | 171 | ||||
-rw-r--r-- | meta/classes/image.bbclass | 3 | ||||
-rw-r--r-- | meta/classes/image_types.bbclass | 12 | ||||
-rw-r--r-- | meta/lib/oeqa/selftest/cases/runqemu.py | 8 | ||||
-rw-r--r-- | meta/recipes-core/images/build-appliance-image_15.0.0.bb | 6 | ||||
-rwxr-xr-x | scripts/runqemu | 9 |
6 files changed, 20 insertions, 189 deletions
diff --git a/meta/classes/image-vm.bbclass b/meta/classes/image-vm.bbclass deleted file mode 100644 index b52df9fbf5..0000000000 --- a/meta/classes/image-vm.bbclass +++ /dev/null | |||
@@ -1,171 +0,0 @@ | |||
1 | # image-vm.bbclass | ||
2 | # (loosly based off image-live.bbclass Copyright (C) 2004, Advanced Micro Devices, Inc.) | ||
3 | # | ||
4 | # Create an image which can be placed directly onto a harddisk using dd and then | ||
5 | # booted. | ||
6 | # | ||
7 | # This uses syslinux. extlinux would have been nice but required the ext2/3 | ||
8 | # partition to be mounted. grub requires to run itself as part of the install | ||
9 | # process. | ||
10 | # | ||
11 | # The end result is a 512 boot sector populated with an MBR and partition table | ||
12 | # followed by an msdos fat16 partition containing syslinux and a linux kernel | ||
13 | # completed by the ext2/3 rootfs. | ||
14 | # | ||
15 | # We have to push the msdos parition table size > 16MB so fat 16 is used as parted | ||
16 | # won't touch fat12 partitions. | ||
17 | |||
18 | inherit live-vm-common | ||
19 | |||
20 | do_bootdirectdisk[depends] += "dosfstools-native:do_populate_sysroot \ | ||
21 | virtual/kernel:do_deploy \ | ||
22 | syslinux:do_populate_sysroot \ | ||
23 | syslinux-native:do_populate_sysroot \ | ||
24 | parted-native:do_populate_sysroot \ | ||
25 | mtools-native:do_populate_sysroot \ | ||
26 | ${PN}:do_image_${VM_ROOTFS_TYPE} \ | ||
27 | " | ||
28 | |||
29 | IMAGE_TYPEDEP_vmdk = "${VM_ROOTFS_TYPE}" | ||
30 | IMAGE_TYPEDEP_vdi = "${VM_ROOTFS_TYPE}" | ||
31 | IMAGE_TYPEDEP_qcow2 = "${VM_ROOTFS_TYPE}" | ||
32 | IMAGE_TYPEDEP_hdddirect = "${VM_ROOTFS_TYPE}" | ||
33 | IMAGE_TYPES_MASKED += "vmdk vdi qcow2 hdddirect" | ||
34 | |||
35 | VM_ROOTFS_TYPE ?= "ext4" | ||
36 | ROOTFS ?= "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${VM_ROOTFS_TYPE}" | ||
37 | |||
38 | # Used by bootloader | ||
39 | LABELS_VM ?= "boot" | ||
40 | ROOT_VM ?= "root=/dev/sda2" | ||
41 | # Using an initramfs is optional. Enable it by setting INITRD_IMAGE_VM. | ||
42 | INITRD_IMAGE_VM ?= "" | ||
43 | INITRD_VM ?= "${@'${IMGDEPLOYDIR}/${INITRD_IMAGE_VM}-${MACHINE}.cpio.gz' if '${INITRD_IMAGE_VM}' else ''}" | ||
44 | do_bootdirectdisk[depends] += "${@'${INITRD_IMAGE_VM}:do_image_complete' if '${INITRD_IMAGE_VM}' else ''}" | ||
45 | |||
46 | BOOTDD_VOLUME_ID ?= "boot" | ||
47 | BOOTDD_EXTRA_SPACE ?= "16384" | ||
48 | |||
49 | DISK_SIGNATURE ?= "${DISK_SIGNATURE_GENERATED}" | ||
50 | DISK_SIGNATURE[vardepsexclude] = "DISK_SIGNATURE_GENERATED" | ||
51 | |||
52 | build_boot_dd() { | ||
53 | HDDDIR="${S}/hdd/boot" | ||
54 | HDDIMG="${S}/hdd.image" | ||
55 | IMAGE=${IMGDEPLOYDIR}/${IMAGE_NAME}.hdddirect | ||
56 | |||
57 | populate_kernel $HDDDIR | ||
58 | |||
59 | if [ "${PCBIOS}" = "1" ]; then | ||
60 | syslinux_hddimg_populate $HDDDIR | ||
61 | fi | ||
62 | if [ "${EFI}" = "1" ]; then | ||
63 | efi_hddimg_populate $HDDDIR | ||
64 | fi | ||
65 | |||
66 | BLOCKS=`du -bks $HDDDIR | cut -f 1` | ||
67 | BLOCKS=`expr $BLOCKS + ${BOOTDD_EXTRA_SPACE}` | ||
68 | |||
69 | # Remove it since mkdosfs would fail when it exists | ||
70 | rm -f $HDDIMG | ||
71 | mkdosfs -n ${BOOTDD_VOLUME_ID} ${MKDOSFS_EXTRAOPTS} -C $HDDIMG $BLOCKS | ||
72 | mcopy -i $HDDIMG -s $HDDDIR/* ::/ | ||
73 | |||
74 | if [ "${PCBIOS}" = "1" ]; then | ||
75 | syslinux_hdddirect_install $HDDIMG | ||
76 | fi | ||
77 | chmod 644 $HDDIMG | ||
78 | |||
79 | ROOTFSBLOCKS=`du -Lbks ${ROOTFS} | cut -f 1` | ||
80 | TOTALSIZE=`expr $BLOCKS + $ROOTFSBLOCKS` | ||
81 | END1=`expr $BLOCKS \* 1024` | ||
82 | END2=`expr $END1 + 512` | ||
83 | END3=`expr \( $ROOTFSBLOCKS \* 1024 \) + $END1` | ||
84 | |||
85 | echo $ROOTFSBLOCKS $TOTALSIZE $END1 $END2 $END3 | ||
86 | rm -rf $IMAGE | ||
87 | dd if=/dev/zero of=$IMAGE bs=1024 seek=$TOTALSIZE count=1 | ||
88 | |||
89 | parted $IMAGE mklabel msdos | ||
90 | parted $IMAGE mkpart primary fat16 0 ${END1}B | ||
91 | parted $IMAGE unit B mkpart primary ext2 ${END2}B ${END3}B | ||
92 | parted $IMAGE set 1 boot on | ||
93 | |||
94 | parted $IMAGE print | ||
95 | |||
96 | awk "BEGIN { printf \"$(echo ${DISK_SIGNATURE} | sed 's/\(..\)\(..\)\(..\)\(..\)/\\x\4\\x\3\\x\2\\x\1/')\" }" | \ | ||
97 | dd of=$IMAGE bs=1 seek=440 conv=notrunc | ||
98 | |||
99 | OFFSET=`expr $END2 / 512` | ||
100 | if [ "${PCBIOS}" = "1" ]; then | ||
101 | dd if=${STAGING_DATADIR}/syslinux/mbr.bin of=$IMAGE conv=notrunc | ||
102 | fi | ||
103 | |||
104 | dd if=$HDDIMG of=$IMAGE conv=notrunc seek=1 bs=512 | ||
105 | dd if=${ROOTFS} of=$IMAGE conv=notrunc seek=$OFFSET bs=512 | ||
106 | |||
107 | cd ${IMGDEPLOYDIR} | ||
108 | |||
109 | ln -sf ${IMAGE_NAME}.hdddirect ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.hdddirect | ||
110 | } | ||
111 | |||
112 | python do_bootdirectdisk() { | ||
113 | validate_disk_signature(d) | ||
114 | set_live_vm_vars(d, 'VM') | ||
115 | if d.getVar("PCBIOS") == "1": | ||
116 | bb.build.exec_func('build_syslinux_cfg', d) | ||
117 | if d.getVar("EFI") == "1": | ||
118 | bb.build.exec_func('build_efi_cfg', d) | ||
119 | bb.build.exec_func('build_boot_dd', d) | ||
120 | } | ||
121 | |||
122 | def generate_disk_signature(): | ||
123 | import uuid | ||
124 | |||
125 | signature = str(uuid.uuid4())[:8] | ||
126 | |||
127 | if signature != '00000000': | ||
128 | return signature | ||
129 | else: | ||
130 | return 'ffffffff' | ||
131 | |||
132 | def validate_disk_signature(d): | ||
133 | import re | ||
134 | |||
135 | disk_signature = d.getVar("DISK_SIGNATURE") | ||
136 | |||
137 | if not re.match(r'^[0-9a-fA-F]{8}$', disk_signature): | ||
138 | bb.fatal("DISK_SIGNATURE '%s' must be an 8 digit hex string" % disk_signature) | ||
139 | |||
140 | DISK_SIGNATURE_GENERATED := "${@generate_disk_signature()}" | ||
141 | |||
142 | run_qemu_img (){ | ||
143 | type="$1" | ||
144 | qemu-img convert -O $type ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.hdddirect ${IMGDEPLOYDIR}/${IMAGE_NAME}.$type | ||
145 | |||
146 | ln -sf ${IMAGE_NAME}.$type ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.$type | ||
147 | } | ||
148 | create_vmdk_image () { | ||
149 | run_qemu_img vmdk | ||
150 | } | ||
151 | |||
152 | create_vdi_image () { | ||
153 | run_qemu_img vdi | ||
154 | } | ||
155 | |||
156 | create_qcow2_image () { | ||
157 | run_qemu_img qcow2 | ||
158 | } | ||
159 | |||
160 | python do_vmimg() { | ||
161 | if 'vmdk' in d.getVar('IMAGE_FSTYPES'): | ||
162 | bb.build.exec_func('create_vmdk_image', d) | ||
163 | if 'vdi' in d.getVar('IMAGE_FSTYPES'): | ||
164 | bb.build.exec_func('create_vdi_image', d) | ||
165 | if 'qcow2' in d.getVar('IMAGE_FSTYPES'): | ||
166 | bb.build.exec_func('create_qcow2_image', d) | ||
167 | } | ||
168 | |||
169 | addtask bootdirectdisk before do_vmimg | ||
170 | addtask vmimg after do_bootdirectdisk before do_image_complete | ||
171 | do_vmimg[depends] += "qemu-native:do_populate_sysroot" | ||
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index dee17ae9f9..40bd61480e 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass | |||
@@ -138,9 +138,6 @@ def build_live(d): | |||
138 | IMAGE_TYPE_live = "${@build_live(d)}" | 138 | IMAGE_TYPE_live = "${@build_live(d)}" |
139 | inherit ${IMAGE_TYPE_live} | 139 | inherit ${IMAGE_TYPE_live} |
140 | 140 | ||
141 | IMAGE_TYPE_vm = '${@bb.utils.contains_any("IMAGE_FSTYPES", ["vmdk", "vdi", "qcow2", "hdddirect"], "image-vm", "", d)}' | ||
142 | inherit ${IMAGE_TYPE_vm} | ||
143 | |||
144 | IMAGE_TYPE_container = '${@bb.utils.contains("IMAGE_FSTYPES", "container", "image-container", "", d)}' | 141 | IMAGE_TYPE_container = '${@bb.utils.contains("IMAGE_FSTYPES", "container", "image-container", "", d)}' |
145 | inherit ${IMAGE_TYPE_container} | 142 | inherit ${IMAGE_TYPE_container} |
146 | 143 | ||
diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass index ae4ed4fae4..e0368c7e3a 100644 --- a/meta/classes/image_types.bbclass +++ b/meta/classes/image_types.bbclass | |||
@@ -255,10 +255,6 @@ IMAGE_TYPES = " \ | |||
255 | ubi ubifs multiubi \ | 255 | ubi ubifs multiubi \ |
256 | tar tar.gz tar.bz2 tar.xz tar.lz4 \ | 256 | tar tar.gz tar.bz2 tar.xz tar.lz4 \ |
257 | cpio cpio.gz cpio.xz cpio.lzma cpio.lz4 \ | 257 | cpio cpio.gz cpio.xz cpio.lzma cpio.lz4 \ |
258 | vmdk \ | ||
259 | vdi \ | ||
260 | qcow2 \ | ||
261 | hdddirect \ | ||
262 | elf \ | 258 | elf \ |
263 | wic wic.gz wic.bz2 wic.lzma \ | 259 | wic wic.gz wic.bz2 wic.lzma \ |
264 | container \ | 260 | container \ |
@@ -270,7 +266,7 @@ IMAGE_TYPES = " \ | |||
270 | # CONVERSION_CMD/DEPENDS. | 266 | # CONVERSION_CMD/DEPENDS. |
271 | COMPRESSIONTYPES ?= "" | 267 | COMPRESSIONTYPES ?= "" |
272 | 268 | ||
273 | CONVERSIONTYPES = "gz bz2 lzma xz lz4 lzo zip sum md5sum sha1sum sha224sum sha256sum sha384sum sha512sum bmap u-boot ${COMPRESSIONTYPES}" | 269 | CONVERSIONTYPES = "gz bz2 lzma xz lz4 lzo zip sum md5sum sha1sum sha224sum sha256sum sha384sum sha512sum bmap u-boot vmdk vdi qcow2 ${COMPRESSIONTYPES}" |
274 | CONVERSION_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" | 270 | CONVERSION_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" |
275 | CONVERSION_CMD_gz = "gzip -f -9 -c ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.gz" | 271 | CONVERSION_CMD_gz = "gzip -f -9 -c ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.gz" |
276 | CONVERSION_CMD_bz2 = "pbzip2 -f -k ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" | 272 | CONVERSION_CMD_bz2 = "pbzip2 -f -k ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" |
@@ -288,6 +284,9 @@ CONVERSION_CMD_sha384sum = "sha384sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} | |||
288 | CONVERSION_CMD_sha512sum = "sha512sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha512sum" | 284 | CONVERSION_CMD_sha512sum = "sha512sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha512sum" |
289 | CONVERSION_CMD_bmap = "bmaptool create ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} -o ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.bmap" | 285 | CONVERSION_CMD_bmap = "bmaptool create ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} -o ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.bmap" |
290 | CONVERSION_CMD_u-boot = "mkimage -A ${UBOOT_ARCH} -O linux -T ramdisk -C none -n ${IMAGE_NAME} -d ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.u-boot" | 286 | CONVERSION_CMD_u-boot = "mkimage -A ${UBOOT_ARCH} -O linux -T ramdisk -C none -n ${IMAGE_NAME} -d ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.u-boot" |
287 | CONVERSION_CMD_vmdk = "qemu-img convert -O vmdk ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.vmdk" | ||
288 | CONVERSION_CMD_vdi = "qemu-img convert -O vdi ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.vdi" | ||
289 | CONVERSION_CMD_qcow2 = "qemu-img convert -O qcow2 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.qcow2" | ||
291 | CONVERSION_DEPENDS_lzma = "xz-native" | 290 | CONVERSION_DEPENDS_lzma = "xz-native" |
292 | CONVERSION_DEPENDS_gz = "pigz-native" | 291 | CONVERSION_DEPENDS_gz = "pigz-native" |
293 | CONVERSION_DEPENDS_bz2 = "pbzip2-native" | 292 | CONVERSION_DEPENDS_bz2 = "pbzip2-native" |
@@ -298,6 +297,9 @@ CONVERSION_DEPENDS_zip = "zip-native" | |||
298 | CONVERSION_DEPENDS_sum = "mtd-utils-native" | 297 | CONVERSION_DEPENDS_sum = "mtd-utils-native" |
299 | CONVERSION_DEPENDS_bmap = "bmap-tools-native" | 298 | CONVERSION_DEPENDS_bmap = "bmap-tools-native" |
300 | CONVERSION_DEPENDS_u-boot = "u-boot-mkimage-native" | 299 | CONVERSION_DEPENDS_u-boot = "u-boot-mkimage-native" |
300 | CONVERSION_DEPENDS_vmdk = "qemu-native" | ||
301 | CONVERSION_DEPENDS_vdi = "qemu-native" | ||
302 | CONVERSION_DEPENDS_qcow2 = "qemu-native" | ||
301 | 303 | ||
302 | RUNNABLE_IMAGE_TYPES ?= "ext2 ext3 ext4" | 304 | RUNNABLE_IMAGE_TYPES ?= "ext2 ext3 ext4" |
303 | RUNNABLE_MACHINE_PATTERNS ?= "qemu" | 305 | RUNNABLE_MACHINE_PATTERNS ?= "qemu" |
diff --git a/meta/lib/oeqa/selftest/cases/runqemu.py b/meta/lib/oeqa/selftest/cases/runqemu.py index 4050a4123b..8805a3837e 100644 --- a/meta/lib/oeqa/selftest/cases/runqemu.py +++ b/meta/lib/oeqa/selftest/cases/runqemu.py | |||
@@ -19,7 +19,7 @@ class RunqemuTests(OESelftestTestCase): | |||
19 | super(RunqemuTests, self).setUpLocal() | 19 | super(RunqemuTests, self).setUpLocal() |
20 | self.recipe = 'core-image-minimal' | 20 | self.recipe = 'core-image-minimal' |
21 | self.machine = 'qemux86-64' | 21 | self.machine = 'qemux86-64' |
22 | self.fstypes = "ext4 iso hddimg vmdk qcow2 vdi" | 22 | self.fstypes = "ext4 iso hddimg wic.vmdk wic.qcow2 wic.vdi" |
23 | self.cmd_common = "runqemu nographic" | 23 | self.cmd_common = "runqemu nographic" |
24 | 24 | ||
25 | # Avoid emit the same record multiple times. | 25 | # Avoid emit the same record multiple times. |
@@ -74,7 +74,7 @@ SYSLINUX_TIMEOUT = "10" | |||
74 | @OETestID(2005) | 74 | @OETestID(2005) |
75 | def test_boot_recipe_image_vmdk(self): | 75 | def test_boot_recipe_image_vmdk(self): |
76 | """Test runqemu recipe-image vmdk""" | 76 | """Test runqemu recipe-image vmdk""" |
77 | cmd = "%s %s vmdk" % (self.cmd_common, self.recipe) | 77 | cmd = "%s %s wic.vmdk" % (self.cmd_common, self.recipe) |
78 | with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu: | 78 | with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu: |
79 | with open(qemu.qemurunnerlog) as f: | 79 | with open(qemu.qemurunnerlog) as f: |
80 | self.assertTrue('format=vmdk' in f.read(), "Failed: %s" % cmd) | 80 | self.assertTrue('format=vmdk' in f.read(), "Failed: %s" % cmd) |
@@ -82,7 +82,7 @@ SYSLINUX_TIMEOUT = "10" | |||
82 | @OETestID(2006) | 82 | @OETestID(2006) |
83 | def test_boot_recipe_image_vdi(self): | 83 | def test_boot_recipe_image_vdi(self): |
84 | """Test runqemu recipe-image vdi""" | 84 | """Test runqemu recipe-image vdi""" |
85 | cmd = "%s %s vdi" % (self.cmd_common, self.recipe) | 85 | cmd = "%s %s wic.vdi" % (self.cmd_common, self.recipe) |
86 | with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu: | 86 | with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu: |
87 | with open(qemu.qemurunnerlog) as f: | 87 | with open(qemu.qemurunnerlog) as f: |
88 | self.assertTrue('format=vdi' in f.read(), "Failed: %s" % cmd) | 88 | self.assertTrue('format=vdi' in f.read(), "Failed: %s" % cmd) |
@@ -113,7 +113,7 @@ SYSLINUX_TIMEOUT = "10" | |||
113 | @OETestID(2009) | 113 | @OETestID(2009) |
114 | def test_boot_machine_slirp_qcow2(self): | 114 | def test_boot_machine_slirp_qcow2(self): |
115 | """Test runqemu machine slirp qcow2""" | 115 | """Test runqemu machine slirp qcow2""" |
116 | cmd = "%s slirp qcow2 %s" % (self.cmd_common, self.machine) | 116 | cmd = "%s slirp wic.qcow2 %s" % (self.cmd_common, self.machine) |
117 | with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu: | 117 | with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu: |
118 | with open(qemu.qemurunnerlog) as f: | 118 | with open(qemu.qemurunnerlog) as f: |
119 | self.assertTrue('format=qcow2' in f.read(), "Failed: %s" % cmd) | 119 | self.assertTrue('format=qcow2' in f.read(), "Failed: %s" % cmd) |
diff --git a/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/meta/recipes-core/images/build-appliance-image_15.0.0.bb index f145b5e656..927a9310ac 100644 --- a/meta/recipes-core/images/build-appliance-image_15.0.0.bb +++ b/meta/recipes-core/images/build-appliance-image_15.0.0.bb | |||
@@ -19,7 +19,7 @@ IMAGE_ROOTFS_EXTRA_SPACE = "41943040" | |||
19 | APPEND += "rootfstype=ext4 quiet" | 19 | APPEND += "rootfstype=ext4 quiet" |
20 | 20 | ||
21 | DEPENDS = "zip-native python3-pip-native" | 21 | DEPENDS = "zip-native python3-pip-native" |
22 | IMAGE_FSTYPES = "vmdk" | 22 | IMAGE_FSTYPES = "wic.vmdk" |
23 | 23 | ||
24 | inherit core-image module-base setuptools3 | 24 | inherit core-image module-base setuptools3 |
25 | 25 | ||
@@ -120,7 +120,7 @@ create_bundle_files () { | |||
120 | cd ${WORKDIR} | 120 | cd ${WORKDIR} |
121 | mkdir -p Yocto_Build_Appliance | 121 | mkdir -p Yocto_Build_Appliance |
122 | cp *.vmx* Yocto_Build_Appliance | 122 | cp *.vmx* Yocto_Build_Appliance |
123 | ln -sf ${IMGDEPLOYDIR}/${IMAGE_NAME}.vmdk Yocto_Build_Appliance/Yocto_Build_Appliance.vmdk | 123 | ln -sf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.wic.vmdk Yocto_Build_Appliance/Yocto_Build_Appliance.vmdk |
124 | zip -r ${IMGDEPLOYDIR}/Yocto_Build_Appliance-${DATETIME}.zip Yocto_Build_Appliance | 124 | zip -r ${IMGDEPLOYDIR}/Yocto_Build_Appliance-${DATETIME}.zip Yocto_Build_Appliance |
125 | ln -sf Yocto_Build_Appliance-${DATETIME}.zip ${IMGDEPLOYDIR}/Yocto_Build_Appliance.zip | 125 | ln -sf Yocto_Build_Appliance-${DATETIME}.zip ${IMGDEPLOYDIR}/Yocto_Build_Appliance.zip |
126 | } | 126 | } |
@@ -130,4 +130,4 @@ python do_bundle_files() { | |||
130 | bb.build.exec_func('create_bundle_files', d) | 130 | bb.build.exec_func('create_bundle_files', d) |
131 | } | 131 | } |
132 | 132 | ||
133 | addtask bundle_files after do_vmimg before do_image_complete | 133 | addtask bundle_files after do_image_wic before do_image_complete |
diff --git a/scripts/runqemu b/scripts/runqemu index 239c48ffac..fd2717ec87 100755 --- a/scripts/runqemu +++ b/scripts/runqemu | |||
@@ -96,11 +96,11 @@ Examples: | |||
96 | runqemu qemux86-64 core-image-sato ext4 | 96 | runqemu qemux86-64 core-image-sato ext4 |
97 | runqemu qemux86-64 wic-image-minimal wic | 97 | runqemu qemux86-64 wic-image-minimal wic |
98 | runqemu path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial | 98 | runqemu path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial |
99 | runqemu qemux86 iso/hddimg/vmdk/qcow2/vdi/ramfs/cpio.gz... | 99 | runqemu qemux86 iso/hddimg/wic.vmdk/wic.qcow2/wic.vdi/ramfs/cpio.gz... |
100 | runqemu qemux86 qemuparams="-m 256" | 100 | runqemu qemux86 qemuparams="-m 256" |
101 | runqemu qemux86 bootparams="psplash=false" | 101 | runqemu qemux86 bootparams="psplash=false" |
102 | runqemu path/to/<image>-<machine>.vmdk | ||
103 | runqemu path/to/<image>-<machine>.wic | 102 | runqemu path/to/<image>-<machine>.wic |
103 | runqemu path/to/<image>-<machine>.wic.vmdk | ||
104 | """) | 104 | """) |
105 | 105 | ||
106 | def check_tun(): | 106 | def check_tun(): |
@@ -220,7 +220,8 @@ class BaseConfig(object): | |||
220 | self.snapshot = False | 220 | self.snapshot = False |
221 | self.fstypes = ('ext2', 'ext3', 'ext4', 'jffs2', 'nfs', 'btrfs', | 221 | self.fstypes = ('ext2', 'ext3', 'ext4', 'jffs2', 'nfs', 'btrfs', |
222 | 'cpio.gz', 'cpio', 'ramfs', 'tar.bz2', 'tar.gz') | 222 | 'cpio.gz', 'cpio', 'ramfs', 'tar.bz2', 'tar.gz') |
223 | self.vmtypes = ('hddimg', 'hdddirect', 'wic', 'vmdk', 'qcow2', 'vdi', 'iso') | 223 | self.vmtypes = ('hddimg', 'hdddirect', 'wic', 'wic.vmdk', |
224 | 'wic.qcow2', 'wic.vdi', 'iso') | ||
224 | self.network_device = "-device e1000,netdev=net0,mac=@MAC@" | 225 | self.network_device = "-device e1000,netdev=net0,mac=@MAC@" |
225 | # Use different mac section for tap and slirp to avoid | 226 | # Use different mac section for tap and slirp to avoid |
226 | # conflicts, e.g., when one is running with tap, the other is | 227 | # conflicts, e.g., when one is running with tap, the other is |
@@ -987,6 +988,8 @@ class BaseConfig(object): | |||
987 | def setup_rootfs(self): | 988 | def setup_rootfs(self): |
988 | if self.get('QB_ROOTFS') == 'none': | 989 | if self.get('QB_ROOTFS') == 'none': |
989 | return | 990 | return |
991 | if 'wic.' in self.fstype: | ||
992 | self.fstype = self.fstype[4:] | ||
990 | rootfs_format = self.fstype if self.fstype in ('vmdk', 'qcow2', 'vdi') else 'raw' | 993 | rootfs_format = self.fstype if self.fstype in ('vmdk', 'qcow2', 'vdi') else 'raw' |
991 | 994 | ||
992 | qb_rootfs_opt = self.get('QB_ROOTFS_OPT') | 995 | qb_rootfs_opt = self.get('QB_ROOTFS_OPT') |