apio
ec6ceb4c8d
All checks were successful
Build and test / build (push) Successful in 1m51s
Since waitpid always sends a SIGCHLD now, we'd handle a SIGCHLD after returning from waitpid, which would trigger another wait, looping forever and not actually handling the wait. |
||
---|---|---|
.gitea/workflows | ||
.vscode | ||
base | ||
docs | ||
gui | ||
initrd/sys | ||
kernel | ||
libc | ||
libluna | ||
libos | ||
ports | ||
shell | ||
system | ||
tests | ||
tools | ||
utils | ||
.clang-format | ||
.gdbconf | ||
.gitignore | ||
CMakeLists.txt | ||
LICENSE | ||
luna.json | ||
README.md |
Luna
A simple POSIX-based operating system for 64-bit computers, written in C++.
Another UNIX clone?
Features
- Lightweight 64-bit kernel. Compatible with the x86_64 architecture.
- Basic threads/processes, using a simple round-robin scheduler.
- Read-only ext2 filesystem.
- Can load ELF executables, shebang scripts or arbitrary binary formats (registered through kernel modules, which are not supported yet =D).
- C Library, aiming for POSIX compatibility, with many features such as local domain sockets, signals, and shared memory.
- Support for several third-party programs, including the GNU binutils suite of utilities and the GCC compiler.
- Designed to be portable, so that additional architectures can be added in the future with relatively low effort.
- Everything text-related is designed around UTF-8.
- Environment-agnostic utility library, which can be used in both kernel and userspace.
- An extensive set of standard Unix utilities, from ls to uname to base64. Written in modern C++ and very small amounts of code, using Luna's practical OS library.
- A simple and efficient windowing system, providing a lightweight GUI environment (still in development, not many GUI apps exist).
Screenshot
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.
Login UI
For development convenience, the system automatically starts a GUI session as the default user, without prompting for a password.
Despite this, Luna does have a login window built-in. If you'd like to try this feature out or start a GUI session as a different user, you'll need to edit base/etc/loginui.conf and change the line that says Autologin=true
to Autologin=false
.
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.