No description
Find a file
Fábio Coutada 793069c915 feat(testing): add boot test infrastructure — Phase 1 complete
kernel/Makefile:
- Add 'test' target that builds + boots all architectures
- Add 'test-armv7', 'test-aarch64', 'test-riscv' per-arch targets
- Configurable timeout (BOOT_TIMEOUT=15s) and banner string
- Architecture matrix: armv7, aarch64, riscv

tools/uos-boot-test/:
- New QEMU orchestrator (356 lines Python)
- Spawns QEMU, captures UART, checks for boot banner
- JUnit XML output for CI integration
- Supports --arch, --timeout, --junit, --verbose flags
- Per-arch configs with correct QEMU binaries and flags

.github/workflows/ci.yml:
- Add 'boot-test' job that runs after kernel-build
- Matrix strategy: armv7, aarch64, riscv
- Downloads ELF artifacts from kernel-build job
- Installs QEMU + cross-compilers
- Runs uos-boot-test.py with JUnit XML output
- Uploads test results as artifacts

Phase 1 of testing roadmap: CI boot testing now operational.
2026-07-12 16:42:23 +01:00
.aurelio
.claude
.forgejo/workflows
.github/workflows feat(testing): add boot test infrastructure — Phase 1 complete 2026-07-12 16:42:23 +01:00
.hermes/plans
.mimocode
.zcode
cdk
docs
docs-extracted
guests
kernel feat(testing): add boot test infrastructure — Phase 1 complete 2026-07-12 16:42:23 +01:00
pikeos-mirror
pikeos-rebrand
rebrand-logs
share
src
third_party
tools feat(testing): add boot test infrastructure — Phase 1 complete 2026-07-12 16:42:23 +01:00
website
xsd/src
.gitignore
.gitmodules
.woodpecker.yml
AGENTS.md
AURELIO_INTEGRATION.md
AUTOSAR_CPP.md
BLOCK_DRIVER_IMPLEMENTATION.md
BUILD_ENVIRONMENT.md
CHANGELOG.md
COMPONENTS.md
eradicate_prefixes.sh
fix_naming.sh
HYPERVISOR.md
implementation_plan.md
IMPORT_GUIDE.md
IMPORT_SUMMARY.md
LICENSE
pikeos_5_parity_gap_analysis.md
pikeos_mirror_full_index.md
README.md
rebrand.sh
rebrand_docs.sh
RISCV_PIKEOS_PARITY_PLAN.md
UNIVERSALISOS_PIKEOS_ANALYSIS.md
universalisos_status_report.md
UNIVERSALISOS_VS_PIKEOS_5.0.md
uos_map.h
VERSION
XSD_WORKFLOW_ANALYSIS.md

UniversalisOS — Safety-Critical Type-1 Hypervisor

License: MIT Version

UniversalisOS is a safety-critical type-1 hypervisor for cyber-physical systems, implementing PikeOS 5.0 patterns. Supports ARMv7, AArch64 (EL2), and RISC-V (S-mode) with ARINC-653 partitioning, VirtIO paravirtualization, and live migration.

Quick Start

Prerequisites

  • ARMv7: arm-none-eabi-gcc + qemu-system-arm
  • AArch64: aarch64-linux-gnu-gcc + qemu-system-aarch64
  • RISC-V: riscv64-linux-gnu-gcc + qemu-system-riscv64
  • Mycelium: Rust toolchain (cargo)
  • Tools: Python 3.11+

Build the Kernel

cd kernel

# ARMv7 (primary, fully tested)
make ARCH=armv7 PLATFORM=qemu-arm-virt

# AArch64 (EL2 hypervisor)
make ARCH=aarch64 PLATFORM=qemu-aarch64-virt

# RISC-V (Icicle Kit)
make ARCH=riscv PLATFORM=polarfire

Run in QEMU

# ARMv7
qemu-system-arm -M virt -cpu cortex-a15 -m 512M \
  -nographic -kernel build/armv7/qemu-arm-virt/universalisos.elf

