Jazz icon indicating copy to clipboard operation
Jazz copied to clipboard

Let's write an OS!

Build CodeFactor

Jazz

A small hobby OS

About the project

Jazz is an Operating System that I have decided to write from scratch to understand an OS.

Design Goals

The design goal of this project is to make a very light operating system with minimal microkernel. A light microkernel means an easy to maintain OS where each module is easy to test and update. This is also in line with the principle of separation of mechanism and policy.

Development

Build

make deps       # to build cross-compiler
make kernel     # to build kernel
make all        # to build everything

Most of the work is in kernel itself and the standalone kernel can be built from inside the kernel/ directory.

cd kernel/
make            # build the kernel
make qemu       # run the kernel on qemu
make gdb        # run a gdb session with qemu

Troubleshooting

Building dependencies fails with error: make -j 8 g++: internal compiler error: Killed (program cc1plus) This might be because you ran out of memory due to make running build in parallel. Try to change the option -j 8 to -j 2 and build again.

Debug

Aside from qemu and gdb, there is extensive logging on the serial port which can be accessed at /tmp/jazz_serial1.log file when qemu is started from the makefile as make qemu.

Todo

The todo/plan can be found here.

License

MIT © 2018-present Utkarsh Maheshwari