Skip to content

Conversation

@kvinwang
Copy link
Collaborator

@kvinwang kvinwang commented Feb 7, 2026

Summary

  • Add Nestybox Sysbox v0.6.7 as an alternative container runtime (sysbox-runc, sysbox-fs, sysbox-mgr)
  • Builds from source with verified reproducible builds (identical binaries across clean builds)
  • Register sysbox-runc in Docker daemon config for both standard and NVIDIA images

Details

  • Recipe: dstack-sysbox_0.6.7.bb fetches 7 git repos (sysbox, sysbox-runc, sysbox-fs, sysbox-mgr, sysbox-ipc, sysbox-libs, fuse)
  • Offline compile: do_configure[network]=1 vendors Go deps; do_compile uses -mod=vendor (no network)
  • Protobuf: Pre-generated .pb.go files avoid build-time protoc dependency
  • Fuse fork: Orphaned bazil/fuse commit forked to Dstack-TEE/fuse with named branch sysbox-v0.6.7
  • Kernel: CONFIG_USER_NS=y, CONFIG_CONFIGFS_FS=y already present in linux-custom defconfig
  • Systemd: Three services (sysbox.service, sysbox-fs.service, sysbox-mgr.service) enabled by default
  • Yocto 5.3: Adapted for ${UNPACKDIR} (source paths) vs ${WORKDIR} (build artifacts)

Companion PR

Test plan

  • Reproducibility verified on meta-dstack (two clean builds produce identical md5 hashes)
  • Build and verify on meta-dstack-cloud

Add Nestybox Sysbox as an alternative container runtime, enabling
rootless containers to run workloads like Systemd, Docker, Kubernetes,
just like VMs.

Recipe builds sysbox-runc, sysbox-fs, and sysbox-mgr from source with
reproducible builds verified (identical binaries across clean builds).

Key design decisions:
- Network access only in do_configure (go mod vendor); do_compile is
  fully offline with -mod=vendor
- Pre-generated protobuf .pb.go files to avoid protoc build dependency
- Orphaned bazil/fuse commit forked to Dstack-TEE/fuse with named branch
- Kernel configs already present in linux-custom defconfig
- Docker daemon configured with sysbox-runc runtime
- Adapted for Yocto 5.3: UNPACKDIR for source paths, WORKDIR for build
  artifacts
@kvinwang kvinwang force-pushed the feat/sysbox-runtime branch from 20d29f1 to 5d6a81f Compare February 8, 2026 00:12
- Remove --log file paths (rootfs is read-only), output to journal+console
- Add rsync and fuse to RDEPENDS (required by sysbox-mgr and sysbox-fs)
- Pre-create /etc/subuid and /etc/subgid entries via pkg_postinst
- Add After=dstack-prepare.service so sysbox starts after /etc overlay
- Bind-mount sysbox data dir to persistent storage (overlayfs not allowed)
Move the sysbox persistent storage bind-mount from sysbox-mgr.service
ExecStartPre into dstack-prepare.sh, alongside docker and containerd
mounts. This keeps all container runtime storage mounts in one place.
Update dstack submodule to include sysbox persistent storage mount
in dstack-prepare.sh alongside docker and containerd mounts.
Update dstack submodule to include sysbox persistent storage mount
in dstack-prepare.sh alongside docker and containerd mounts.
@kvinwang kvinwang merged commit b93d08d into main Feb 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant