v0.4.0 · boots Alpine Linux 3.23

UNIX-like x86-64 kernel, written from scratch.

Uinxed is a monolithic UNIX-like x86-64 kernel in C — Limine boot on UEFI/Legacy, SMP bring-up, and a Linux-compatible syscall ABI.

kernel/sched/sched.c L187–L210
187/*
188 * EEVDF core: eligibility check
189 *
190 * A task is eligible iff lag >= 0, i.e. its ideal service time
191 * exceeds its actual service time. In discrete form:
192 * avg_vruntime >= (vruntime - min_vruntime) * avg_load
193 */
194
195/* Whether a vruntime is eligible given the runqueue state */
196static int entity_eligible_vruntime(eevdf_rq_t *rq, uint64_t vruntime)
197{
198 __int128 avg = rq->avg_vruntime;
199 uint64_t load = rq->avg_load;
200
201 if (rq->curr && rq->curr->state == TASK_RUNNING) {
202 uint64_t weight = rq->curr->weight;
203 avg += (__int128)(int64_t)(rq->curr->vruntime - rq->min_vruntime) * weight;
204 load += weight;
205 }
206
207 /* The key*load term can overflow s64 on a long-lived or heavily loaded rq. */
208 int64_t key = (int64_t)(vruntime - rq->min_vruntime);
209 return avg >= (__int128)key * load;
210}
Verbatim from the kernel source tree. Browse source
License
Apache-2.0
Language
C
Target
x86-64
Firmware
UEFI + Legacy
Scheduler
EEVDF
Syscall ABI
Linux 6.12
Capabilities 01

Six subsystems, all in-tree

A practical, self-contained kernel with modern design principles — no borrowed kernel underneath.

01

EEVDF scheduler & SMP

Earliest Eligible Virtual Deadline First with per-CPU runqueues, migration, load balancing, IPI preemption and Priority Inheritance futexes.

vruntime · deadline · vlag · PI-futex

02

Memory management

Binary-buddy frames, 4-level paging, higher-half direct map, slab heap, unified page cache with LRU reclaim, writeback, readahead — plus swap.

HHDM · page cache · writeback · swap

03

VFS & filesystems

UNIX-style VFS with tmpfs root, procfs/sysfs/devtmpfs/cgroupfs, plus FAT/exFAT, ext2/3/4, NTFS (write) and ISO 9660 (Rock Ridge).

tmpfs · ext4 · NTFS · ISO 9660

04

In-house network stack

Ethernet, ARP, IPv4/IPv6, ICMP(v6), NDP, UDP and TCP with e1000/RTL8139 drivers, Linux socket ABI, DHCP and /proc/net views.

IPv6 · TCP · DHCP · AF_NETLINK

05

Linux ABI & IPC

Linux 6.12 x86-64 syscall numbering (0–462, unimplemented return -ENOSYS), epoll, eventfd/timerfd/signalfd, pipes, PTYs, modules and inotify.

0–462 · epoll · futex2 · PID 1

06

Drivers & security

AHCI/NVMe/USB storage, HDA audio, DRM/KMS display, USB HID, ACPI/PCI/USB stacks — with seccomp, no_new_privs and ptrace.

AHCI · NVMe · DRM/KMS · seccomp

Project status 02

It already boots a real distro

Experimental, but past “hello world” long ago — validated on virtual machines and physical servers.

  • Alpine Linux 3.23 boots

    Current image brings up Alpine userland on x86-64, including an Xfce (X11) desktop with a working terminal.

  • Real hardware proven

    Runs on physical servers including Dell PowerEdge R410, via UEFI, Legacy or Ventoy boot.

  • Under active validation

    PS/2 input, evdev consumers, poll/epoll wakeups and scheduler behavior are being hardened right now.

Experimental software

GPU, VirtIO, audio and parts of the ABI are still incomplete. Use disposable disks or VMs — not production data.

boot & init flow init/main.c
  1. 01

    Limine → kernel_entry()

    UEFI / Legacy handoff

  2. 02

    Early init

    SIMD → serial → framebuffer → allocator → paging → heap

  3. 03

    Platform

    ACPI → TPM → TSC → SMP bring-up → PCI

  4. 04

    Drivers

    net → storage → input → audio → USB → display

  5. 05

    Filesystems

    VFS → tmpfs root → procfs / sysfs / devtmpfs

  6. 06

    Kernel services

    scheduler → process → IPC → syscalls → cgroups

  7. 07

    init (PID 1)

    Userspace starts, scheduling begins

Hardware support 03

What it talks to

Every driver below lives in-tree. Some subsystems ship disabled by default in Kconfig — turn them on with `make menuconfig`.

Input

PS/2 keyboard & mouse · evdev · USB HID (keyboard, mouse, consumer control)

Storage

