Mojo Operating System

Introduction
About
Status
History
FAQ
Documentation
Testing
Resources
Download
Screen Shots
Credits
introduction image

Introduction

February 2010

Mojo is a simple operating system for the x86 architecture. It is developed using C, C++ and a little assembly language. My goal is to implement a modern desktop OS. Mojo OS currently consists of a kernel, a virtual file system and some hardware and file system drivers. I have implemented drivers for PCI, VGA, PS/2, ATA/ATAPI and BGA. The file systems supported are FAT, ISO 9660 and a home made boot file system to access modules loaded by the boot loader.

I have been working on it as my hobby project since February 2008 and released the first version in October 2008 - about 8 months later. The next major revision 0.2.0 took about 6 months and I am currently working towards version 0.3.0. Check my plan for version 0.3.0 here.

If you want to try it you can download binaries from the download page.

I need to have Mojo OS tested on more real hardware. Please help me by testing it on your machine - it only takes a little time and will help me a lot. You can read more on the testing page where I describe in details what I need tested.

News

Updated homepage (February 11. 2010)

Updated the homepage. Most of the content has been migrated to DokuWiki. I adapted an DokuWiki integration so that I can generate homepage content from wiki pages. Integrated the Plogger image gallery and uses it to display screen shots.

Version 0.2.2 (November 19. 2009)

I finally got around to building the final release of Mojo OS 0.2.2. I have also added a new FAQ.

Direct download links: ISO image (1.30 Mb) zip icon Floppy image (929 Kb) zip icon

Version 0.2.2 beta 2 released (October 4. 2009)

Closed all open bugs scheduled for this release. I had to close some bugs without fixing them since I was unable to reproduce them. I apologize to the people who reported them - if the bugs persist please report them again and provide some more info to help me find and fix them. Cleaned up and refactored all drivers and file systems.

Direct download links: ISO image (1.31 Mb) zip icon Floppy image (929 Kb) zip icon

Version 0.2.2 beta 1 released (July 18. 2009)

Once again I got side tracked - this time with an USB driver. I acquired a new test machine which USB legacy emulation worked very weird. Instead of wasting time getting my PS/2 driver to work I started investigating how to write an USB stack. So far I can enumerate devices and hubs connected to an emulated UHCI host controller.

The physical memory handling has been improved. I now use both a bitmap and a stack to keep track of physical pages. It is both more powerful and also faster than my previous way of doing it.

The kernel timer event handling is now working correctly. Timers now works in the GUI framework too. The time displayed in the menu bar is dynamic and the system monitor application updates itself in real time.

I added zlib and libpng as external libraries. The GUI now uses PNG images instead of raw images.

For a complete list of changes see the history.

Direct download links: ISO image (1.27 Mb) zip icon Floppy image (921 Kb) zip icon

 
Screen shots of the improved system monitor application and the new USB enumeration.

Version 0.2.1 released (May 27. 2009)

Found and fixed the bugs reported by NickJohnson from the osdev.org forums. Thanks for the help. For a complete list of changes see the history.

Direct download links: ISO image (1219 Kb) zip icon Floppy image (785 Kb) zip icon


Purity GUI using a bitmap as desktop background.

Version 0.2.1 beta 2 released (May 23. 2009)

Found and fixed the bugs reported by AlexExtreme, scgtrp and Tomaka17 from the osdev.org forums. Thanks for the help.

Version 0.2.1 beta released (May 22. 2009)

This version is an incremental improvement from the previous. It looks almost the same but much have changed. The console driver has been split into a VGA driver and a terminal driver. Added a BGA driver. The GUI now uses the drivers instead of doing drawing to screen itself. Memory mapping between processes was added to make the video drivers possible.

The kernel memory initialization is (hopefully) improved. It should now be able to handle more than 4 Gb of memory as well as weird memory maps. But I'm afraid it still needs testing.

I added the first external library. The GUI now uses libjpeg to load JPEG images.

For a complete list of changes see the history.

 
The updated look of Purity GUI. In 24-bit color and 16 greys (standard VGA).

Version 0.2.0 beta released (April 28. 2009)

Version 0.2.0 is finally ready. It was supposed to be only minor additions and bug fixing but I got side tracked developing a real GUI. What was supposed to be just getting some graphics displayed on screen turned into a bit more. The GUI is still only a prototype and the main focus was learning about rendering and mouse focus handling.

I also finished the ISO 9660 file system driver. The keyboard driver has also been improved to handle the PS/2 controller better.

For a complete list of changes see the history.

 
Screen shots showing the look of the new GUI.

Version 0.1.3 released (February 7. 2009)

This release has focused on finishing the drivers and get Mojo running on real hardware. The hard disk driver now uses IRQ's and supports ATAPI too. Almost all of the goals for the next milestone has been reached. Only ISO 9660 support is missing.

The file systems have been refactored and is much cleaner and stable now. The FAT file system now also supports FAT 16.

For a complete list of changes see the history.

 
A few screen shots from the new release.

Version 0.1.2 releases (December 19. 2008)

This minor release has focused on adding functionality to the kernel and improving the drivers. I now support both English and Danish in the console and keyboard drivers.

IRQ's are now handled by running small programs in a simple virtual machine within the kernel. The result is an ordinary message that will be send to the driver process. This allows total separation of the kernel and drivers and (hopefully) a more stable system.

For a complete list of changes see the history.

 
Screen shots illustrating some of the new features. The kernel GUI during startup and a Tetris game. Don't led the eye candy fool you - most of the changes has actually been made "under the hood".

Version 0.1.1 released (November 16. 2008)

This minor release has mainly been about improving the kernel. I have cleaned up a lot of the code and implemented a handful more features. I can also successfully boot it on some real machines now.

I also implemented a simple text mode GUI library. I have used that to re-implement the memory and system utilities. The unit test frame work also got a big overhaul and is now much more stable and powerful.

For a complete list of changes see the history.

 
Screen shots illustrating some of the new features. The ps command shows process child and parent relationships. The m2 system utility is a DirectText application.

If you want to check out other home made operating systems you should visit OSDev.org [osdev.org].