Skip to content
This repository

a hobby operating system written in C

branch: master
README
Rhombus Operating System 0.8 Alpha

-- Have a problem? Check the Wiki and FAQ first! --

Introduction
*****************************************************************************

What is Rhombus?

Rhombus is a hobby operating system project designed and written primarily by 
me (Nick Johnson), since some time in late 2008. Currently, it consists of a 
microkernel, a C library, a shell and simple utilities, and a small set of 
device drivers. It should run on any standard PC hardware with a Pentium
or better processor, and uses 32 bit protected mode.

The Rhombus system is roughly UNIX-like in many areas, but it is mostly its
own system, and is not POSIX compliant (although it may be partially so in
the future.) It has a particularly interesting VFS mechanism that allows any 
process to act as not only a file, but a whole mounted file system. It also 
is very fundamentally event-driven and multithreaded, which is good for 
driver writing and scalability over multiple processors (or at least it will 
be, once I get around to adding SMP support :P). It has been a sort of 
sandbox for my ideas, so there are plenty of other interesting bits as well.

How do I use Rhombus?

At the moment, Rhombus is not stable enough for real use, but it is rapidly
progressing toward that point. It already can run a Lua interpreter, which
is written in standard C, and all of its source code can be compiled with
all warning flags and all optimization flags for CLang. The first beta
release of Rhombus will likely occur soon.

All code in the Rhombus core (kernel, libc, libdriver, basic drivers) as well 
as most of the rest of the system uses an OpenBSD-like copyright statement.
In essence, this means you can freely modify and redistribute Rhombus as long
as you keep the license and copyright information on each of the files that
contains it. The OpenBSD license statement is a certified open source license, 
but you may incorporate Rhombus code into closed source projects if you wish.

What are the goals of Rhombus?

Rhombus, much like the original UNIX, strives to give the programmer powerful, 
general connections with which to combine system components. With UNIX came 
text pipelines and device files; Rhombus extends this with uniform resource
addressing, a general purpose command system for system daemons and services,
graphics and event pipelines, and pseudo-filesystems that can be presented by
any user process.

In addition, Rhombus strives to allow easy modification, when existing stacks
and protocols prove insufficient. Rhombus is built to be rebuilt, to be taken 
apart and understood, and to be a foundation for new ideas. Every core piece 
of Rhombus is intended to be simple enough for a single person to completely 
understand, and if necessary, to for a single person to rewrite.
Documentation (at release at least) will be comprehensive from the largest 
library down to the smallest function, to aid those who wish to hack.

Build Instructions
*****************************************************************************

This system is meant to be built with x86 or x86_64 Linux as a host: it may 
build and test on other Linux platforms, and will probably build on any 
UNIX-like system.

To reliably build the system, you should use a cross-compiler. Instructions
for how to install a cross-compiler for Rhombus are found here:
https://github.com/nickbjohnson4224/rhombus/wiki/Environment-setup

To build the system, type "make". To create a CD image from the built system,
type "make image" -- the image will be created at rhombus/run/rhombus.iso. 
To build and then test the system using QEMU, type "make test". To remove 
all object files, type "make clean".
Something went wrong with that request. Please try again.