uniOS is a custom x86-64 operating system written in freestanding C++20. It boots through the in-tree Meridian UEFI bootloader and starts a native desktop userspace session.
- Bootloader: Meridian, an in-tree x86-64 UEFI loader.
- Boot handoff: Repo-owned
BootInfostructure passed from Meridian to the kernel. - Build system: Meson + LLVM using
toolchains/llvm.ini. - Default boot image:
boot.img, a raw disk image with an EFI system partition and a writableUNI_DATAFAT32 partition. - Desktop session:
/bin/init.elflaunches the window manager, menubar, dock, and userspace applications. - Userspace: Native ELF programs under
src/usr/, with libc wrappers, a GUI library, shell, terminal, and desktop apps. - Filesystems: Boot content from
unifs.img; persistent data from FAT32 mounted at/datawhen available. - Drivers and subsystems: Paging, heap allocation, preemptive scheduling, syscalls, VFS, PCI, ACPI/APIC, PS/2 input, USB/xHCI, USB HID, USB mass storage, e1000, RTL8139, IPv4, TCP, UDP, DHCP, DNS, AC97, HDA, and framebuffer display output.
src/bootloader/: Meridian UEFI bootloader.src/kernel/,src/mm/,src/fs/,src/net/,src/drivers/: Kernel and subsystem code.src/usr/: Userspace runtime, libc subset, GUI library, shell, window manager, desktop services, and apps.include/: Kernel, driver, boot, and UAPI headers.rootfs/: Authored runtime files and config templates staged intounifs.img.appicons/,assets/,cursors/: Source assets used by the asset tools.docs/: Project site.docs/reference/: Architecture, shell scripting, and asset format notes.tools/: Image, filesystem, rootfs staging, asset conversion, and QEMU helper scripts.toolchains/: Meson cross-file configuration.
uniOS uses generated binary asset formats in the runtime image:
.uoic: Icon packages..uocu: Cursor packages..uof: Font files..uowp: Wallpaper packages.
The default wallpaper package is generated from assets/wallpapers/wp_light.svg and assets/wallpapers/wp_dark.svg, staged as /usr/share/wallpapers/default.uowp.
mesonandninjaclang,clang++,ld.lld,llvm-ar, andllvm-stripnasmqemu-system-x86_64and OVMF UEFI firmwarepython3withPillowandCairoSVGpackages
Release image:
meson setup build/release --cross-file toolchains/llvm.ini --buildtype release
meson compile -C build/release boot-disk isoDebug image:
meson setup build/debug --cross-file toolchains/llvm.ini --buildtype debug
meson compile -C build/debug boot-disk iso
meson test -C build/debug --suite smoke --print-errorlogsmeson compile -C build/release run # Standard QEMU run
meson compile -C build/release run-serial # Run with serial console
meson compile -C build/release run-headless # Run without VGA output
meson compile -C build/release run-usb # Run with USB storage emulation
meson compile -C build/release run-qemu-net # Run with network bridge
meson compile -C build/release run-qemu-full # Run with all featuresmeson compile -C build/debug lint
meson compile -C build/debug analyzeThe build system generates two primary boot targets:
boot.img: A raw disk image with an EFI system partition and a pre-allocated, writableUNI_DATAFAT32 partition. This is the recommended image for most users.uniOS.iso: A UEFI-bootable ISO9660 image intended for CD/DVD or VM ISO boot testing.
Both images use the same Meridian loader and kernel. While the ISO media itself is read-only, uniOS will automatically discover and mount any accessible UNI_DATA partition for persistent storage.
For real hardware, write boot.img to a USB drive as a raw disk image.
- System settings:
/data/SYSTEM.CFG(fallback:/etc/system.conf) - Wallpaper settings:
/data/WALLPAPR.CFG(fallback:/etc/wallpaper.conf) - Default wallpaper:
/usr/share/wallpapers/default.uowp - Persistent data: Mounted at
/datafrom FAT32 volumeUNI_DATA
MIT