Quick start

GoNIX boots a live image directly — no installer. Grab a prebuilt image and go. Pick your platform:

QEMU on x86-64

$ curl -LO https://pkgs.ulinux.org/images/gonix-amd64.iso
$ qemu-system-x86_64 -m 1G -cdrom gonix-amd64.iso \
    -device virtio-rng-pci \
    -nic user,hostfwd=tcp::2222-:22
$ ssh -p 2222 root@localhost      # password: gonix

The Go userspace is at a login prompt in ~20 ms — faster than you can blink.

QEMU on arm64 (Apple Silicon)

The fastest arm64 path is the bare kernel + initramfs, booted natively under HVF:

$ curl -LO https://pkgs.ulinux.org/images/gonix-arm64-Image
$ curl -LO https://pkgs.ulinux.org/images/gonix-arm64-rootfs.gz
$ qemu-system-aarch64 -machine virt,accel=hvf -cpu host -m 1G \
    -kernel gonix-arm64-Image -initrd gonix-arm64-rootfs.gz \
    -device virtio-rng-pci \
    -nic user,hostfwd=tcp::2222-:22 -nographic
$ ssh -p 2222 root@localhost

The virtio-rng device seeds the kernel CRNG so the SSH host key can be generated at boot — see the VirtualBox tab for what happens without one.

VirtualBox on Apple Silicon

GoNIX also ships a UEFI-bootable arm64 ISO. In VirtualBox 7.1+ create an ARM 64-bit VM, attach the ISO, and boot — you log in at the VM console window.

https://pkgs.ulinux.org/images/gonix-arm64.iso

A few VirtualBox-on-ARM specifics:

  • Give the VM a USB keyboard and USB mouse with a USB controller enabled — the ARM platform has no PS/2 controller, so VirtualBox’s default PS/2 input never reaches the guest and the console won’t accept keystrokes. Enable a USB controller (xHCI) under the VM’s USB settings, then: VBoxManage modifyvm <vm> --keyboard usb --mouse usb --usbxhci on. Use a relative USB mouse (--mouse usb), not the absolute USB tablet: VirtualBox’s ARM target doesn’t deliver the tablet’s absolute coordinates, so “Mouse Integration” stays greyed out and the desktop (startgui) cursor won’t move. With a relative mouse the cursor is captured into the window instead — release it with the Host key.
  • Set the network adapter to Intel PRO/1000 (e1000) — VirtualBox’s ARM virtio-net is unreliable; GoNIX’s kernel drives e1000.
  • If a reboot shows “No bootable option or device was found”, reset the VM’s UEFI variable store (VBoxManage modifynvram <vm> inituefivarstore) — a quirk of VirtualBox’s preview ARM firmware, not the ISO.
  • Log in at the console window. SSH-over-NAT does not work yet: VirtualBox’s ARM preview exposes no random-number source, so the kernel can’t seed enough entropy to generate an SSH host key (see the note below). The console is fully functional.

For a full SSH-reachable arm64 box, use QEMU + UEFI firmware (edk2/AAVMF), which provides a virtio-rng device:

$ curl -LO https://pkgs.ulinux.org/images/gonix-arm64.iso
$ qemu-system-aarch64 -machine virt,accel=hvf -cpu host -m 1G \
    -drive if=pflash,format=raw,readonly=on,file=edk2-aarch64-code.fd \
    -cdrom gonix-arm64.iso -device virtio-gpu-pci -device virtio-rng-pci \
    -nic user,hostfwd=tcp::2222-:22
$ ssh -p 2222 root@localhost

Note — environments without a hardware RNG. GoNIX relies on the kernel CRNG being seeded at boot, which on a VM means the hypervisor exposing an entropy source (a virtio-rng device, an EFI RNG, or a CPU RNG instruction). QEMU/KVM and cloud providers all do; VirtualBox’s experimental ARM target does not. Without one, the CRNG never initialises, so anything needing secure randomness (the SSH host key, TLS) blocks — the console still works. Always give arm64 VMs a virtio-rng device where you can.

Any cloud with custom-ISO boot

GoNIX boots the live ISO directly — no install-to-disk — so the instance’s disk is free for your data. Point your provider at the public ISO URL:

https://pkgs.ulinux.org/images/gonix-amd64.iso

On first boot, GoNIX’s cloud-init pulls your SSH key and hostname from the provider’s metadata service (NoCloud and Vultr are supported today), so you land on a configured server with nothing baked in.

Vultr, declaratively

resource "vultr_iso_private" "gonix" {
  url = "https://pkgs.ulinux.org/images/gonix-amd64.iso"
}

resource "vultr_instance" "gonix" {
  region   = "sgp"
  plan     = "vc2-1c-1gb"
  hostname = "gonix"
  iso_id   = vultr_iso_private.gonix.id
}

terraform apply, and Vultr fetches the ISO and boots it. This very site runs exactly this way — the GoNIX repo has the full cloud-init-driven deploy (site + Let’s Encrypt TLS, reproducible from terraform apply alone).

Once you’re in, try pkg install htop and poke around. The Download page has checksums, per-commit archives, and the from-source build.