Skip to content

fs-os/fs-os

Repository files navigation

fs-os

Free & Simple Operating System

Description

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:

Building from source

Requirements

  • 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 the qemu-ui-gtk and qemu-audio-pa packages for the virtual machine.

Building

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
...

Documentation

This project uses the doxygen tool to generate its documentation.

Requirements

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).

Building the documentation

Simply run:

$ doxygen
...

$ firefox doc/html/index.html
...

Generate PDF from LaTeX (Optional):

$ cd doc/latex
$ make pdf
...

$ firefox refman.pdf
...

Todo

See todo.md or the todo list of the doxygen documentation.

Screenshots

Note
Some screenshots might be a bit outdated.

fs-os0 fs-os1

Credits