Luminary is a small x86 real-time operating system written in C and assembly. Its goal is to implement a kernel that includes a hard real-time scheduler that can run time-sensitive tasks.
It takes concepts from an existing operating system by the same author called Ulysses.
Written by Sam Kingston.
Latest version: 0.10.0
- Small codebase
- Hard priority-based preemptive scheduler
- Flat memory model (no virtual addresses)
- Support for basic I/O drivers
Some architecture notes and gotchas are located in NOTES.md.
You may configure the build by editing the $DEFINES
variable at the top of src/Makefile
.
Available options are:
-DDEBUG
: produce debugging output to the console. You probably want this with-DTURTLE
-DTURTLE
: scale the scheduler down to 1 task per second-DUSE_SERIAL
: enable the serial subsystem, which writes console output to COM1. This may be used withqemu -nographic
.
First, ensure all build requirements are met:
gcc
and GNUas
compilers that are capable of producing 32-bit executablesglibc-devel.i686
Then, building the kernel is as simple as running the included Makefile
:
$ make -C src
After building, you may run the kernel in QEMU with some shortcuts:
To have QEMU load the kernel image directly, opening an SDL window (fastest):
$ make -C src qemu
Or to build a bootable ISO image with Grub2 Multiboot and boot that way (requires xorriso
):
$ make -C src qemucd
You may also redirect output to the terminal by using:
$ make -C src console
Note that the kernel must be built with the -DUSE_SERIAL
option for this to work or you will
get no output from the kernel.