The Monolithium Operating System (mirror)

coderain 876bb4f27f Implement module loading. Move drivers into modules. Fix bugs. 6 years ago
crt 44aa1c0d85 [crt] Set the default heap. Update next_offset after blocks have been merged. 7 years ago
drivers 876bb4f27f Implement module loading. Move drivers into modules. Fix bugs. 6 years ago
kernel 876bb4f27f Implement module loading. Move drivers into modules. Fix bugs. 6 years ago
library c2c026e397 Automatically generate syscalls.h and syscalls.c as well 6 years ago
manager 6f82eb13a8 Reorganize the headers 7 years ago
sdk 632d3438cb Reimplement AVL trees 6 years ago
tests f1aca69db9 Update the hello.asm sample program. 7 years ago
.gitignore 876bb4f27f Implement module loading. Move drivers into modules. Fix bugs. 6 years ago
COPYING 6556847b55 Initial commit. 7 years ago
Makefile 876bb4f27f Implement module loading. Move drivers into modules. Fix bugs. 6 years ago
README.md 7b76452f03 Add information about build prerequisites. 7 years ago
grub.cfg 876bb4f27f Implement module loading. Move drivers into modules. Fix bugs. 6 years ago
syscalls.awk c2c026e397 Automatically generate syscalls.h and syscalls.c as well 6 years ago

README.md

********************************************************************************
              __  ___                  ___ __  __    _
             /  |/  /___  ____  ____  / (_) /_/ /_  (_)_  ______ ___
            / /|_/ / __ \/ __ \/ __ \/ / / __/ __ \/ / / / / __ `__ \
           / /  / / /_/ / / / / /_/ / / / /_/ / / / / /_/ / / / / / /
          /_/  /_/\____/_/ /_/\____/_/_/\__/_/ /_/_/\__,_/_/ /_/ /_/

********************************************************************************

What is Monolithium?

Monolithium is a 32-bit operating system for x86 PCs. It is not a Unix-like system, and shares almost nothing with the Unix architecture. Written completely from scratch, it is completely incompatible with other operating systems. Currently, only the Monolithium kernel is implemented. The other major components, the "system library" and "system manager", are still missing.

Monolithium wasn't implemented according to any existing design, it was more or less designed as it was implemented, so the current interface may not be consistent. During this phase of its development, its kernel module interface and application programming interface are not stable and subject to major changes.

FREQUENTLY ASKED QUESTIONS

1) Why write another OS from scratch?

Most software development today is focused on assembling software from existing "building blocks", using libraries and high-level programming languages, which are designed to be complex and generic because they need to cover a lot of use cases. Simplicity is a very useful trait that is often overlooked. Monolithium is one of the few operating system projects with simplicity as its primary goal.

2) Why is there no development history?

I started this project in 2011, before I understood how VCS systems work and why they're important. I made backups at regular intervals, but since I didn't use git, there are no commits before the first release.

3) Will the interface ever become stable?

Having a stable interface, which will not change to the extent that later versions break software running in userspace, is one of the end goals of the project.

COMPILING

Prerequisites:

  • GNU GCC, built for the i686-elf target
  • GNU Binutils, also built for the i686-elf target
  • NASM
  • grub-mkrescue
  • Other tools required by scripts: GNU coreutils, mkfs.vfat, xxd, ...