Commit Graph

69 Commits

Author SHA1 Message Date
Bruce Ashfield
e70c9e4fff xen-image-minimal: allow non-zero return codes
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
249c79e20b xen: add README for testing
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
d2238e7287 xen: enable networking and guest image bundling
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>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
dc093093fe container-host: reduce extra space to 2GB
The previous 40G size was far too large.

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
201436cd0c container-app-base: add missing space to IMAGE_INSTALL:append
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
59ee14bf17 cloud-image-controller: reduce extra space recommendation
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
eb5c2bc4a5 documentation: add README.md for available container image types
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
1a87aca209 images: add systemd reference container
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>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
30647f3d94 images: add reference application container
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>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
683e03c275 images: add reference devtools container
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>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
f757566a13 images: container-image-host
Add some conditional distro feature checks for kubernetes flavours

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
1a4030a6c6 container-base: define empty entry point
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2024-11-15 19:50:00 +00:00
Bruce Ashfield
b164962a6e images: add container host image
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>
2024-11-15 19:50:00 +00:00
Richard Purdie
daef2c9733 xen-image-minimal: Add missing dependency causing intermittent failures
"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>
2024-08-01 16:02:45 +00:00
Bruce Ashfield
4666b2a2d8 xen: use bzImage for boot (instead of vmlinux)
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>
2024-03-21 23:15:13 +00:00
Xiangyu Chen
b4ddfe955e xtf: chang the old override syntax
Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2023-05-17 11:46:05 -04:00
Bruce Ashfield
4be39209be images/kvm: check for kvm distro feature
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>
2023-03-17 12:30:15 -04:00
Christopher Clark
fb52b8d574 xen-image-minimal: reduce the x86 wic build dependencies
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>
2022-07-20 16:04:53 -04:00
Bertrand Marquis
3e6c50b794 xen: Fix class inherit in xen-image
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 27e5ade0ab

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2022-05-18 13:52:14 -04:00
Bruce Ashfield
27e5ade0ab Revert "qemuboot, xen-image-minimal: enable runqemu for qemuarm Xen images"
This reverts commit 1c746a9768.

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2022-05-09 12:22:11 -04:00
Christopher Clark
d7a2d1b7ab xen images, qemuboot: configure xenbr0 bridge for runqemu, testimage
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>
2022-05-09 08:08:31 -04:00
Christopher Clark
1c746a9768 qemuboot, xen-image-minimal: enable runqemu for qemuarm Xen images
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>
2022-05-09 08:08:25 -04:00
Bertrand Marquis
21a5c29a10 xen: Add missing space in append to IMAGE_INSTALL
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>
2022-04-26 23:03:42 -04:00
Kamil Dziezyk
4369415b91 xen-*image-minimal: Install *xen-acpi-processor package only for x86* machines
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>
2022-03-02 15:47:55 -05:00
Christopher Clark
0f2e3d24a4 xtf: add testimage integration to run XTF test cases in OEQA
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>
2021-09-02 16:36:23 -04:00
Christopher Clark
12fb6aaffe xtf-image: update qemuboot settings
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>
2021-09-02 16:36:23 -04:00
Christopher Clark
edbfd0c10d xtf-image: fix QB_DEFAULT_FSTYPE: only needed for x86-64 qemu
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>
2021-09-02 16:36:23 -04:00
Christopher Clark
5ae8ad3316 xen-image-minimal: supply bootloader config for qemux86-64 machine
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>
2021-09-02 16:36:23 -04:00
Bruce Ashfield
1b6e39e426 global: overrides conversion pass 2
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2021-08-02 17:18:08 -04:00
Bruce Ashfield
d876cfc5bf global: overrides syntax conversion
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>
2021-08-02 17:17:53 -04:00
Christopher Clark
19347a7c4e qemuboot, xen-image-minimal: enable runqemu for qemuarm64 Xen images
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>
2021-07-29 10:55:56 -04:00
Christopher Clark
7f18136e1f xtf-image: add a new image for the Xen Test Framework
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>
2021-04-18 20:19:28 -04:00
Bruce Ashfield
afef7f0635 container-base: make CONTAINER_SHELL a conditional image install
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>
2020-11-05 14:39:32 -05:00
Bruce Ashfield
baf30af86f xen: make kernel modules an override possible variable
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>
2020-09-22 15:51:10 -04:00
Bruce Ashfield
2f22425222 xen: make QB_ assignments weak
runqemu is looking for the QB_DEFAULT_KERNEL to be set to "none"
to trigger special processing. The current set of QB_DEFAULT_KERNEL=""
won't trigger that behaviour .. so we change the default.

