A simple POSIX-based operating system for 64-bit computers
Go to file
2024-07-21 12:51:06 +02:00
.gitea/workflows CI: Don't install fakeroot as a dependency 2024-02-11 13:45:20 +01:00
.vscode libos: Document it entirely using Doxygen comments =D 2023-06-09 22:45:06 +02:00
apps libluna: Return a new Digest structure instead of a Buffer from SHA256 2024-07-20 16:12:43 +02:00
base base: Change ownership of skeleton files when copying them to the home folder 2024-05-01 18:55:18 +02:00
docs docs: Add boot_process.md 2024-05-02 10:57:46 +02:00
editor editor: Use window->add_keyboard_shortcut to handle Ctrl+S 2024-04-15 19:34:09 +02:00
initrd/sys initrd: Remove unused stray script file 2023-10-13 22:12:18 +02:00
kernel kernel/ATA: Avoid assuming endianness 2024-07-21 12:51:06 +02:00
libc libc+libluna: Add endianness-dependent functions and use them in SHA256 2024-07-20 16:26:06 +02:00
libluna libc+libluna: Add endianness-dependent functions and use them in SHA256 2024-07-20 16:26:06 +02:00
libos libos: Change the year in the default ArgumentParser copyright message 2024-04-20 17:24:26 +02:00
libui libui: Remove the server->client message "WindowCloseRequest" 2024-05-01 18:19:34 +02:00
ports ports: Add doomgeneric port 2024-03-31 13:40:43 +02:00
shell shell: Split code into multiple files, add the "echo" builtin, and add support for a .shellrc file 2024-04-20 17:17:31 +02:00
terminal terminal: Use widget->window() instead of the App's main window 2024-04-15 17:06:04 +00:00
tests tests: Add tests for SHA256 2024-07-20 16:34:31 +02:00
tools base+su+libc: Add support for a shadow file and use it by default 2024-04-10 22:37:36 +02:00
wind wind+libui: Ignore alpha bits in the window buffer 2024-03-31 13:38:39 +02:00
.clang-format Update .clang-format 2022-12-21 20:22:44 +01:00
.gdbconf Make GDB use the correct kernel file 2022-12-03 17:34:14 +01:00
.gitignore taskbar: Make taskbar entries configurable 2024-04-10 21:42:21 +02:00
CMakeLists.txt editor: Add a basic text editor 2024-04-15 17:06:04 +00:00
LICENSE Update LICENSE 2024-01-04 11:24:48 +01:00
luna.json tools: Make the Ext2 partition bigger (32M) 2023-07-22 16:11:34 +02:00
README.md Update README 2024-04-20 15:57:01 +02:00

Luna

A simple POSIX-based operating system for 64-bit computers, written in C++.

Another UNIX clone?

Yes, another UNIX clone.

Features

Screenshot

Screenshot as of 0.6.0

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, fakeroot 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 manually since run.sh does it for you.

Prebuilt images

Prebuilt ISO images for every release version can be found at pub.cloudapio.eu.

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.