IDE/ATA · AHCI (SATA) · NVMe · USB Mass Storage (BOT / SCSI)

Audio

Sound Blaster 16 · Intel HD Audio · ALSA-compatible PCM/control ABI

Display

DRM/KMS core + GPU driver registry · VirtIO-GPU · GOP framebuffer console · software fb fallback

Network

e1000/e1000e (82540EM, 82545EM, 82546EB, 82541PI, 82574L) · RTL8139 / RTL8169

Bus

PCI/PCIe (ECAM + legacy) · USB UHCI / OHCI / EHCI / xHCI · I2C

Platform

ACPI · HPET · RTC · serial · IEEE 1284 parallel · TPM (TIS/CRB, 1.2 + 2.0)

Security

seccomp filters + user notifications · no_new_privs · ptrace · cgroups pids controller

Codebase 04

182,656 lines, all written here

No borrowed kernel underneath — every subsystem below is in-tree C, counted straight from the source tree.

Lines of C
182,656
Files
452
Sources
238 .c
Headers
214 .h
drivers 49,317 99 .c
fs 44,904 46 .c
kernel 29,519 40 .c
include 26,930 214 .h
net 13,063 15 .c
ipc 7,236 6 .c
mem 5,828 11 .c
libs 3,731 15 .c
security 1,343 2 .c
init 441 1 .c
tools 215 1 .c
boot 129 2 .c

Line counts come from the kernel source tree — `find` + `wc -l` over every *.c and *.h.

Quick start 05

Build it and boot it

Three commands from clone to a running kernel on QEMU.

01 Prerequisites

make, gcc 13.3+, qemu, xorriso — plus clang-format / clang-tidy and kconfig-frontends for development.

# Debian / Ubuntu
$ sudo apt install make gcc qemu-system xorriso \
    clang-format clang-tidy kconfig-frontends \
    libncurses-dev dos2unix

# Arch Linux
$ sudo pacman -Sy make gcc qemu-system xorriso \
    clang-format clang-tidy kconfig-frontends \
    libncurses-dev dos2unix
02 Build the image

Produces UxImage (kernel) and Uinxed-x64.iso (bootable CD image).

$ git clone https://github.com/ViudiraTech/Uinxed-Kernel.git
$ cd Uinxed-Kernel
$ make
03 Run in QEMU

Boots the ISO on q35 with OVMF firmware; serial output appears in your terminal.

$ make run
tree Uinxed-Kernel -L 1
Uinxed-Kernel/
├── boot/       Boot protocol structures and interfaces
├── init/       Kernel entry and initialization routines
├── kernel/     Core subsystems and runtime services
├── mem/        Memory management subsystem
├── fs/         VFS and filesystem implementations
├── net/        Network stack and protocols
├── drivers/    Hardware drivers and device support
├── ipc/        Inter-process communication mechanisms
├── security/   Security and policy components
├── include/    Kernel headers and public interfaces
├── libs/       Internal kernel libraries and utilities
├── tools/      Development, debugging and auxiliary tools
├── scripts/    Build, configuration and maintenance
├── assets/     Build and boot resources
├── Kconfig     Kernel configuration system
└── Makefile    Build system

Real hardware

  • UEFI: GPT + ESP, copy assets/Limine to the ESP, UxImage to EFI/Boot, Secure Boot off.
  • Legacy: burn Uinxed-x64.iso to a drive and boot on a 64-bit machine.
  • Ventoy also works — copy the ISO onto the drive and select it from the menu.
Full guide in the kernel README
FAQ 06

Frequently asked

Short answers — details live in the kernel README and DeepWiki.

Are all Linux syscalls implemented?

No. The table follows Linux 6.12 x86-64 numbering (0–462), but only a subset is implemented. Unimplemented calls return -ENOSYS instead of crashing, and coverage grows over time.

How do I read the kernel log?

Logs go to the boot console (default tty0). For reliable debugging, set kernel_cmdline to console=ttyS0 in limine.conf and rebuild — make run already attaches QEMU serial to stdio.

A driver I expected is not working (e.g. VirtIO-GPU)?

Some subsystems default to off in Kconfig (e.g. VIRTIO, VIRTIO_GPU, SOUND_SB16). Enable them with make menuconfig and make sure the device exists in your VM or hardware.

Can I run it on real hardware?

Yes, as an experiment. Prefer disposable machines or test disks — filesystem drivers (especially the NTFS writer) are not yet safe for important data.

Which dev commands are available?

Run make help for all targets: format, check (clang-tidy), menuconfig, gen.clangd and more.

Can I contribute?

Yes. Issues are welcome in any language. For patches, run make format and make check first so the diff stays reviewable.

uinxed — contribute

Hack on a real kernel.

Star the repo, open an issue in any language, or send a patch — polite reports welcome.

Discord · QQ 1084955319