guideXOS Server Build and Testing

Purpose: collect the current scripts, commands, and validation paths surfaced by the Server branch.

Recommended daily workflow

powershell -ExecutionPolicy Bypass -File build.ps1 -RunQemu

This is the main Server-branch workflow. It builds the UEFI bootloader, attempts the selected kernel build, stages the ESP directory, and launches QEMU when requested.

Current status: contributor workflow for source builds, architecture work, and QEMU validation alongside the public v0.2.1 AMD64 ISO.
Release note: source builds are useful for contributors but are no longer the only public path. Download the public ISO. Back to /Wiki/Server

Developer Studio in the released image: the v0.2.1 ISO includes Developer Studio, its Start Menu entry, and its normal OS/bare-metal launch path. Users do not need to manually inject the package or use a special launch command just to open the IDE. Source-build contributors may still stage and verify the package as part of their own image validation.

Hosted / Windows-side builds

build.bat build-native-experimental.bat

Use the hosted build for compositor, desktop-service, Navigator, app-model, and experimental Native ELF validation work.

Kernel-only builds

cd kernel mingw32-make ARCH=amd64

The kernel path depends on GNU make / MinGW-style tooling and architecture selection.

Key scripts surfaced by the repo

  • build.ps1 – full bootloader + kernel + ESP workflow
  • build-uefi.ps1 – alias to the same UEFI-focused build flow
  • run-qemu.bat / run-uefi.sh – OVMF/QEMU boot launchers
  • scripts/qemu-secure-rng-args.ps1 / .bat – shared secure-entropy arguments used by QEMU launchers
  • scripts/run-qemu-fs-test.ps1 / .sh – filesystem test launch flows
  • sdk/build-samples.ps1 – stages Native ELF SDK sample apps for hosted runtime validation
  • build-native-experimental.bat – hosted experimental Native ELF execution validation

Running guideXOS Server in QEMU

QEMU is the recommended first development and test environment for guideXOS Server. The current launch scripts give the guest reproducible virtual hardware, capture serial and debug output, use the known QEMU networking device, and make virtual devices such as storage and secure entropy controllable from the launch command.

The normal Windows path is powershell -ExecutionPolicy Bypass -File build.ps1 -RunQemu or, after the ESP is prepared, run-qemu.bat. The scripts boot the UEFI image with OVMF, expose the ESP as a FAT disk, attach an e1000 network device, send kernel output to -serial stdio, and include the shared secure-RNG arguments below. The PowerShell build path uses the pc machine; the batch launcher adds usb=off for the current PS/2 input path.

Keep the current Server launchers close at hand: older commands from the original C# guideXOS wiki do not describe this UEFI, ESP, e1000, serial, and virtio-rng Server path.

Secure entropy and HTTPS

The canonical QEMU secure-RNG configuration is:

-object rng-builtin,id=rng0 -device virtio-rng-pci,rng=rng0,disable-modern=on,max-bytes=1024,period=1000
Argument Current meaning
rng-builtin QEMU's built-in host-side entropy source.
virtio-rng-pci Exposes that entropy source to the guest as a virtual PCI RNG device.
disable-modern=on Selects the transitional/legacy-compatible virtio PCI transport consumed by the current Server driver.
max-bytes=1024,period=1000 Bounds the virtual RNG rate to 1024 bytes per 1000 milliseconds.

The guest currently consumes the transitional PCI virtio-rng transport backed by QEMU's built-in host entropy. The kernel wires that device into the supported OS random path; it reports the random quality as Secure only when the device is ready.

Why this changes HTTPS behavior

Navigator's HTTPS/TLS stack needs cryptographically secure random data. Mbed TLS and PSA crypto receive that data through the guideXOS secure-random callback before TLS operations can safely proceed. If secure entropy is unavailable, crypto initialization and TLS fail closed; the implementation does not substitute timer ticks, timestamps, counters, deterministic pseudo-random values, or another weak fallback. Plain HTTP does not require this cryptographic entropy prerequisite.

A correctly configured QEMU VM can therefore obtain entropy through the supported virtio-rng path and may proceed with HTTPS when the other TLS prerequisites are also ready. The RNG is necessary but not sufficient: certificate trust-store, wall-clock, hostname-validation, and HTTPS-policy checks still apply.

QEMU versus bare metal: QEMU can provide a compatible virtio-rng device, so HTTPS may work in a correctly configured QEMU VM even when the same build cannot establish HTTPS on a physical machine. This does not mean TLS is emulated or bypassed in QEMU; QEMU is supplying a hardware-like secure entropy source that the guest currently knows how to consume.

The released bare-metal x86/AMD64 path has this transitional virtio-rng driver, but no general physical-hardware entropy/CSPRNG provider is established by the current Server source. Do not claim broad bare-metal HTTPS support for machines that do not provide a supported secure entropy path. Current bare-metal HTTPS policy can also remain fail-closed even after entropy is available until the validated trust-store and policy conditions are satisfied.

Troubleshooting HTTPS

HTTPS works in QEMU but not on bare metal

Compare the entropy device and OS path. QEMU should have both secure-RNG arguments above; physical hardware may not expose a device that the current Server driver can consume. Also compare the current trust-store, clock, hostname-validation, and HTTPS-policy diagnostics.

HTTPS fails in QEMU

Verify that the launch command includes both -object rng-builtin,id=rng0 and -device virtio-rng-pci,rng=rng0,disable-modern=on,max-bytes=1024,period=1000. Then inspect serial output for the actual current markers, including:

[VIRTIO-RNG] Device present=yes; driver ready=yes; secure entropy source ready [VIRTIO-RNG] Initialized via legacy PCI transport [RNG] entropy sample request success; secure source read confirmed [TLS-PSA] external RNG callback registered; secure entropy status=ready [TLS-PSA] psa_crypto_init status=success

Failure diagnostics include [VIRTIO-RNG] Device present=no; no virtio-rng PCI device detected and [VIRTIO-RNG] Entropy device found but transport mode is unsupported. Navigator's diagnostics also expose the RNG quality/backend, virtio-rng status, RNG callback status, TLS backend status, and HTTPS-policy blocker.

HTTP works but HTTPS does not

Basic TCP/IP connectivity proves only that the network path is usable. It does not prove that the cryptographic entropy, Mbed TLS/PSA initialization, clock, certificate, hostname, and HTTPS-policy prerequisites required for TLS are ready.

Do not “fix” an entropy error with timer ticks, timestamps, counters, deterministic PRNG seeds, or similar weak randomness. Provide a cryptographically secure entropy source or let the TLS operation fail.

What contributors should verify

Validation path Why it matters
Hosted compositor / desktop service Fastest feedback loop for windows, desktop UI, app model, Navigator, and some diagnostics.
Bare-metal / QEMU UEFI path Validates bootloader, kernel handoff, framebuffer, storage, networking, secure entropy, and OS-side bring-up reality.
SDK sample staging Useful for manifest scanning and Native ELF sample validation in the hosted path.

See also