Novolis Docs
novolis-os / vm.md

VM (QEMU) — primary Novolis OS path

dotnetlinuxdebianruntimenovolis

GUI needs a real display. Use QEMU. Podman/Docker are console-only.

Two boot modes:

ScriptFirmwareDiskWhen
Run-Qemu.ps1none (kernel-direct)novolis-os.qcow2Fast dogfood / GUI smoke
Run-Iso.ps1OVMF UEFInovolis-os.isoValidate real-hardware boot path
Run-HyperV.ps1Hyper-V Gen2 UEFInovolis-os-uefi.vhdxWindows host Hyper-V

Real USB flash: iso.md.

Build

pwsh -File d:\novolis\novolis-os\scripts\Build-Appliance.ps1

Run (kernel-direct)

Install QEMU (Windows installer usually lands under C:\Program Files\qemu\ — Run-Qemu.ps1 finds it).

pwsh -File d:\novolis\novolis-os\scripts\Run-Qemu.ps1

Boots via -kernel/-initrd into systemd → cage → app under /opt/novolis/app (Avalonia).

pwsh -File d:\novolis\novolis-os\scripts\Run-Qemu.ps1 -MemoryMb 4096 -Display gtk

Run (UEFI ISO)

pwsh -File d:\novolis\novolis-os\scripts\Run-Iso.ps1

Install a dogfooding app (ArtillerySimulator)

Publish linux-x64 (needs Novolis.Raylib.Native linux runtimes — maintained via raylib step_02_native):

dotnet publish d:\novolis\novolis-dogfooding\apps\ArtillerySimulator\ArtillerySimulator.csproj `
  -c Release -r linux-x64 --self-contained false /p:UseAppHost=false -o d:\novolis\novolis-os\artifacts\app-publish
Copy-Item d:\novolis\novolis-raylib\src\Novolis.Raylib.Native\runtimes\linux-x64\native\* `
  d:\novolis\novolis-os\artifacts\app-publish\ -Force
pwsh -File d:\novolis\novolis-os\scripts\Install-App.ps1
pwsh -File d:\novolis\novolis-os\scripts\Run-Qemu.ps1

Run-Qemu.ps1 also 9p-mounts artifacts/app-publish when present (novolis.app=9p). Rebuild the appliance (or re-flash ISO) to bake the app into UEFI media.

Artifacts

FileRole
artifacts/novolis-os.qcow2Root disk for kernel-direct (LABEL=novolisos)
artifacts/novolis-os.isoUEFI GPT hybrid (flash / OVMF)
artifacts/novolis-os-uefi.imgSame bytes as the ISO
artifacts/boot/vmlinuzKernel (kernel-direct)
artifacts/boot/initrd.imgInitrd
artifacts/boot/cmdline.txtroot=LABEL=novolisos …
artifacts/app-publish/Host-published Avalonia app installed to /opt/novolis/app