Build Appliance 2023
Build
Using either poky or a no-distro oe-core simply run the following to generate the Build Appliance image:
$ bitbake build-appliance-image
At a minimum the configuration requires:
- the MACHINE should be set to qemux86-64
- DISTRO_FEATURES must include opengl, x11, xattr
- VOLATILE_TMP_DIR must not be set to yes
Usage
Currently, building the build-appliance-image target generates the following artifacts (among others):
- build-appliance-image*rootfs.wic.vhd
- build-appliance-image*rootfs.wic.vhdx
- build-appliance-image*rootfs.wic.vmdk
The resulting *vmdk should be runnable in any of:
- qemu
- virtualbox
- vmware player
qemu
After successfully building the build-appliance-image, from the same shell from which the build was performed, run:
$ runqemu slirp kvm nographic serial tmp-glibc/deploy/images/qemux86-64/build-appliance-image-qemux86-64.wic.vmdk
To quit qemu non-gracefully use: Ctrl-A + x
virtualbox
vmware player
Issues
Qemu has support for virtio-blk and is using that. However, neither virtualbox nor vmware support virtio-blk. The ideal scenario would be to build one image, and for it to be usable in all virtualization platforms.
In-Appliance Build Performance
The goal is to build core-image-sato in each of the virtualization platforms and see which one is able to build the image the fastest.
Some virtualization platforms support some features, while other platforms support other features. On the one hand it would be great to build one image that can be usable in all virtualization platforms, on the other hand it would be nice to see how well these virtualization platforms perform when used optimally. As such, a number of tests will be performed and explained below in order to see how they compare to each other, and how they compare to a build done natively.
It's important to eliminate the effects of connectivity on the build time measurements. As such each run will start with a $ bitbake core-image-sato --runall=fetch
before performing the actual $ bitbake core-image-sato
build.
native
Virtualization platforms are not allowed to use all of the host's resources (CPU, memory). Therefore comparing the performance of a $ bitbake core-image-sato
build in each of the virtualization platforms versus the same build performed directly on my host machine (i.e. without virtualization) would not provide honest results since none of the virtualized builds would be able to use the same amount of resources for their builds as would my host machine.
However, in the interest of providing a baseline, a $ bitbake core-image-sato
build from poky:311c76c8e8cf39fa41456561148cebe2b8b3c057
performed directly on my host machine takes:
real 86m8.781s user 1m7.070s sys 1m36.769s