We also make the assignments weak, to allow easier overrides in
specific implementations.

We also need a patch to qemuboot.bbclass to make the defaults ??=,
and when that is done, our ?= here will work properly.

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2020-09-16 14:16:48 -04:00
Alistair Francis
8ffc613d12 xvisor-image-minimal: Initial commit of a Xvisor image
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2020-08-16 21:18:21 -04:00
Christopher Clark
c925905e38 xen-image-minimal: enable runqemu for x86-64
Booting this Xen image with QEMU works when launching from the
wic-generated pcbios disk image with the directdisk-xen.wks kickstart
file, so add the variable settings to make doing it simple -- eg:

    runqemu xen-image-minimal nographic slirp

Tested with MACHINEs: qemux86-64 and genericx86-64

Memory allocated to qemu is increased slightly over the default to allow
for running Xen and the Linux dom0 and guest VMs.

Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2020-03-02 15:04:28 -05:00
Christopher Clark
62afe452c2 uxen-guest-tools, image: package the Linux VM tools for uXen hypervisor
uXen is a type-2 Open Source hypervisor from Bromium/HP.
    https://www.bromium.com/opensource/

This adds packaging for the Linux guest support software, enabling OE
to produce VM images to run on the uXen hypervisor.

    uxen-guest-tools: in-guest software device drivers
    uxen-guest-image-minimal : minimal core image with uXen drivers

Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2020-02-27 17:00:09 -05:00
Christopher Clark
50669e428f xen-image-minimal: add a build dependency on the xen hypervisor
The hypervisor may not be within the dom0 filesystem image itself,
so add a task dependency to ensure that it is deployable:
    do_build[depends] += "xen:do_deploy"

Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2020-02-27 16:59:23 -05:00
Christopher Clark
19b45a9fed xen-image-minimal: add kernel-module-tun for HVM guest networking
Xen HVM guests are only on x86 platforms so add the module via overrides.

Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2020-02-27 16:59:23 -05:00
Christopher Clark
545461ba2f xen: separate recipes for hypervisor and tools; switch to git as source
This change changes the names of many packages produced: the
xen-tools recipe now builds packages previous built by the xen
recipe, so the package prefix changes from "xen-" to "xen-tools-".
A temporary bbappend is provided for qemu to ease the transition.

Multiple motivations for recipe separation:
- improves efficiency of incremental build and development
- supports building the hypervisor and tools with different toolchains
  and for different architectures

Switch to using a git recipe on the Xen stable branch:
- enables easier tracking of critical XSA security updates applied
  upstream by just advancing SRCREV along the branch
Revision has been set to the tip of the stable-4.12 branch, which
has the one XSA-312 patch applied on top of RELEASE-4.12.2.

The recipe refactor externalizes the block tap components, to enable optional
building of blktap in a separate recipe outside xen-tools, needed by OpenXT.

xenstored is made a virtual package to support switching between
alternative implementations (several exist).

Update xen-image-minimal to install the xen-tools package, which
replaces what was previously xen-base.

Determine the flask policy filename, which is Xen-version specific,
using the same method as the Xen build system.

qemu: update PACKAGECONFIG[xen] for xen package renaming: allows builds
to continue correctly in the meantime while openembedded core and poky
are updated.

OpenXT ticket reference: OXT-1694

Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2020-02-27 16:59:23 -05:00
Ming Liu
e32dad4ff9 xen-guest-image-minimal: do not inherit distro_features_check
Change to inherit features_check, since distro_features_check has been
deprecated in OE.

