Page 1 of 1

Shipwreck OS

Posted: Sat Oct 27, 2018 4:07 pm
by slackbeard
Hey there,
Shipwreck OS is a project I started around 3 years ago and just finished up and pushed to github. It's very minimal for an OS but served me greatly as a personal exercise in design and programming. I also learned a lot from this forum and even untangled some of my issues just by reading other people's discussions here, so thanks a bunch to everyone here!

It's an OS for x86 PCs written in C++11, it has a simple GUI and minimal ELF support that it uses to load its shell program - which only supports a "help" command as a proof-of-concept.

It uses TAR as its filesystem so the disk image is literally a tar file prepended with a boot sector. Its API includes some file IO, threading, locks and GUI functions. The GUI is controlled by syncing a window hierarchy between userland and the kernel. I wasn't aiming for security so there are places in the code where pointers are blindly trusted by the kernel and array bounds might be unchecked.

For development I used clang, cmake and nasm on Ubuntu. I tried building the project on OSX with the same tool chain but it required too much tweaking so I wrote a Dockerfile that closely resembles my dev environment - theoretically anyone with Docker can build the project now.

I also included a pre-built virtual disk (as a .vmdk file) in a separate branch in case anyone wants to see it without building it, but keep in mind there's not much to it.

During development I ran it on VirtualBox, never on real hardware. I've used VMware and Bochs for past projects so I wouldn't be surprised if it works on those.

Anyway, I got the project to a state where I feel good wrapping it up and moving on to other stuff - it was a fun educational project and I reached my main goals with it. I won't be actively working on it for now but if anyone wants to read it or add to it, go right ahead.

Re: Shipwreck OS

Posted: Sat Oct 27, 2018 6:51 pm
by TheCool1Kevin
It's quite cute ^-^