Warning
skiftOS is currently in the early stages of development and is not yet ready for daily use. Please do not use it in production environments. Here be dragons! 🐉
skiftOS is a hobby operating system built from scratch for ARM, x86, and RISC-V architectures. It is designed to be simple, modern, and modular, featuring a modern C++ core library, reactive UI, and a capability-based microkernel. skiftOS values simplicity, modernity, and modularity, and has several notable features such as multi-architecture support and easy hackability. It is free and open-source under the MIT license.
Note
If you are having trouble building skiftOS, feel free to ask for help in the Discord server
To build skiftOS, you need to have a modern C/C++ compiler such as clang-16 installed on your computer. Additionally, you need to have the following tools installed: python3, llvm, clang, ninja, nasm, and qemu. Please refer to the documentation of these tools or use your package manager to install them.
First, set up the build environment by running the following command:
$ ./skift.sh tools setupThen, check that everything is working correctly by running:
$ ./skift.sh tools doctorAfter setting up the build environment, download the third-party dependencies by running the following command:
$ ./skift.sh model installNote
Running this step requires being in a graphical environment with a build of QEMU supporting graphics either via SDL or GTK. If you are using a headless server, you can use the ./skift.sh image build --format=hdd command to build a disk image.
Finally, build and run skiftOS by running the following command:
$ ./skift.sh image startIf all these steps are completed successfully, you should have a fully built and operational skiftOS ready for use. Enjoy! 😊
Contributions are welcome and encouraged for this project! We practice optimistic merging, which means that pull requests are merged into the main branch as soon as possible. The goal is to keep pull requests small, focused, and incremental.
When writing commit messages, please keep them short and concise. They should be prefixed with the name of the package that the commit affects. For example:
karm-base: Fix buffer overflow in Karm::String::reserve.
Binary files should be kept as small as possible. Here are some tips for reducing the size of different image formats:
- Use SVG instead of other raster image formats whenever possible.
- Use
optipng -strip allto reduce the size of PNG images. - Use
gifsicle -O3to reduce the size of GIF images. - Use
jpegoptim -m90to reduce the size of JPEG images.
I, Sleepy-monax, would like to express my gratitude to the following individuals for their help and support:
- Cyp, Keyboard Slayer, and D0p1 for being great friends and providing me with support and motivation.
- Feliwir for his contributions to the skiftOS and BRUTAL projects. I learned a lot from Feliwir's work and am grateful for his help.
- All the people who have contributed to the project and supported me through Github Sponsors.
The skift operating system and its core components are licensed under the MIT License.
The full text of the license can be accessed via this link and is also included in the license.md file of this software package.