Writing an operating system from ground up is no small feat. It involves understanding the CPU architecture, structure of a boot sector, memory management, device driver etc. When a newbie decides to learn how to write a hobby OS, the usual advice from the bearded OS gurus is "Poke around Linux kernel". But the inherent problem with that approach is the lack of proper documentation and the overwhelming size of the project.
IanOS is a 64-bit operating system, that was created for the sole purpose of understanding the initial steps of creating an OS. The disclaimer on the project page reads:
The project page has clear instructions on how to get started. The author recommends a list of tools that he used while developing this OS and some links to the required documentation.
- Host OS - Any flavor of Linux
- Emulator/Debugger - AMD's SimNow, qemu
- Compilers - gcc
- Editors - Hex editor and an IDE
- Disk image - mtools
The documentation page is constantly growing and has very specific information about the source code. This definitely makes it easy to follow the code and understand the different sections. It is a perfect place for anyone who is waiting to get started on writing a OS or simply to understand the low-level intricacies of an operating system.
Another great resource for understanding the OS internals and Computer Architecture is Gustavo Duarte's articles on System Internals. These are some well-written series of articles that explain in detail the Memory Management, CPU Cache, CPU Privileges, Kernel Boot Process and other OS relevant subjects.