Welcome to the Mandelbrot Operating System, a community driven OS by the youth. This OS is built by a humble (Or not so humble idk) group of teenagers over at Discord. We do this solely to have fun and to learn. We are not organized and are here to enjoy ourselves. Sounds appealing? Create a pull request!
This project is made for fun and learning. It's like tracing OS history, but with modern knowledge and without a lot of budget lol
sudo pacman -S base-devel qemu nasm mtools
sudo apt-get install build-essential qemu nasm mtools
Mandelbrot depends on some tools, like the limine bootloader and the GNU Toolchain. To get these, run:
make toolchain
After it's done, you can head over to Building and Running.
To build the OS itself, make sure you have built the toolchain. After that, you can
make
It will run the QEMU emulator by default.
By default the OS does nothing as we don't have a userland but stuff can be added to the kernel for testing purposes. There will often be remaining test code that is left over.
MandelbrotOS uses / as a root drive and all things are to be mounted on there.
Mandelbrot is coded to some specific standards. They are
- Use snake_case for all variables and functions
- Use SCREAMING_SNAKE_CASE for all constants
- Use include guards in all header files and make sure they follow the following format:
#ifndef __FILENAME_H__
#define __FILENAME_H__
// Code here
#endif
- Try to structure the file so that you include everything first, declare all variables second and then write all functions last
- Code in GNU99 compatible C and NASM compatible assembler
- Use stdint.h and stddef.h variable declerations for standard number sizes
- Make sure all custom typedefs end it
_t
- Once everything is done, clang format with the command
bash -c 'find ./src -type f \\( -iname \\*.h -o -iname \\*.c \\) -exec clang-format -i -style="{IndentWidth: 2,TabWidth: 2,IndentGotoLabels: true,IndentCaseLabels: true,KeepEmptyLinesAtTheStartOfBlocks: true,ConstructorInitializerIndentWidth: 2, ContinuationIndentWidth: 2,}" {} \\;'
Mandelbrot uses code that is not it's own. You can see a list of this code and their authors at AUTHORS.md
This is an open source project. Reuse code. Just follow the license terms and we are good. :)