Skip to content

feat(unikernels): add support for IncludeOS unikernel - #1025

Draft
Nachiket-Roy wants to merge 1 commit into
urunc-dev:mainfrom
Nachiket-Roy:feat/support-includeOS
Draft

feat(unikernels): add support for IncludeOS unikernel#1025
Nachiket-Roy wants to merge 1 commit into
urunc-dev:mainfrom
Nachiket-Roy:feat/support-includeOS

Conversation

@Nachiket-Roy

Copy link
Copy Markdown

Description

This PR adds support for the IncludeOS unikernel framework to urunc across supported monitors (QEMU, Solo5-hvt, and Solo5-spt). This builds upon and resolves the groundwork started in #619

Summary of Changes:

  • Core Implementation:
    • Implemented the IncludeOS unikernel driver (pkg/unikontainers/unikernels/includeos.go) conforming to types.Unikernel.
    • Configured hypervisor argument builders (BuildExecCmd):
      • For Solo5 (hvt / spt): configures --net:service=<ifName> --net-mac:service=<mac> and --block:rootfs=<dev>.
      • For QEMU: allows standard virtio-net tap setup and virtio-blk block storage.
    • Registered IncludeosUnikernel in the New() factory function in pkg/unikontainers/unikernels/unikernel.go.
  • Testing:
    • Added comprehensive unit tests in pkg/unikontainers/unikernels/includeos_test.go verifying command line generation, monitor network/block flags, and factory instantiation.
    • Added IncludeOS test cases to tests/e2e/test_cases.go for both dockerTestCases and nerdctlTestCases (marked Skippable: true).
  • Documentation:
    • Updated compatibility tables in README.md and docs/index.md.
    • Added dedicated IncludeOS sections and usage examples in docs/unikernel-support.md and docs/hypervisor-support.md.
    • Added IncludeOS (commit 6fd33d3) and Nix (2.35.2) version pins to docs/variables/versions.yml.
  • Packaging:
    • Verified container image creation with BuildKit using the Bunny frontend (harbor.nbfc.io/nubificus/bunny:latest).

Related issues

How was this tested?

  1. Unit Tests:
    • Executed full unit test suite:
      go test -mod=readonly -v ./pkg/unikontainers/unikernels/...
    • Verified TestIncludeOSCommandString, TestIncludeOSInit, TestIncludeOSSupports, TestIncludeOSMonitorNetCli, TestIncludeOSMonitorBlockCli, and TestIncludeOSNewFactory all pass with 0 errors.
  2. Build Verification:
    • Verified clean compilation of the urunc binary:
      go build -mod=readonly ./cmd/urunc
  3. Packaging with Bunny:
    • Packaged a test image using BuildKit with #syntax=harbor.nbfc.io/nubificus/bunny:latest.
    • Verified that /urunc.json and all com.urunc.unikernel.* labels (unikernelType=includeos, hypervisor=hvt) are correctly generated and inspected.

LLM usage

Assisted by Google Antigravity (Gemini). All generated code, hypervisor CLI flags, unit tests, and documentation were reviewed and verified.

Checklist

  • I have read the contribution guide.
  • The linter passes locally (make lint / go vet).
  • The e2e tests of at least one tool pass locally (make test_ctr, make test_nerdctl, make test_docker, make test_crictl).
  • If LLMs were used: I have read the llm policy.

Add IncludeOS as a supported unikernel framework for urunc, enabling execution on top of QEMU, Solo5-hvt, and Solo5-spt monitors.

- Implement IncludeOS guest unikernel structure handling CLI command strings and network device arguments (--net:service=<if> for Solo5, virtio-net for QEMU).
- Register IncludeosUnikernel in the unikernel factory.
- Add unit tests covering command string construction, monitor CLI argument generation, and factory creation.
- Update documentation across README, hypervisor compatibility tables, and unikernel support guides.
- Add IncludeOS test cases to e2e test suite (with Skippable flag).

Fixes: urunc-dev#126
Co-authored-by: shivansh-source <shivanshsiddhi1234@gmail.com>
Signed-off-by: Nachiket Roy <nachiket.roy.2@gmail.com>
@netlify

netlify Bot commented Sep 3, 2026

Copy link
Copy Markdown

Deploy Preview for urunc ready!

Name Link
🔨 Latest commit caeda45
🔍 Latest deploy log https://app.netlify.com/projects/urunc/deploys/6a99b6bc0bd530000810ea67
😎 Deploy Preview https://deploy-preview-1025--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.

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

1 participant