summaryrefslogtreecommitdiffstats
path: root/recipes-extended/images
Commit message (Collapse)AuthorAgeFilesLines
* oci-multiarch: fix MC defaults, deploy dependency, and OCI layoutBruce Ashfield13 days1-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Three issues prevented oci-multiarch.bbclass from producing usable multi-architecture container images: 1. MC defaults pointed to vruntime-* multiconfigs, whose BBMASK blocks OCI tooling. Changed to container-* multiconfigs which use the new vcontainer distro without BBMASK. 2. mcdepends targeted do_image_oci, but the OCI output is only deployed to deploy/images/ by the later do_image_complete task. The bbclass then failed to find the OCI directory at the expected deploy path. The original implementation assumed do_image_oci was the final step, but OE-core's image pipeline has a separate deploy phase. 3. The OCI Image Index was written directly into index.json with multiple manifest entries. This is valid per the OCI spec but skopeo requires index.json to reference a single entry when there are multiple images. The fix writes the multi-platform image index as a blob in blobs/sha256/ and has index.json reference it with a single entry of mediaType application/vnd.oci.image.index.v1+json. This nested layout is what tools like buildah and crane produce for multi-arch images, and is required for 'skopeo copy --all' to work. Also adds container-base-multiarch.bb recipe that wires up container-base for aarch64 + x86_64 builds via the oci-multiarch class. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* incus: add container host profileBruce Ashfield2026-04-091-0/+1
| | | | | | | | | | | Add CONTAINER_PROFILE=incus support so incus can be selected as the container engine for container-image-host: require conf/distro/include/container-host-incus.conf MACHINE = "qemux86-64" bitbake container-image-host Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-registry: use FEATURE_PACKAGES for IMAGE_FEATURES validationBruce Ashfield2026-03-121-2/+1
| | | | | | | | | | | | | | | Move FEATURE_PACKAGES_container-registry from container-image-host.bb to meta-virt-container.inc so it is available to all image recipes. image.bbclass check_image_features() auto-discovers FEATURE_PACKAGES_* variables as valid image features (line 72), so defining the variable globally is sufficient — no IMAGE_FEATURES[validitems] needed. This avoids the signature pollution that IMAGE_FEATURES[validitems] causes when set globally, while allowing container-registry to be used as an IMAGE_FEATURES value in any image recipe. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: update documentation with vxn/containerd integration and runtime testsBruce Ashfield2026-02-261-1/+92
| | | | | | | | | | | | | | | | README-xen.md: - Add vxn and containerd integration section describing all execution paths (containerd, vxn standalone, vdkr/vpdmn, native Docker/Podman) - Add memory requirements section explaining QB_MEM_VALUE=1024 is insufficient for vxn/vctr and documenting qemuparams="-m 4096" - Add runtime tests section with build prerequisites, test commands, and skip behavior - Fix x86-64 runqemu command to include qemuparams="-m 4096" vxn/README.md: - Add testing section referencing the pytest runtime test suite Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: add configuration tests and update documentationBruce Ashfield2026-02-261-0/+35
| | | | | | | | | | | | | Add TestXenImageMinimalX86Config test class verifying: - QB_CPU_KVM host passthrough for Xen CPUID filtering - QB_MEM_VALUE override (not QB_MEM which can't override bbclass) - dom0_mem in both QB_XEN_CMDLINE_EXTRA and WKS syslinux config - vgabios SAVANNAH_GNU_MIRROR usage Update Alpine recipe tests for per-arch checksums (name=${ALPINE_ARCH}) and S variable. Add qemux86-64 build and boot section to README-xen.md. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: fix x86-64 boot and guest bundling issuesBruce Ashfield2026-02-261-2/+8
| | | | | | | | | | | | | | | | | | Fix several issues found during x86-64 Xen testing: - xen-image-minimal: use -cpu host for KVM to avoid Xen CPUID filtering stripping AVX/AVX2 from x86-64-v3 builds, causing illegal instruction crashes in Dom0 - xen-image-minimal: use QB_MEM_VALUE (not QB_MEM) to properly override the hard assignment in qemuboot-xen-defaults.bbclass - xen-image-minimal: set dom0_mem=512M via QB_XEN_CMDLINE_EXTRA - qemuboot-xen-x86-64.cfg: add dom0_mem=512M to static syslinux config so guest autostart has memory available - vgabios: use ${SAVANNAH_GNU_MIRROR} for reliable downloads - alpine-xen-guest-bundle: add per-architecture checksums for aarch64 and x86_64 tarballs, fix S variable warning Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: add guest bundling infrastructure with cross-install classBruce Ashfield2026-02-261-25/+1
| | | | | | | | | | | | | Add xen-guest-cross-install.bbclass for bundling Xen guest images into Dom0 host images at build time. Supports per-guest configuration via varflags (memory, vcpus, vif, kernel extra), custom config files, external/pre-built guests, and autostart via /etc/xen/auto/ symlinks. Also add example-xen-guest-bundle recipe as a template, and simplify xen-guest-image-minimal by removing the old XEN_GUEST_AUTO_BUNDLE do_deploy mechanism in favor of the new class-based approach. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* vxn: add containerd OCI runtime integrationBruce Ashfield2026-02-261-163/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Add shell-based OCI runtime (vxn-oci-runtime) that enables containerd to manage Xen DomU containers through the standard runc shim. Non-terminal container output flows back to ctr via the shim's pipe mechanism. New files: - vxn-oci-runtime: OCI runtime (create/start/state/kill/delete/features/logs) - vxn-sendtty.c: SCM_RIGHTS helper for terminal mode PTY passing - containerd-shim-vxn-v2: PATH trick wrapper for runc shim coexistence - containerd-config-vxn.toml: CRI config (vxn default, runc fallback) - vctr: convenience wrapper injecting --runtime io.containerd.vxn.v2 Key design: - Monitor subprocess uses wait on xl console (not sleep-polling) for instant reaction when domain dies, then extracts output markers and writes to stdout (shim pipe -> containerd FIFO -> ctr client) - cmd_state checks monitor PID liveness (not domain status) to prevent premature cleanup race that killed monitor before output - cmd_delete always destroys remnant domains (no --force needed) - Coexists with runc: /usr/libexec/vxn/shim/runc symlink + PATH trick Verified: vctr run --rm, vctr run -d, vxn standalone, vxn daemon mode. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: document guest import system and add testsBruce Ashfield2026-02-261-95/+129
| | | | | | | | | | | | Add 3rd-party guest import section to README-xen.md covering import types, kernel modes, Alpine example, and how to add custom import handlers. Add test_xen_guest_bundle.py with 46 pytest tests covering bbclass structure, import handlers, kernel modes, license warning, Alpine recipe, and README content. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-yocto-builder: add Yocto build container with systemdBruce Ashfield2026-02-101-0/+37
| | | | | | | | | Multi-layer OCI container image that can compile the Yocto Project. Three layers: systemd-base, build-tools, yocto-extras. Features CROPS-style dynamic user creation matching /workdir volume owner UID/GID. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-systemd-base: replace ROOTFS_POSTPROCESS_COMMAND with packageBruce Ashfield2026-02-102-46/+4
| | | | | | | | | | | Factor systemd service masking into container-systemd-config package that installs mask symlinks via do_install. This replaces the ROOTFS_POSTPROCESS_COMMAND approach which is ignored in multi-layer OCI mode. The mask list is customizable via CONTAINER_SYSTEMD_MASK variable. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-registry: add local OCI registry infrastructureBruce Ashfield2026-02-091-0/+8
| | | | | | | | | | | Add container registry support for Yocto container workflows: - container-registry.bbclass with helper functions - container-registry-index.bb generates helper script with baked paths - docker-registry-config.bb for Docker daemon on targets - container-oci-registry-config.bb for Podman/Skopeo/Buildah targets - IMAGE_FEATURES container-registry for easy target configuration Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-cross-install: add bbclass for bundling containers into imagesBruce Ashfield2026-02-091-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This class enables bundling pre-built OCI containers into Yocto images at build time. It uses vdkr/vpdmn to process containers via QEMU, producing properly formatted storage that can be merged into the target rootfs. Two mechanisms for bundling containers: 1. BUNDLED_CONTAINERS variable (direct specification): - Set in local.conf or image recipe - Format: "name:runtime[:autostart][:external]" - Dependencies auto-generated at parse time - Example: BUNDLED_CONTAINERS = "container-base:docker:autostart" 2. container-bundle packages (package-based): - Recipes inherit container-bundle.bbclass to create packages - Installing packages via IMAGE_INSTALL triggers processing - merge_installed_bundles() scans installed OCI directories - Runs vrunner once in batch-import mode for efficiency Automatic dependency generation for BUNDLED_CONTAINERS: - Parses entries at recipe parse time via python __anonymous() - Derives recipe name from OCI dir names (strips -latest-oci/-oci suffix) - Generates do_rootfs[depends] on recipe:do_image_complete - Use :external tag to skip dependency for third-party blobs - Single "bitbake container-image-host" builds containers + image Usage in image recipe: inherit container-cross-install Features: - Automatic detection of target architecture - Support for both Docker and Podman runtimes - Batch import mode for efficiency with multiple containers - Autostart support via systemd services (Docker) or Quadlet (Podman) - Integration with vrunner for QEMU-based processing - Backwards compatible with legacy -latest-oci naming convention The class processes containers during do_rootfs and merges the resulting storage into /var/lib/docker or /var/lib/containers. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* metadata: add whitespace around assignmentsMartin Jansa2025-04-032-2/+2
| | | | | | | | | | With: https://lists.openembedded.org/g/bitbake-devel/message/17508 there are many WARNINGs from this layer will cover src_uri.inc files in next commit. Signed-off-by: Martin Jansa <martin.jansa@gmail.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-devtools: add editor + package management dependenciesBruce Ashfield2024-12-102-2/+55
| | | | | | | | | | | | | Since we are intalling packagemanagement to this reference container, it makes sense that our install include common utilities that post install scriptlets will need. We also add an editor by default. Finally, we configure a reference rpm package feed to illustrate how a container can be hooked to a packagefeed. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-base: fix /var/volatileBruce Ashfield2024-12-101-0/+9
| | | | | | | | | | | | The existing workaround to populate /var/volatile was broken since oe-core has a rootfs postprocess command that ensures that /var/volatile is empty .. which undoes our creation of the log and tmp directories. We :remove that routine to get our /var/volatile as we like it. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen-image-minimal: allow non-zero return codesBruce Ashfield2024-11-151-1/+1
| | | | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: add README for testingBruce Ashfield2024-11-151-0/+173
| | | | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: enable networking and guest image bundlingBruce Ashfield2024-11-152-9/+200
| | | | | | | | | | | | | | | | | | The xen host image reference needed signifant work to be functional for launching and testing Xen domu guests. Here we add additional tools to the host image, and allow it to automatically bundle guests if the configuration is enabled. We also add systemd networking configuration to create a xenbr0 which offeres connectivity to the entire reference system. See the recipes and the README for details on testing and bundling. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-host: reduce extra space to 2GBBruce Ashfield2024-11-151-1/+2
| | | | | | The previous 40G size was far too large. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-app-base: add missing space to IMAGE_INSTALL:appendBruce Ashfield2024-11-151-1/+1
| | | | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* cloud-image-controller: reduce extra space recommendationBruce Ashfield2024-11-151-1/+1
| | | | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* documentation: add README.md for available container image typesBruce Ashfield2024-11-151-0/+287
| | | | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* images: add systemd reference containerBruce Ashfield2024-11-152-0/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extends container-base to create a systemd enabled container that is an appropriate starting point if a systemd applciation is being run or a mulit-user style environment is required. The application specified in SYSTEMD_CONTAINER_APP will be installed and be available to be executed. The rootfs of this container type is post processed to enable and disable services as specified by the containeer definition. This allows service that are not appropriate in a containerized environemnt to be disabled (i.e. getty login) The list of services can be found in the recipes themselves. This container enables ssh by default, so that it can be executed in the background and then accessed as a full environment. Note: this is currently a priviledged container if run under docker. There are multiple ways to add/remove permissions from the container, and most are configurable during launch: % root@qemuarm64-54:~# docker run -d --rm --name systemd_test --privileged --cap-add SYS_ADMIN \ --security-opt seccomp=unconfined --cgroup-parent=docker.slice --cgroupns private \ --tmpfs /tmp --tmpfs /run --tmpfs /run/lock zeddii/systemd-container-base or % docker run -d --rm --name systemd_test --privileged --cgroup-parent=docker.slice \ --cgroupns private zeddii/c3-systemd-container % root@qemuarm64-54:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4b07cc907e26 zeddii/c3-systemd-container "/sbin/init" 5 minutes ago Up 5 minutes systemd_test % podman run -d --name systemd_test --privileged --cgroupns=host --tmpfs /tmp --tmpfs /run --tmpfs /run/lock \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro zeddii/systemd-container-base % ctr container create --privileged --runtime="io.containerd.runc.v2" \ --mount type=bind,src=/sys/fs/cgroup,dst=/sys/fs/cgroup,options=rbind:rw \ docker.io/zeddii/systemd-container-base:latest my_systemd_container /sbin/init % ctr task start --detach my_systemd_container % ctr task ls TASK PID STATUS my_systemd_container 690 RUNNING Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* images: add reference application containerBruce Ashfield2024-11-151-0/+17
| | | | | | | | | | | | | | | | | | | | | | | Includes container-base. Provides an application container that installs a package (or packages) to the container and make the specified command the OCI_IMAGE_ENTRYPOINT. CONTAINER_APP_CMD : the binary to run via the OCI_IMAGE_ENTRYPOINT CONATINER_APP: packages to install to the container The default entry point is the "date" command. % root@qemuarm64-54:~# docker run zeddii/container-app-base Mon Oct 28 18:41:23 UTC 2024 % root@qemuarm64-54:~# docker run --entrypoint "du" zeddii/container-app-base -sh 2.6M . % podman run docker.io/zeddii/container-app-base Mon Oct 28 18:41:23 UTC 2024 Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* images: add reference devtools containerBruce Ashfield2024-11-151-0/+22
| | | | | | | | | | | | | | | | | | | | | | | includes container-base, and adds image features to make development tools/headers available. Anything added to CORE_DEV_IMAGE_EXTRA_INSTALL will be installed into the image in it's development variant. The container shell is changed to bash from busybox. package-management is added to this image type, but by default there is no package feed configured (since it must be pointed at a build) % root@qemuarm64-54:~# docker run -it zeddii/container-devtools bash bash-5.2# du -sh . 399M . bash-5.2# rpm -qa | wc -l 308 bash-5.2# gcc --version gcc (GCC) 14.2.0 Copyright (C) 2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* images: container-image-hostBruce Ashfield2024-11-151-8/+17
| | | | | | Add some conditional distro feature checks for kubernetes flavours Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-base: define empty entry pointBruce Ashfield2024-11-151-0/+5
| | | | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* images: add container host imageBruce Ashfield2024-11-151-0/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This image is a reference implementation to create a target platform capable of running containers. This includes kernel configuration, container runtimes, tools and other support applications. The packages to install are largely described in the packagegroups that are part of this layer. packagegroups are preferred as they can easily be used to create similar images of different composition. The recipes for the packages have their list of build and runtime dependencies, as such, those dependencies are not part of the image install or listed explicitly in the packgroups. CNCF areas that have choices are described by VIRTUAL-RUNTIME variables. These variables can be set individually (in a distro, layer or local configuration file), or can be set by the setting of a "CONTAINER_PROFILE". It is possible to select incompatible packages if setting the VIRTUAL-RUNTIME variables individually. container profiles have been created as valid / tested stacks of the components in meta-virtualization. The contents of the image are selected by testing the VIRTUAL-RUNTIME values and mapping them to packagegroups. The possible VIRTUAL-RUNTIME variables (and their values) are currently: engines: docker/docker-moby, virtual-containerd, cri-o, podman, lxc VIRTUAL-RUNTIME_container_engine ??= "podman" runtime: runc, crun, runv, runx VIRTUAL-RUNTIME_container_runtime ??= "virtual-runc" networking: cni, netavark VIRTUAL-RUNTIME_container_networking ??= "cni" dns: cni, aardvark-dns VIRTUAL-RUNTIME_container_dns ??= "cni" orchestration: k8s, k3s VIRTUAL-RUNTIME_container_orchestration ??= "k3s" Kubernetes terminology "components" VIRTUAL-RUNTIME_cri ??= "virtual-containerd" VIRTUAL-RUNTIME_cni ??= "cni" To select a CONTAINER_PROFILE, set the variable in your local, distro or layer configuration: CONTAINER_PROFILE="<your value>" The possible values for CONTAINER_PROFILE can be found in conf/distro/include in the format of: meta-virt-container-<profile>.inc default (docker) containerd podman docker k3s-host k3s-node This image will eventually be modified more as something that can easily be inherited and re-used, but for now, it is a capture of the best practices in a container host image. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen-image-minimal: Add missing dependency causing intermittent failuresRichard Purdie2024-08-011-0/+1
| | | | | | | | | | | | | | | "bitbake xen-image-minimal -c do_image_wic" fails with: | ERROR: _exec_cmd: install -m 0644 tmp/deploy/images/qemux86-64/xen-qemux86-64.gz tmp/work/qemux86_64-poky-linux/xen-image-minimal/1.0/tmp-wic/hdd/boot/xen.gz returned '1' instead of 0 | output: install: cannot stat 'tmp/deploy/images/qemux86-64/xen-qemux86-64.gz': No such file or directory | | WARNING: exit code 1 from a shell command. ERROR: Task (/media/build/poky/meta-virtualization/recipes-extended/images/xen-image-minimal.bb:do_image_wic) failed with exit code '1' Add the missing dependency to avoid this. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: use bzImage for boot (instead of vmlinux)Bruce Ashfield2024-03-211-0/+7
| | | | | | | | | | | | | | | | Testing with the latest oe-core was unable to boot and only syslinux was running. It appears that the desired kernel is not on the /boot partition, and hence the system can't continue. bzImage is installed and available, so we switch to that. We also ensure that both kernel-vmlinux and kernel-image are installed to the rootfs so we can have choices in the future. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xtf: chang the old override syntaxXiangyu Chen2023-05-171-1/+1
| | | | | Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* images/kvm: check for kvm distro featureBruce Ashfield2023-03-171-0/+3
| | | | | | | | | | | We need the kvm distro feature to trigger the proper KERNEL_FEATURES and hence the proper kvm kernel module packages as listed in this image. We can avoid questions and issues by checking for the required distro feature in the image recipe. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen-image-minimal: reduce the x86 wic build dependenciesChristopher Clark2022-07-201-0/+2
| | | | | | | | | | | | | | | | | The Xen image recipe provides a default WKS_FILE for x86 builds to enable booting the image either in qemu or directly on hardware. Add settings for WKS_FILE_DEFAULT_DEPENDS that specify the wic image build dependencies, which are lower than the defaults used without it. This change reduces the amount of build resources required for CI of this image and images that are derived from it. Since WKS_FILE is specified separately for x86-64 and qemux86-64 overrides, do the same for WKS_FILE_DEFAULT_DEPENDS, even though the dependencies for the two separate WKS_FILEs are currently the same. Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: Fix class inherit in xen-imageBertrand Marquis2022-05-181-1/+1
| | | | | | | | | | | | | | Remove inherit of qemuboot classes when not build for qemu in xen-image-minimal. When reverted the handling for only adding inherited classes for qemu was kept but the line always inheriting them was kept to. This patch is fixing that so that qemuboot classes are now only added when the image is built for qemu. This fixes commit 27e5ade0abc2660226389b8b62ef07d85f4b8758 Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* Revert "qemuboot, xen-image-minimal: enable runqemu for qemuarm Xen images"Bruce Ashfield2022-05-091-2/+2
| | | | | | This reverts commit 1c746a976830ebaf85c7c8c25612bea349b0a7c5. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen images, qemuboot: configure xenbr0 bridge for runqemu, testimageChristopher Clark2022-05-091-0/+2
| | | | | | | | | | | | | | Networking for Xen guest virtual machines is commonly configured via bridging in the host system between a physical interface and the guest virtual interfaces. To make it easier to test networking and use testimage with Xen guest virtual machines, extend the bbclass that provides network configuration for qemu machines for the Xen images to configure a Xen bridge and put eth0 onto it when QB_XEN_HOST_BRIDGE is set. Signed-off-by: Christopher Clark <christopher.clark@starlab.io> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* qemuboot, xen-image-minimal: enable runqemu for qemuarm Xen imagesChristopher Clark2022-05-091-1/+5
| | | | | | | | | | | | | | | | | | | | | The Xen hypervisor built for Arm 32-bit targets can be launched with runqemu by providing a u-boot script and configuration for Qemu, which enables interactive testing of Xen images. Add qemuboot-xen-u-boot.bbclass to add a new bitbake task for generating the u-boot script. Since this increases the number of qemuboot-specific classes that are inherited by the xen-image-minimal recipe, change the inherit of all of these to only apply to qemu machines with the qemuall override. Update qemuboot-xen-defaults.bbclass to supply working default parameters for the qemuarm machine needed to boot successfully in testing. Also change all the arch-specific variable overrides into narrower qemu platform overrides instead to avoid unnecessary interactions with other Arm platform machines. Signed-off-by: Christopher Clark <christopher.clark@starlab.io> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: Add missing space in append to IMAGE_INSTALLBertrand Marquis2022-04-261-2/+2
| | | | | | | | | Add a space before doing an append in IMAGE_INSTALL on x86. This is solving issues happening if someone is using IMAGE_INSTALL in local.conf to add things to the generated image. Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen-*image-minimal: Install *xen-acpi-processor package only for x86* machinesKamil Dziezyk2022-03-022-2/+9
| | | | | | | | | | | Kernel module xen_acpi_processor is built only for x86* architectures, therefore 'kernel-module-xen-acpi-processor' package is compatible only with x86* machines. Issue-Id: SCM-3892 Signed-off-by: Kamil Dziezyk <kamil.dziezyk@arm.com> Change-Id: I8dde00e3c78a1f9eea50b19fbc1981f5e26df133 Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xtf: add testimage integration to run XTF test cases in OEQAChristopher Clark2021-09-022-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new minimal OEQA test case to run the Xen Test Framework test runner in the standard testimage step. Tested with qemux86-64 and designed for compatibility with Arm when XTF supports it. To enable, append to local.conf: INHERIT += "testimage" QEMU_USE_SLIRP = "1" TEST_SERVER_IP = "127.0.0.1" To run: bitbake -c testimage xtf-image For inspection while it runs, at another shell prompt: * Observe the image booting: tail -f ${TMPDIR}/work/qemux86_64-*/xtf-image/*/testimage/qemu_boot_log.* * Observe the tests running once boot has completed: tail -f ${TMPDIR}/work/qemux86_64-*/xtf-image/*/temp/log.do_testimage The XTF test sequence by default is a single XTF test case with minimal hardware dependency to ensure that Xen is running, the Xen toolstack is functional and XTF works. Additional XTF test cases for an image can be configured via variables that are documented in the OEQA test case: * XTF_TEST_CASES_POPULATE * XTF_TEST_CASES_SKIP * XTF_TEST_CASES_REQUIRE Since testimage requires a functioning network to perform the tests on the image and the qemu MACHINES do not have networking enabled this commit provides a new qemuboot-testimage-network bbclass to add an image postprocess command to enable a functional eth0 for qemu MACHINES. Signed-off-by: Christopher Clark <christopher.clark@starlab.io> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xtf-image: update qemuboot settingsChristopher Clark2021-09-021-5/+0
| | | | | | | | | | | | QB_MEM is now set via the qemuboot-xen-defaults bbclass and has the better default value of 512MB, which fixes some test failures observed when using the lower previous default value of 400MB. The SYSLINUX_XEN_ARGS method of setting the intended dom0 memory level did not take effect in practice, so remove it. Signed-off-by: Christopher Clark <christopher.clark@starlab.io> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xtf-image: fix QB_DEFAULT_FSTYPE: only needed for x86-64 qemuChristopher Clark2021-09-021-1/+1
| | | | | | | The qemuboot launch method for x86-64 uses wic but Arm does not. Signed-off-by: Christopher Clark <christopher.clark@starlab.io> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen-image-minimal: supply bootloader config for qemux86-64 machineChristopher Clark2021-09-021-0/+1
| | | | | | | | | | | | | | | | Add a dedicated bootloader config for the qemux86-64 machine so that the 'pmtmr=0' kernel command line argument can be provided, which removes an error message that otherwise occurs in syslog during boot which is detected by an OEQA test case causing it to fail. A new kickstart file is provided that applies the new bootloader config and it is supplied as an override to WKS_FILE for this image. This is work towards enabling the Xen Test Framework (XTF) in the OEQA testimage framework. Signed-off-by: Christopher Clark <christopher.clark@starlab.io> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* global: overrides conversion pass 2Bruce Ashfield2021-08-021-2/+2
| | | | Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* global: overrides syntax conversionBruce Ashfield2021-08-025-15/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OEcore/bitbake are moving to use the clearer ":" as an overrides separator. This is pass one of updating the meta-virt recipes to use that syntax. This has only been minimally build/runtime tested, more changes will be required for missed overrides, or incorrect conversions Note: A recent bitbake is required: commit 75fad23fc06c008a03414a1fc288a8614c6af9ca Author: Richard Purdie <richard.purdie@linuxfoundation.org> Date: Sun Jul 18 12:59:15 2021 +0100 bitbake: data_smart/parse: Allow ':' characters in variable/function names It is becomming increasingly clear we need to find a way to show what is/is not an override in our syntax. We need to do this in a way which is clear to users, readable and in a way we can transition to. The most effective way I've found to this is to use the ":" charater to directly replace "_" where an override is being specified. This includes "append", "prepend" and "remove" which are effectively special override directives. This patch simply adds the character to the parser so bitbake accepts the value but maps it back to "_" internally so there is no behaviour change. This change is simple enough it could potentially be backported to older version of bitbake meaning layers using the new syntax/markup could work with older releases. Even if other no other changes are accepted at this time and we don't backport, it does set us on a path where at some point in future we could require a more explict syntax. I've tested this patch by converting oe-core/meta-yocto to the new syntax for overrides (9000+ changes) and then seeing that builds continue to work with this patch. (Bitbake rev: 0dbbb4547cb2570d2ce607e9a53459df3c0ac284) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* qemuboot, xen-image-minimal: enable runqemu for qemuarm64 Xen imagesChristopher Clark2021-07-291-2/+3
| | | | | | | | | | | | | | | | | | | The Xen hypervisor built for Arm 64-bit targets can be launched with runqemu by providing a Device Tree binary and configuration for Qemu, which enables interactive testing of Xen images. Add qemuboot-xen-dtb.bbclass to add a new bitbake task for generating the dtb file by using lopper on a device tree produced by Qemu. Add qemuboot-xen-defaults.bbclass to supply working default parameters for the qemuarm64 machine and general support for qemuboot for Xen, and adjust the defaults as needed to boot successfully in testing. Development aided by this script by Stewart Hildebrand of DornerWorks: https://gist.github.com/stewdk/110f43e0cc1d905fc6ed4c7e10d8d35e Signed-off-by: Christopher Clark <christopher.clark@starlab.io> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xtf-image: add a new image for the Xen Test FrameworkChristopher Clark2021-04-181-0/+24
| | | | | | | | | | | | | | Testing the Xen hypervisor, with the qemux86-64 MACHINE: runqemu xtf-image nographic slirp (login as root) cd /usr/libexec/xtf ./xtf-runner --list pv # run an example test: ./xtf-runner test-pv64-livepatch-priv-check Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* container-base: make CONTAINER_SHELL a conditional image installBruce Ashfield2020-11-051-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | In some scenarios (and package managers), packages post install scripts may have references to /bin/sh. The package manager doesn't know if the scripts will run on the build host or target, so we get a calculated redepnds on /bin/sh base-files and base-passwd fall into this category of having post installs, but no need for /bin/sh on the target. If you know what you are installing, and want the smallest container possible, this package will satisfy the dependency when assembling the rootfs. To enable it, put the following in a configuration file (local.conf or otherwise): PACKAGE_EXTRA_ARCHS_append = " container-dummy-provides" This image will detect if the dummy provides arch is set, and will automatically install the providing recipe, otherwise, busybox is installed. If you have a custom shell or want a different behaviour, the CONTAINER_SHELL variable can be overriden. Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
* xen: make kernel modules an override possible variableBruce Ashfield2020-09-221-7/+7
| | | | | | | | | | Sometimes Xen is built with different mixes of kernel modules and built-in values. If we put our expected/default modules in a variable, they can be overriden by a different kernel provider as required Signed-off-by: Bruce Ashfield <bruce.ashfield@xilinx.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>