Redux

From OSDev Wiki
Jump to navigation Jump to search

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.

Redux running Space Invaders in Ring 3.

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