First things first – don’t be scared, OS development isn’t rocket science, it’s just a lot of work – reading technical specifications, standards and writing code. The details you put into the process are up to you and you can write a simple single process text based software running directly on your PC hardware or a fully blown general purpose OS with multi-tasking and fancy 3D GUI.
Second of all – you need to plan out some steps of what you do before you do, also I’m not going to ask you to go and read gazillion books in advance – I prefer to go with “learning by doing”.
Third. These tutorials will be targeting PC architecture with Intel x86_64 CPU architecture. So this might come as the first things first part, as you have to understand the PC architecture to begin with.
So here’s the plan:
- Understand the architecture!
- Choose your boot process. You might go with multi-boot methods, like UEFI, GRUB, etc. In these tutorials I’ve chosen the hardest way – start from good’ol BIOS and boot everything up from there. This will build a cleaner picture of this whole architecture
- Choose your storage. Either you write an OS that boots from Floppy disk (I ain’t going there – too 80ties!), USB stick, CD/DVD/BD (not going there either), Harddisk drive or Network (nope, too hard :)), you have to plan ahead (or simply know and accept) how the data will be laid out so that you can proceed with bootstrapping.
- Choose your target architecture and operating mode. As I’ve already pointed out, this tutorial will target x86_64 thus it’s Long mode (a.k.a. AMD64, Intel64, 64-bit mode).
- Write a lot of bootstrap code, because you’ll need to get from Assembly to C.
- Write a lot of drivers, managers and schedulers.