# AArch64 (virtualization=on is mandatory)
qemu-system-aarch64 -M virt,gic-version=3,virtualization=on \
  -cpu cortex-a53 -m 512M -smp 4 -nographic \
  -kernel build/aarch64/qemu-aarch64-virt/universalisos.elf

# RISC-V (bare-metal, BSP only)
qemu-system-riscv64 -machine microchip-icicle-kit -smp 5 -m 2G \
  -nographic -bios none -kernel build/riscv/polarfire/universalisos.elf

Press Ctrl+A then X to exit QEMU.

Architecture

┌──────────────────────────────────────────────┐
│  Guest Partitions (ARINC-653, POSIX, Bare)   │
├──────────────────────────────────────────────┤
│  Hypercall Interface (HVC / ecall / SVC)     │
├──────────────────────────────────────────────┤
│  Hypervisor Core                             │
│  ├─ Scheduler (priority, time-partitioning)  │
│  ├─ Memory (MMU, stage-2, partitions)        │
│  ├─ IPC (sampling ports, mailbox)            │
│  ├─ VirtIO (blk, net, console)              │
│  ├─ Migration (checkpoint/restore)           │
│  └─ Health Monitor                           │
├──────────────────────────────────────────────┤
│  Hardware Abstraction (ARM GIC, PL011, etc.) │
└──────────────────────────────────────────────┘

Project Structure

Directory Description
kernel/ Hypervisor kernel (C++, freestanding)
tools/uos-cover/ Coverage toolchain (8 tools, DO-178C)
tools/uos-pkg/ Package toolchain (RPM spec parser, build engine)
mycelium-tfw-extension/ VS Code extension for test framework
guests/ Guest OS payloads (Linux aarch64, RISC-V sampling)
src/ PikeOS source import (reference)
docs/ Documentation (extracted PikeOS manuals, parity specs)
third_party/ External deps (musl-uos-port, hardened_malloc)

What's Included

  • 3 architecture backends: ARMv7 (SVC-based), AArch64 (EL2 HVC), RISC-V (S-mode ecall)
  • ARINC-653 partitioning: Time-partitioned scheduling, sampling ports, error management
  • VirtIO paravirtualization: Block, network, and console devices via hypercalls
  • Live migration: Checkpoint/restore with guest state, memory, and device snapshots
  • Coverage toolchain: Instrumentation, structural linking, report generation, justification, traceability
  • Package toolchain: RPM 4.2-compatible spec parser and build engine
  • ADT library port: PikeOS data structures (AVL, CRC32, list, lheap, kdev)
  • Mycelium toolchain: XSD-to-C code generation (21 Rust crates replacing proprietary configconv)
  • DO-178C certification support: Verification plans, evidence packaging, traceability matrices

Build Instructions

ARMv7

cd kernel
make ARCH=armv7 PLATFORM=qemu-arm-virt

Output: build/armv7/qemu-arm-virt/universalisos.elf

AArch64

cd kernel
make ARCH=aarch64 PLATFORM=qemu-aarch64-virt

Output: build/aarch64/qemu-aarch64-virt/universalisos.elf

RISC-V

cd kernel
make ARCH=riscv PLATFORM=polarfire

Output: build/riscv/polarfire/universalisos.elf

AArch64 with Linux Guest

cd kernel
make run-linux-real ROOTFS=<path-to-rootfs.img>

Clean Builds

make clean          # Clean current arch/platform
make clean-all      # Clean all build trees

Documentation

Safety Standards

UniversalisOS targets compliance with:

  • DO-178C — Airborne software (DAL-A through DAL-E)
  • ISO 26262 — Automotive functional safety (ASIL-D)
  • MISRA C++ / MISRA C — Coding guidelines
  • ARINC 653 — Avionics application standard

License

MIT License — see LICENSE for details.

Integration

UniversalisOS integrates with the PortugalFuturista ecosystem:

  • nervura-electrica — Infrastructure platform and hosting
  • Aurelio — Compiler, gateway, and cyber-physical brain platform
  • mycelium — XSD-to-C configuration toolchain