Free & Simple Operating System
The main purpose of this project is to learn, so expect some mistakes. If you want to contribute to the project, feel free to make a pull request.
This project has a wiki explaining how the OS works from the start, so feel free to check it out here and open an issue if you find wrong or incomplete information.
The goal of this project is not to create a user-friendly and secure system. The goal is to create a playground for tinkering, where you have a lot of power and a lot of things that can go wrong. As the project evolves, I would like that tinkering to be more accessible at runtime, instead of having to edit the code directly and re-compile the OS. Being able to edit code and assembly at runtime (not necessarily the operating system's code) would be amazing.
An important part of this project, as the name implies, is to keep it very simple and bloat-free. This is very important to understand how everything in the project works, which is one of the main goals.
Some interesting resources that influenced the project's philosophy:
- GNU philosophy (See free).
- Suckless philosophy.
- cat-v.org and their list of harmful stuff.
- TempleOS and Terry A. Davis.
- i686-elf cross compiler from here.
- nasm for compiling the assembly used in the project.
- The limine dependencies, including xorriso for creating the bootable image (Limine sources are already in the repo and only need to be compiled once).
- (Optional) qemu for testing the ISO on a VM.
Note
Depending on the distro, you might also need theqemu-ui-gtk
andqemu-audio-pa
packages for the virtual machine.
Once you have all the requirements, simply run:
$ git clone https://github.com/fs-os/fs-os
$ cd fs-os
$ make
...
Which would be the same as the following:
$ make limine # Clone and build the bootloader inside ./limine/, you only need to do this once
...
$ make sysroot
...
$ make fs-os.iso
...
Note
For more information about the building process and target dependencies, see the compiling section of the wiki.
Or for testing it directly with qemu:
$ make qemu
...
This project uses the doxygen tool to generate its documentation.
Package name (gentoo) | Description |
---|---|
app-doc/doxygen |
Doxygen for building the documentation |
app-text/texlive |
For building the documentation in LaTeX format (for pdf) |
media-gfx/graphviz |
(Optional*) For the graphs |
dev-texlive/texlive-latexextra |
(Optional) Only needed for building the documentation in pdf format |
* Needed if HAVE_DOT=YES
in Doxyfile (The default).
Simply run:
$ doxygen
...
$ firefox doc/html/index.html
...
Generate PDF from LaTeX (Optional):
$ cd doc/latex
$ make pdf
...
$ firefox refman.pdf
...
See todo.md or the todo list of the doxygen documentation.
Note
Some screenshots might be a bit outdated.
- OSDev wiki
- The limine bootloader
- The cozette font
- bdf2c
- This repo for the beep frequencies and timings.