Signed-off-by: Ming Liu <liu.ming50@gmail.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2019-11-25 16:04:23 -05:00
Jason Wessel
261cdbefcb container-base: Allow building with a specific kernel binding
The oe-core layer sets a variable which intends that linux-dummy is
set for container building.  This commit would allow you to have a
specific kernel and board setup as well as generate multiple
containers by turrning off the linux-dummy check found in:

   oe-core/meta/classes/image-container.bbclass

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2019-04-07 23:09:58 -04:00
Bruce Ashfield
832a0f1e10 containers: introduce sample/reference container-base image type
container-base is a sample/reference image type that uses the
newly integrated image-oci image type to directly create OCI
compatible images from a build.

This image type can be inherited and extended to implement more
complex container types, with modified image configurations.

It is inspired by / based off the samples in the presentation
done by Scott Murray (Building Container Images with
OpenEmbedded and the Yocto Project) at ELCe 2018.

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2019-02-27 11:46:34 -05:00
Mark Asselstine
e1c8147d35 kvm-image-minimal: drop remaining ROOTFS_PKGMANAGE_BOOTSTRAP
Commit 4eee02bd64 [meta-virtualization:
Drop ROOTFS_PKGMANAGE_BOOTSTRAP] missed this instance so we are
removing this last reference to ROOTFS_PKGMANAGE_BOOTSTRAP now.

The ROOTFS_PKGMANAGE_BOOTSTRAP has been universally removed since
oe-core commit 697804229a172125ce7d3bfc9b343812d6fe3240
[run-postinsts: simplify the logic of whether to install it to
images].

Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
2017-12-28 11:12:04 -05:00
Dariusz Pelowski
1f99ba19c8 xen-image-minimal: corrected popoulation xen.gz for syslinux
syslinux images cannot boot because they're missing of xen.gz
file. Current poky doesn't use populate() function, instead
syslinux_populate() can be used.

Signed-off-by: Dariusz Pelowski <dariusz.pelowski@gmail.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
2017-10-09 12:38:08 -04:00
Christopher Clark
58e10e543f xen-guest-image-minimal: remove lines modifying DISTRO_FEATURES
Remove recipe lines modifying DISTRO_FEATURES that were intended to
simplify the non-x86 x11 image dependencies, but did not.

Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
Reported-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
2017-10-04 16:54:37 -04:00
Christopher Clark
f0e708ea8c xen-guest-image-minimal: fix making PCI a x86-only dependency
The logic for restricting the xen-pciback kernel module to x86-only
images was incorrect, resulting in the IMAGE_INSTALL_x86 and _x86-64
variables causing the IMAGE_INSTALL variable contents to be
overridden and incomplete.

This correction removes the specialized IMAGE_INSTALL_x86 and _x84-64
variables. The replacement logic causes a value with
conditionally-populated contents to be added to the IMAGE_INSTALL
variable.

Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
2017-10-04 16:54:36 -04:00
Christopher Clark
33e8e20d3c xen-guest-image-minimal: Fix non-x86. Select x11 via IMAGE_FEATURES.
Fix the image for non-x86, both with and without x11 included.

* Only install xf86-video-vesa on x86 platforms as it is not
  available elsewhere.

* In the absence of xf86-video-vesa (ie. on non-x86 platforms)
  enable opengl and remove wayland from IMAGE_INSTALL to
  satisfy build requirements for x11.

* Use IMAGE_FEATURES instead of DISTRO_FEATURES to enable x11
  inclusion in the image.

* Verify the required DISTRO_FEATURE of 'xen' and if enabled, 'x11'.

* When building the Xserver with Xen in DISTRO_FEATURES, on non-x86,
  turn off glamor by default, to remove dependency on egl.
  Introduces: xserver-xorg_%.bbappend

Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
2017-09-19 09:22:55 -04:00
Christopher Clark
6aa755e493 xen-image-minimal: Make kernel-module-xen-pciback a x86-only dependency
This commit fixes the xen-image-minimal build for non-x86 arch with PCI enabled.

The Linux kernel option CONFIG_XEN_PCIDEV_BACKEND currently depends on X86.
This means that the xen-pciback kernel module cannot be included in this image
for non-x86 architecture builds, so don't attempt to install it in that case.

Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
2017-09-19 09:22:55 -04:00