Redux
Redux
Redux is an experimental hobby operating system for the x86-64 architecture, developed by devm15. It was originally conceived as a DOS replacement but has since evolved into a 64-bit operating system featuring paging, protected userspace, ELF64 executable loading and a system call interface.
Redux is currently in alpha development.
Architecture
Redux operates in x86-64 long mode and separates kernel and userspace execution.
- Ring 0: Kernel execution.
- Ring 3: Userspace application execution.
The kernel provides paging and a system call interface through which userspace applications can request kernel services.
The system uses a Global Descriptor Table (GDT), Interrupt Descriptor Table (IDT), interrupt handlers and an Advanced Programmable Interrupt Controller (APIC).
Userspace
Redux supports loading ELF64 executables into userspace.
Userspace applications execute in Ring 3 and communicate with the kernel through the SYSCALL instruction.
One demonstration application is a Space Invaders prototype, which runs in Ring 3 and uses kernel system calls to draw rectangles on the framebuffer.
Graphics
Redux provides framebuffer graphics.
The kernel exposes drawing functionality through its system call interface. The Space Invaders demonstration uses this interface to render graphics without directly accessing privileged kernel memory.
Storage
Redux uses FatFS for filesystem access and supports exFAT-formatted disk images.
The included reduximg.py utility prepares disk images and copies ELF executables onto them.
Boot process
Redux uses the Limine bootloader.
It can be run in QEMU using a bootable disk image. The disk image containing userspace programs must be attached before booting.
Input
Redux currently supports PS/2 keyboard input.
USB keyboard support has not yet been implemented.
Current limitations
Redux is an experimental operating system and is not intended for general-purpose use.
Known limitations include:
- No multitasking support.
- No USB keyboard support.
- Limited hardware driver support.
- Physical hardware compatibility has not been tested.
Building
Redux requires:
- An x86-64 cross-compiler.
- GNU Make.
- QEMU.
- Limine.
- NASM.
The project uses Makefiles for its build process.
See the Redux source repository for build instructions and dependencies.
Source code and licensing
Redux is open source and licensed under the GNU General Public License version 3 (GPLv3).
Source code: https://github.com/devm15x/Redux