yggdrasil-kernel
Rust Unix-like operating system kernel.
See also:
- ABI for kernel-user communication
- Rust fork to use with the kernel
- Userspace programs
- yboot — x86-64 UEFI bootloader
Main features
- Architecture support: aarch64 and x86_64
- Kernel/userspace preemptive multithreading
- Kernel-space multitasking with
async/awaitruntime - Symmetric Multiprocessing
- Unix-like virtual filesystem: files, directories, block/char devices, symlinks, mounts
- In-memory read-write filesystem for tar-based initrd
- sysfs/devfs
- Binary formats: ELF +
#!/...shebangs - Rust-style interfaces for most of the stuff like memory management, devices etc.
aarch64-specific:
- PSCI for SMP start-up and power control
- PL011 serial port
- ARM generic timer as system/monotonic timer
- GICv2 IRQ controller
x86_64-specific:
- UEFI boot through yboot (no plans for legacy boot)
- PCIe, with plans to extend to aarch64 as well
- NVMe drive support (read/write)
- AHCI SATA drive support (read/write)
- I/O and Local APIC IRQ controllers
- PS/2 keyboard,
- i8253-based timer (got some problems with HPET on real hw, had to revert, lol)
- COM ports
- ACPI, work in progress, mostly broken
on real hardware
- ACPI shutdown
- PCI IRQ pin routing
- Events like power button, etc.
- Fancy framebuffer console
Userspace features:
- Sanitized system calls better suited for Rust
- Userspace threads
- Synchronization primitives through futex-like interface
- Unix-like signals and exceptions
General plans (in no particular order)
- Better unification of architecture code
asyncfor VFS (?)- PCIe NVMe block device
- PCIe SATA block device
- PCIe XHCI USB devices
- Better algorithms for memory management
Navigation
src/arch— architecture-specific codesrc/device— device driver implementationsbus— bus devices like USB, PCIe etc.display— everything related to graphic displayspower— power and reset controllersserial— serial transceiver driversdevtree.rs— stuff related to ARM DeviceTreetty.rs— Unix-style terminal driver implementation
src/fs— in-kernel filesystems (sysfs/devfs)src/mem— memory managementsrc/proc— process information managementsrc/syscall— system call handlingsrc/task— kernel and userspace tasks, processes and threadssrc/util— utilities used within the kernelsrc/init.rs— kernel init thread impl.