A simple POSIX-based operating system for 64-bit computers
Go to file
apio edeb420d0d
Some checks failed
continuous-integration/drone/push Build is failing
Update drone.yml
2023-07-21 14:11:44 +02:00
.vscode libos: Document it entirely using Doxygen comments =D 2023-06-09 22:45:06 +02:00
apps tests+kernel+init: Run tests automatically in a headless way 2023-07-21 14:09:37 +02:00
base base: Rename selene-home.sh to mount-home.sh 2023-07-12 19:47:45 +02:00
initrd kernel+apps+base+tools: Use Ext2 for the root partition file system 2023-07-10 13:05:06 +02:00
kernel tests+kernel+init: Run tests automatically in a headless way 2023-07-21 14:09:37 +02:00
libc kernel+libc+sh: Make the TTY device actually follow termios rules 2023-07-13 20:33:20 +02:00
libluna kernel: Don't create a new kernel stack on exec() 2023-07-12 16:06:56 +02:00
libos libos+apps: Add kill 2023-07-10 22:17:05 +02:00
tests tests+kernel+init: Run tests automatically in a headless way 2023-07-21 14:09:37 +02:00
tools tests+kernel+init: Run tests automatically in a headless way 2023-07-21 14:09:37 +02:00
.clang-format Update .clang-format 2022-12-21 20:22:44 +01:00
.drone.yml Update drone.yml 2023-07-21 14:11:44 +02:00
.gdbconf Make GDB use the correct kernel file 2022-12-03 17:34:14 +01:00
.gitignore kernel+apps+base+tools: Use Ext2 for the root partition file system 2023-07-10 13:05:06 +02:00
CMakeLists.txt all: Update minor version number to 0.3.0 pre-release 2023-06-19 11:41:10 +02:00
LICENSE Update year range in LICENSE :) 2023-01-02 13:08:42 +01:00
luna.json kernel+apps+base+tools: Use Ext2 for the root partition file system 2023-07-10 13:05:06 +02:00
README.md Update README.md 2023-07-11 11:50:57 +02:00

Luna

A very basic POSIX-based operating system for personal computers, written in C++. Build Status

Another UNIX clone?

Yes, another UNIX clone.

Features

Setup

To build and run Luna, you will need to build a GCC Cross-Compiler and cross-binutils for x86_64-luna. (Yes, Luna is advanced enough that it can use its own OS-Specific Toolchain, instead of a bare metal target like x86_64-elf. It is the first of my OS projects to be able to do so. The patches for Binutils and GCC are binutils.patch and gcc.patch).

You should start by installing the required dependencies.

Additionally, some extra Luna-specific dependencies you should install are: cmake, ninja, nasm and genext2fs.

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

You should have QEMU installed.

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 I decide to make a new version, 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?

Not right now, but hopefully we can start porting some software soon!

License

Luna is open-source and free software under the BSD-2 License.