Operating System Development
wiki.osdev.org
wiki.osdev.org
OSdev is a pretty good starting point for basic resources. You'll need to build your own GNU toolchain (gcc + binutils + gdb) for cross compiling (don't try to use the one that ships with your OS, it will subtly fail when you don't expect it to), get an emulator (e.g. qemu or bochs) and a bootloader to get started. Do not write your own bootloader code or try to stick to pure asm, you'll get nowhere fast. Use the multiboot protocol so you can easily get booted on emulators and real iron using GRUB2. Note: I assumed you want to work on x86.
In addition to OSdev, the Intel manuals are an excellent resource. They are a pretty nice thing to read even if you don't intend to write an OS. Although reading through them will probably get your OS hacking itch going and you can't stop yourself. That happened to me. The Intel manuals are here: http://www.intel.com/content/www/us/en/processors/architectu... . Volumes 1 and 3a are the most important.
And here are the humble beginnings of my hobby operating system: https://github.com/rikusalminen/danjeros
Also, U-Boot can boot a lot of things this days.
So if I were to build an OS for ARM or MIPS I would:
1) Build it on an emulator that can boot from ELF or a binary blob.
2) When it's time to run on real hardware, try to use U-Boot.
3) If that fails, write my own boot loader.
The moral of the story is: bootloaders are not my kind of fun, so I'll avoid writing them at all costs.
At the end of the course, we had only the boot loader and a little command interpreter, aside from FAT-12 support.
Then, much later, I messed with OS by playing with the code from the Minix Book [1].
Last year I wrote a little emulator for a virtually unknown architecture that can run uClinux on a modern browser (i.e., Chrome)[2].
[1] Operating System Design and Implemenation: http://www.amazon.com/Operating-Systems-Design-Implementatio...
if I were messing with OS dev today I would probably study the algorithms in a friendly HLL, there are some texts that use Java. these sites are more helpful to actual implementors, specially driver developers.
x86 architecture is terrible for pedagogy in many ways, and it's probably harder today than it was 10 years ago, with real-mode now finally gone, except for the first few nanos after machine boots.
x86_64 is a pretty clean actually. The instruction set is pretty horrible but rest of the moving parts are fairly consistent. Page tables, interrupt controllers and things like that work pretty nicely through memory mapped i/o.
Edit:
http://www.hardkernel.com/renewal_2011/products/prdt_info.ph...
http://www.cnx-software.com/2012/07/17/hackberry-allwinner-a...
OSdev is very x86 centric. However, x86_64 is not as bad as you seem to imply. The instruction set is horrible but it's not like you're going to mess with assembly a lot anyway. Memory management units and interrupt controllers, etc are the important bits and they're just fine in x86.
I get a great satisfaction of being able to boot into my toy operating system on the hardware I normally use. And that is an x86. Running inside an emulator or a dev board with dangling wires is not half as fun.
Anyway, even if you start developing your own OS, you may not end up writing the whole of it all by yourself. Most people get a lot of help from outside and that is not at all bad, infact it has already proved itself to be the way to go by the open source Operating systems that are around today.
Have got to say I'm very excited about this site, it looks incredibly useful.
Not planning to use your project also gives you a certain freedom. You can do all sorts of crazy and impractical things just for fun. My language lets you change the precedence of operators at runtime. It's a stupid feature that would only cause misery in the real world, but I'm not writing my project for the real world :).
That said, it is also fun to write things people actually use. In fact, just having users or using your own program yourself makes up for having to deal with boring issues, annoying corner cases and reality in general.
If you're doing a hobby operating system on x86's, osdev is a very valuable resource. If you're hacking on the Linux kernel, not so much.