<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/meta-virtualization.git/recipes-containers/vcontainer/files, 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-01-24T20:53:46+00:00</updated>
<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: 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: 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>
<entry>
<title>vcontainer: add vshell command for VM debug access</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-14T04:46:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=97a9312c46513c842f1dfedfac7bfc4bbafdcb22'/>
<id>urn:sha1:97a9312c46513c842f1dfedfac7bfc4bbafdcb22</id>
<content type='text'>
Add vshell command to vdkr/vpdmn for interactive shell access to the
QEMU VM where Docker/Podman runs. This is useful for debugging container
issues directly inside the virtual environment.

Usage:
  vdkr vmemres start
  vdkr vshell
  # Now inside VM, can run docker commands directly
  docker images
  docker inspect &lt;image&gt;
  exit

The vshell command requires the memory-resident daemon to be running
(vmemres start). It opens an interactive shell via the daemon's
--daemon-interactive mode.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vdkr: add registry configuration and pull fallback</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-12T16:13:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=65cebeda3a2eda72802a46949601ba3e021a0db6'/>
<id>urn:sha1:65cebeda3a2eda72802a46949601ba3e021a0db6</id>
<content type='text'>
Add registry support to vdkr:
- vconfig registry command for persistent config
- --registry flag for one-off usage
- Registry-first, Docker Hub fallback for pulls
- Baked-in registry config via CONTAINER_REGISTRY_URL
- Image commands (inspect, history, rmi, images) work without transform

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: fix ps -q to suppress port forward display</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-08T19:34:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=ef5dc63c8c9d4f84e88f8622b44491303ca99f72'/>
<id>urn:sha1:ef5dc63c8c9d4f84e88f8622b44491303ca99f72</id>
<content type='text'>
When using `ps -q` or `ps --quiet`, only container IDs should be output.
The port forward registry display was being included, which broke cleanup
code that expected just container IDs.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vrunner: update static port forwarding for bridge networking</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-08T18:44:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=22eedc4b864106f97f3443d0aa36133c33949bd8'/>
<id>urn:sha1:22eedc4b864106f97f3443d0aa36133c33949bd8</id>
<content type='text'>
Update the static port forwarding (used at QEMU startup) to match
the dynamic QMP port forwarding change. With bridge networking:
- QEMU forwards host:port -&gt; VM:port
- Docker's iptables handles VM:port -&gt; container:port

Previously the static port forward went directly to the container
port (host:8080 -&gt; VM:80), which doesn't work with bridge networking
where Docker needs to handle the final hop.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vcontainer: update CLI for bridge networking</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-08T17:08:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=d06cf3ba685c55447cedfa4c0f6a4fc8bcd394f2'/>
<id>urn:sha1:d06cf3ba685c55447cedfa4c0f6a4fc8bcd394f2</id>
<content type='text'>
Update the CLI wrapper to work with Docker bridge networking:

- qmp_add_hostfwd(): Change QEMU port forward from host_port-&gt;guest_port
  to host_port-&gt;host_port. With bridge networking, Docker's iptables
  handles the final hop (VM:host_port -&gt; container:guest_port).

- Default network mode: Remove --network=host default. Docker's bridge
  is now the default, giving each container its own IP. Users can still
  explicitly use --network=host for legacy behavior.

- Update help text to document the new bridge networking behavior.

Port forwarding flow is now:
  Host:8080 -&gt; QEMU -&gt; VM:8080 -&gt; Docker iptables -&gt; Container:80

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