Operating systems always fascinated me, whenever I used to teach the subject. I always used to think why can’t we give hands on experience to the students on the subject. Linux, Minix source code are serious piece of work and to make the students understand and learn about those in our scenario is a heck of a task. That is why I thought why not to develop something which is more simpler and just need basic skills. If one gets interested then he/she may read further and enhance the code.

Operating systems are really hard to code and it needs skills, understanding of computer system and technique. It needs strong skills in Assembly language, C programming and system internals, knowledge of interrupts and many other.

I thought why not to give all this in bits and pieces to students so that they can develop their own operating system with whatever skills they have. I will start a tutorial on the same so that readers those are interested in designing their own toy operating system can learn the skills by following the steps. I will be using Ubuntu 12.04 operating system for the entire tutorial.

Prerequisites for the tutorial:

  • Basic understanding of computer.
  • Basic understanding of Assembly language 80×86,how to assemble a code using nasm, as86,ld86.
  • Basic understanding of C programming language.

Software requirement:-

  • A working PC/Laptop.
  • Bochs: A cross platform IA-32 emulator.
  • An editor: Vim, nano or gedit (for linux). You can see the documentation on vim, nano or gedit from the links.
  • Operating System Ubuntu 12.04
  • gcc compiler
  • Netwide Assembler: nasm
  • Hexedit: An editor to see and amend the contents of any data file or binary file.
  • A standard low level copying utility for linux operating system: dd

This series of tutorial will explain every step in detail from understanding the steps involved in planning, coding, assembling, compiling and testing the code.
Now, since I have given readers some basic requirements of the system. Lets start the planning our operating system design and capabilities.

My next blog will explain you about my planning and design of my toy os.

The source code will also be available on my repository on github link


  1. http://www.wikihow.com/Make-a-Computer-Operating-System
  2. http://www.acm.uiuc.edu/sigops/roll_your_own/
  3. http://wiki.osdev.org/Main_Page
  4. http://linuxgazette.net/issue77/krishnakumar.html
  5. http://gusc.lv/2012/11/im-writing-my-own-os/
  6. http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/
  7. http://www.linuxdoc.org/HOWTO/Assembly-HOWTO/ownos.html
  8. http://en.wikibooks.org/wiki/Operating_System_Design/Print_Version


I would like the readers to please go through the license of the software before downloading it. I would request if you like the tutorial then please let others also know about it because sharing is caring.

Creative Commons License
Design and Development of Operating System for teaching operating system course by Gaurav Parashar is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.