3.4 KiB
Luna
A simple POSIX-based operating system for personal computers, written in C++.
Another UNIX clone?
Features
- x86_64-compatible lightweight kernel.
- Preemptive multitasking, with a round-robin scheduler.
- Virtual file system with a simple tmpfs and read-only ext2 support.
- Can load ELF programs from the file system as userspace tasks.
- Boots from an ext2 root filesystem (a bit slow for now).
- System call interface and C Library, aiming to be mostly POSIX-compatible.
- POSIX signal support.
- Designed to be portable, no need to be restricted to x86_64.
- Designed around UTF-8.
- UNIX local domain sockets, allowing for local IPC.
- Environment-agnostic utility library, which can be used in both kernel and userspace.
- Return-oriented error propagation, inspired by Rust and SerenityOS.
- Build system uses CMake.
Setup
To build and run Luna, you will need to build a cross-compiler and cross-binutils for x86_64-luna
.
For this, you should start by installing the required dependencies.
Then, run tools/setup.sh
to build the toolchain.
Please beware that building GCC and Binutils can take some time, depending on your machine.
Running
To run Luna in a virtual machine, you should have QEMU installed.
Additionally, the build process needs some extra dependencies to run: cmake
, ninja
, nasm
and genext2fs
.
tools/run.sh
is the script you should use in most cases. It will build changed files, install, make an ISO image, and run Luna in QEMU.
If you have no toolchain set up, run.sh
will build it automatically, which means that you don't necessarily have to run setup.sh
since run.sh
does it for you.
Prebuilt images
Prebuilt ISO images (numbered) for every version can be found at pub.cloudapio.eu.
These images are built manually whenever a new release is created, and thus don't reflect the latest changes on the main
branch.
Every hour, this server pulls the latest commits on main
and builds an hourly ISO image. The ten most recent ones can be found in the hourly directory, and Luna-latest.iso should always be symlinked to the newest one.
These images do reflect the latest changes on the main
branch, but are obviously less stable. Additionally, an hourly image will be skipped if building the latest commit of the project fails.
Is there third-party software I can use on Luna?
Yes! A ports system is in place, and you can use the build scripts to add some ports to your image. More information in the Ports page.
License
Luna is open-source and free software under the BSD-2-Clause License.