Beginning of OS-Dev tutorial - What do you think?
Posted: Fri Dec 10, 2004 1:17 pm
Hello, everybody.
I noticed there have been a few people posting some of the documentation they've been writing recently, and now I think it's my turn to contribute and listen to what you think.
A few months ago I decided to try and document exactly what I did when learning how to do operating system developement. Since then, it's turned into more of a tutorial. It's still far from complete, and I'm still very far from understanding even just the basics of a kernel, but I think it's still worth reading for beginners.
The tutorial covers setting up your environment (what tools to use, installing cygwin, getting gcc and so on) and then a whole lot of stuff on writing a boot loader, and using GRUB. So far that's it. I realise that writing a boot loader can't really be considered part of writing an OS, since really it's a seperate project, however, as I stated in the tutorial, I think it's still a good step for beginners to take. It is difficult, yes. It doesn't relate much to real operating system developement, yes. But I think it gives you a good reminder of how to program in assembly language, gives you a real feel for systems programming, and really is a great encouragment if you can get it working. There's nothing quite like the pride you feel when you manage to get your first hello world boot loader program working. It's a real feeling of satisfaction.
This is just a taste of what's hopefully to come. Later I plan to start adding some real OS-dev related things like adding interrupt handling, paging, multi-tasking, memory allocation, DMA, PIC/APIC stuff, console, keyboard and floppy drivers and so on. Some parts still need a little fleshing out, as I experiment with those myself still (such as the multiboot stuff with GRUB, or figuring out how to get a memory map using the BIOS - I haven't taken the time to understand how that works yet).
So, it would be nice to know what people think. Any improvements, suggestions, code contributions, constructive criticism or praise are all welcome. Just try not to be too hard, I'm still learning it myself as I go along
Last but not least, here's the actual URL. It's in PDF and sxw (open office document) format:
http://evil-geni.us/~irbme/osdev.zip
I noticed there have been a few people posting some of the documentation they've been writing recently, and now I think it's my turn to contribute and listen to what you think.
A few months ago I decided to try and document exactly what I did when learning how to do operating system developement. Since then, it's turned into more of a tutorial. It's still far from complete, and I'm still very far from understanding even just the basics of a kernel, but I think it's still worth reading for beginners.
The tutorial covers setting up your environment (what tools to use, installing cygwin, getting gcc and so on) and then a whole lot of stuff on writing a boot loader, and using GRUB. So far that's it. I realise that writing a boot loader can't really be considered part of writing an OS, since really it's a seperate project, however, as I stated in the tutorial, I think it's still a good step for beginners to take. It is difficult, yes. It doesn't relate much to real operating system developement, yes. But I think it gives you a good reminder of how to program in assembly language, gives you a real feel for systems programming, and really is a great encouragment if you can get it working. There's nothing quite like the pride you feel when you manage to get your first hello world boot loader program working. It's a real feeling of satisfaction.
This is just a taste of what's hopefully to come. Later I plan to start adding some real OS-dev related things like adding interrupt handling, paging, multi-tasking, memory allocation, DMA, PIC/APIC stuff, console, keyboard and floppy drivers and so on. Some parts still need a little fleshing out, as I experiment with those myself still (such as the multiboot stuff with GRUB, or figuring out how to get a memory map using the BIOS - I haven't taken the time to understand how that works yet).
So, it would be nice to know what people think. Any improvements, suggestions, code contributions, constructive criticism or praise are all welcome. Just try not to be too hard, I'm still learning it myself as I go along

Last but not least, here's the actual URL. It's in PDF and sxw (open office document) format:
http://evil-geni.us/~irbme/osdev.zip