Skip to content

WIP : Add support for IncludeOS#619

Open
shivansh-source wants to merge 3 commits into
urunc-dev:mainfrom
shivansh-source:shivansh2
Open

WIP : Add support for IncludeOS#619
shivansh-source wants to merge 3 commits into
urunc-dev:mainfrom
shivansh-source:shivansh2

Conversation

@shivansh-source
Copy link
Copy Markdown

@shivansh-source shivansh-source commented May 4, 2026

This PR adds comprehensive support for IncludeOS, a unikernel framework written in C++ designed for building web and cloud applications, to the urunc container runtime. IncludeOS can execute on top of both solo5 (hvt/spt) and qemu hypervisors, making it a natural addition to urunc's growing unikernel ecosystem.

📋 Changes Made

pkg/unikontainers/unikernels/includeos.go - IncludeOS
pkg/unikontainers/unikernels/unikernel.go - Factory
README.md - Added IncludeOS to supported platforms table
docs/index.md - Updated support matrix
docs/unikernel-support.md - Full IncludeOS documentation
docs/hypervisor-support.md - Added IncludeOS hypervisor reference
docs/Sample-images.md - Added sample image documentation
tests/e2e/test_cases.go - Added Qemu-includeos and Hvt-includeos test cases

New Features

  • IncludeOS Unikernel Implementation:
    • Created pkg/unikontainers/unikernels/includeos.go implementing the full Unikernel interface
    • Support for network configuration (IPv4 with gateway and subnet mask)
    • Support for block device management
    • Compatible with both Solo5 (hvt/spt) and QEMU hypervisors

Implementation Details

1. Core Unikernel Struct (includeos.go)

type IncludeOS struct {
    Command string           // Command line arguments
    Monitor string           // Hypervisor type (qemu, hvt, spt)
    Net     IncludeOSNet     // Network configuration
    Block   []IncludeOSBlock // Block devices
}

How was this tested?

  • Built an IncludeOS application with CMake
  • Packaged as a Docker container with urunc labels
  • Tested with urunc runtime:
  docker save includeos-sample:latest | sudo ctr -n k8s.io images import -
  sudo ctr -n k8s.io run --rm --runtime io.containerd.urunc.v2 docker.io/library/includeos-sample:latest test

Result: Successfully outputs "Hello, world!"
Test Repository
github.com/shivansh-source/includeos-sample
Docker Image
hub.docker.com/r/shivansh1111/includeos-sample
Pull command:
docker pull shivansh1111/includeos-sample:latest

Closes #126

Signed-off-by: shivansh-source <shivanshsiddhi1234@gmail.com>
@netlify
Copy link
Copy Markdown

netlify Bot commented May 4, 2026

Deploy Preview for urunc ready!

Name Link
🔨 Latest commit 1ffa9e3
🔍 Latest deploy log https://app.netlify.com/projects/urunc/deploys/6a00c4e64192d10008fee1f7
😎 Deploy Preview https://deploy-preview-619--urunc.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@shivansh-source
Copy link
Copy Markdown
Author

@cmainas PTAL at the approach then i will move forward

@cmainas
Copy link
Copy Markdown
Contributor

cmainas commented May 5, 2026

Hello @shivansh-source ,

if a PR is WIP then you can mark it as draft. The approach is the same for all guests in urunc. The important thing is to test it. Please take a look at #540 and use it a as a guide.

@shivansh-source shivansh-source marked this pull request as draft May 9, 2026 14:48
Signed-off-by: shivansh-source <shivanshsiddhi1234@gmail.com>
Signed-off-by: shivansh-source <shivanshsiddhi1234@gmail.com>
@shivansh-source shivansh-source marked this pull request as ready for review May 10, 2026 17:48
@shivansh-source
Copy link
Copy Markdown
Author

shivansh-source commented May 10, 2026

@cmainas tested and added proper testing methods . ready for review

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.

Add support for IncludeOS

2 participants