<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/meta-virtualization.git/recipes-containers/vcontainer, branch container-cross-install</title>
<subtitle>Mirror of git.yoctoproject.org/meta-virtualization</subtitle>
<id>https://git.enea.com/cgit/linux/meta-virtualization.git/atom?h=container-cross-install</id>
<link rel='self' href='https://git.enea.com/cgit/linux/meta-virtualization.git/atom?h=container-cross-install'/>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/'/>
<updated>2026-02-05T20:46:17+00:00</updated>
<entry>
<title>vcontainer: enable incremental builds by default</title>
<updated>2026-02-05T20:46:17+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-02-05T20:44:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=b6dca42bf3cbef42809ad2b04156dc274f1e6c41'/>
<id>urn:sha1:b6dca42bf3cbef42809ad2b04156dc274f1e6c41</id>
<content type='text'>
Previously, vcontainer recipes had [nostamp] flags that forced all
tasks to rebuild on every bitbake invocation, even when nothing changed.
This was added as a workaround for dependency tracking issues but caused
slow rebuild times.

Changes:
- Make [nostamp] conditional on VCONTAINER_FORCE_BUILD variable
- Default to normal stamp-based caching for faster incremental builds
- file-checksums on do_rootfs still tracks init script changes
- Add VCONTAINER_FORCE_BUILD status to the tarball build banner

To enable the old always-rebuild behavior (for debugging dependency
issues), set in local.conf:
  VCONTAINER_FORCE_BUILD = "1"

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer-tarball: build all architectures via single bitbake command</title>
<updated>2026-02-05T20:46:12+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-02-05T20:44:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=efd9914e91aff5f84e0958979410172f4ce0a2a6'/>
<id>urn:sha1:efd9914e91aff5f84e0958979410172f4ce0a2a6</id>
<content type='text'>
Previously, building vcontainer-tarball required multiple bitbake
invocations or complex command lines to build both x86_64 and aarch64
blobs. This was a usability issue.

Changes:
- mcdepends now triggers builds for BOTH architectures automatically
- VCONTAINER_ARCHITECTURES defaults to "x86_64 aarch64" (was auto-detect)
- Add informational banner at parse time showing what will be built
- Fix duplicate sanity check messages when multiconfig is active

Usage is now simply:
  bitbake vcontainer-tarball

To build only one architecture, set in local.conf:
  VCONTAINER_ARCHITECTURES = "x86_64"

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vdkr-init: improve Docker daemon startup logging and error handling</title>
<updated>2026-01-24T20:53:46+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-24T03:32:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=c625a5bf7b78795e1000d18eb6e2c0cc833c6a7c'/>
<id>urn:sha1:c625a5bf7b78795e1000d18eb6e2c0cc833c6a7c</id>
<content type='text'>
Improve debugging capabilities when Docker daemon fails to start:
- Log dockerd output to /var/log/docker.log instead of /dev/null
- Capture docker info exit code and output for diagnostics
- Show docker info error on every 10th iteration while waiting
- Include last docker info output and docker.log tail on failure
- Extend sleep on failure from 2s to 5s for log review

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: add host-side idle timeout with QMP shutdown</title>
<updated>2026-01-24T20:53:26+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-24T03:22:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=8f7f2089a528e0d1d39e5f65ae3728ac6b8e56cd'/>
<id>urn:sha1:8f7f2089a528e0d1d39e5f65ae3728ac6b8e56cd</id>
<content type='text'>
Implement reliable idle timeout for vmemres daemon mode using
host-side monitoring with QMP-based shutdown, and container-aware
idle detection via virtio-9p shared file.

Host-side changes (vrunner.sh):
  - Add -no-reboot flag to QEMU for clean exit semantics
  - Spawn background watchdog when daemon starts
  - Watchdog monitors activity file timestamp
  - Check interval scales to idle timeout (timeout/5, clamped 10-60s)
  - Read container status from shared file (guest writes via virtio-9p)
  - Only shutdown if no containers are running
  - Send QMP "quit" command for graceful shutdown
  - Watchdog auto-exits if QEMU dies (no zombie processes)
  - Touch activity file in daemon_send() for user activity tracking

Config changes (vcontainer-common.sh):
  - Add idle-timeout to build_runner_args() so it's always passed

Guest-side changes (vcontainer-init-common.sh):
  - Add watchdog that writes container status to /mnt/share/.containers_running
  - Host reads this file instead of socket commands (avoids output corruption)
  - Close inherited virtio-serial fd 3 in watchdog subshell to prevent leaks
  - Guest-side shutdown logic preserved but disabled (QMP more reliable)
  - Handle Yocto read-only-rootfs volatile directories (/var/volatile)

The shared file approach avoids sending container check commands through
the daemon socket, which previously caused output corruption on the
single-stream virtio-serial channel.

The idle timeout is configurable via: vdkr vconfig idle-timeout &lt;secs&gt;
Default: 1800 seconds (30 minutes)

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: consolidate initramfs-create recipes</title>
<updated>2026-01-24T03:29:29+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-23T21:15:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=368a238d80da0e971237c154cfafbbf8ca3f85d9'/>
<id>urn:sha1:368a238d80da0e971237c154cfafbbf8ca3f85d9</id>
<content type='text'>
Update vcontainer-initramfs-create.inc to use the image-based approach:
- Depend on tiny-initramfs-image for cpio.gz (replaces file extraction)
- Depend on rootfs-image for squashfs (unchanged)
- Remove DEPENDS on squashfs-tools-native (no longer extracting files)

Update recipe files to use the consolidated inc:
- vdkr-initramfs-create_1.0.bb
- vpdmn-initramfs-create_1.0.bb

Boot flow remains unchanged:
  QEMU boots kernel + tiny initramfs
  -&gt; preinit mounts rootfs.img from /dev/vda
  -&gt; switch_root into rootfs.img
  -&gt; vdkr-init.sh or vpdmn-init.sh runs

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: add tiny initramfs image infrastructure</title>
<updated>2026-01-24T03:29:11+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-23T20:46:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=37349fc93bd1e69da1eb54a7aa3344f5c11f2e12'/>
<id>urn:sha1:37349fc93bd1e69da1eb54a7aa3344f5c11f2e12</id>
<content type='text'>
Add proper Yocto image recipes for the tiny initramfs used by
vdkr/vpdmn in the switch_root boot flow:

- vcontainer-tiny-initramfs-image.inc: Shared image configuration
- vcontainer-preinit_1.0.bb: Preinit script package (shared)
- vdkr-tiny-initramfs-image.bb: Tiny initramfs for vdkr
- vpdmn-tiny-initramfs-image.bb: Tiny initramfs for vpdmn

The tiny initramfs contains only busybox and a preinit script that:
1. Mounts devtmpfs, proc, sysfs
2. Mounts the squashfs rootfs.img from /dev/vda
3. Creates tmpfs overlay for writes
4. Performs switch_root to the real rootfs

This replaces ad-hoc file extraction with proper image-based builds,
improving reproducibility and maintainability.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer-tarball: add nativesdk-expect dependency</title>
<updated>2026-01-24T03:29:11+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-23T20:23:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=fc84ff38790294f4422c2f8b067fe351cd579e70'/>
<id>urn:sha1:fc84ff38790294f4422c2f8b067fe351cd579e70</id>
<content type='text'>
Add expect to the vcontainer SDK toolchain for interactive testing
and automation scripts.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: fix runc/crun conflict in multiconfig builds</title>
<updated>2026-01-24T03:29:11+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-23T20:22:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=f2472dcdc52de398eccc829d88b400e587d6f934'/>
<id>urn:sha1:f2472dcdc52de398eccc829d88b400e587d6f934</id>
<content type='text'>
The vruntime distro is used for multiconfig builds of both vdkr
(Docker/runc) and vpdmn (Podman/crun) images. When CONTAINER_PROFILE
or VIRTUAL-RUNTIME_container_runtime is set, containerd and podman
pull their preferred runtime via RDEPENDS, causing package conflicts.

Fix by having vruntime distro NOT participate in CONTAINER_PROFILE:
- Set VIRTUAL-RUNTIME_container_runtime="" to prevent automatic
  runtime selection
- Explicitly install runc in vdkr-rootfs-image.bb
- Explicitly install crun in vpdmn-rootfs-image.bb

This allows both images to be built in the same multiconfig without
conflicts, while standard container-host images continue to use
CONTAINER_PROFILE normally.

Also add kernel-modules to vdkr-rootfs-image for overlay filesystem
support.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: add multi-arch OCI support</title>
<updated>2026-01-21T23:00:26+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-15T21:50:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=02bce5b72e8725ba58d82627c780e376ac59a84b'/>
<id>urn:sha1:02bce5b72e8725ba58d82627c780e376ac59a84b</id>
<content type='text'>
Add functions to detect and handle multi-architecture OCI Image Index
format with automatic platform selection during import. Also add
oci-multiarch.bbclass for build-time multi-arch OCI creation.

Runtime support (vcontainer-common.sh):
- is_oci_image_index() - detect multi-arch OCI images
- get_oci_platforms() - list available platforms
- select_platform_manifest() - select manifest for target architecture
- extract_platform_oci() - extract single platform to new OCI dir
- normalize_arch_to_oci/from_oci() - architecture name mapping
- Update vimport to auto-select platform from multi-arch images

Build-time support (oci-multiarch.bbclass):
- Create OCI Image Index from multiconfig builds
- Collect images from vruntime-aarch64, vruntime-x86-64
- Combine blobs and create unified manifest list

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: add virtio-9p fast path for batch imports</title>
<updated>2026-01-21T23:00:26+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-15T21:50:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=92a34f0187fad2b6ab3dd60b722a53d70a090e16'/>
<id>urn:sha1:92a34f0187fad2b6ab3dd60b722a53d70a090e16</id>
<content type='text'>
Add virtio-9p filesystem support for faster storage output during batch
container imports, replacing slow base64-over-console method.

- Add --timeout option for configurable import timeouts
- Mount virtio-9p share in batch-import mode
- Parse _9p=1 kernel parameter for 9p availability
- Write storage.tar directly to shared filesystem
- Reduces import time from ~600s to ~11s for large containers

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
</feed>
