novolis-os / vm.md
VM (QEMU) — primary Novolis OS path
Minimal Debian runtime images
dotnetlinuxdebianruntimenovolis
GUI needs a real display. Use QEMU. Podman/Docker are console-only.
Two boot modes:
| Script | Firmware | Disk | When |
|---|---|---|---|
Run-Qemu.ps1 | none (kernel-direct) | novolis-os.qcow2 | Fast dogfood / GUI smoke |
Run-Iso.ps1 | OVMF UEFI | novolis-os.iso | Validate real-hardware boot path |
Run-HyperV.ps1 | Hyper-V Gen2 UEFI | novolis-os-uefi.vhdx | Windows host Hyper-V |
Real USB flash: iso.md.
Build
pwsh -File d:\novolis\novolis-os\scripts\Build-Appliance.ps1Run (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.ps1Boots 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 gtkRun (UEFI ISO)
pwsh -File d:\novolis\novolis-os\scripts\Run-Iso.ps1Install 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.ps1Run-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
| File | Role |
|---|---|
artifacts/novolis-os.qcow2 | Root disk for kernel-direct (LABEL=novolisos) |
artifacts/novolis-os.iso | UEFI GPT hybrid (flash / OVMF) |
artifacts/novolis-os-uefi.img | Same bytes as the ISO |
artifacts/boot/vmlinuz | Kernel (kernel-direct) |
artifacts/boot/initrd.img | Initrd |
artifacts/boot/cmdline.txt | root=LABEL=novolisos … |
artifacts/app-publish/ | Host-published Avalonia app installed to /opt/novolis/app |