If you are building an os for fun, it might be good to use an emulator rather than physical hardware. There are many around for example bochs will emulate the x86 hardware, and there are others for ARM and countless other architectures. On x86 the BIOS will expect a bootloader in a the first sector of the first fixed drive. Then it does a bootloader chain from there to other bootloaders (ie linux lilo can boot initially then point to ntloader which loads windows). You have source available for various x86 bootloaders like lilo, grub, etc to peruse. On embedded systems there is fixed flash hardware and you can look at the source for u-boot, redboot, and many others. If you have not tried the linuxfromscratch exercise, that is very interesting, especially to understand how linux and the whole GNU toolchain works. http://www.linuxfromscratch.org/ The way toolchains work for embedded is very much like the linuxfromscratch, except building smaller using tiny libraries (uclibc, newlib etc) and tiny executables (busybox and the like) and building for a different target architecture. There is something called crosstool to assist in building toolchains for different architectures. If its all for fun you could for example build an ARM toolchain and load onto virtual hardware (emulator) and it would be just like loading onto a PDA or phone. Just playing with linuxfromscratch can keep one busy for some time, getting into cross development tools can keep one busy for a very long time. Building your own OS from scratch, perhaps you should get someone to slide pizza under the door every once in a while :) -- Doug