Hi,
onlyonemac wrote:For your information, I do use an emulator as well. But I've seen far too many hobby OSes that *only* work on emulators because the developer didn't do enough testing on real hardware.
The single best method is booting from network. It's a little harder to setup (e.g. DHCP and TFTP server on your development machine, so your build utility/scripts can copy the files into the TFTP server's directory), but after it's setup testing real machines just means turning them on or resetting them.
iansjack wrote:You are certainly correct that modern computers can boot off a USB floppy drive, or other device. But USB is relatively difficult to implement.
My philosophy is that, unless you are content not to read off storage after booting or are going to go through contortions to continue using the BIOS, an operating system that is going to do anything useful has to be able to read from an IDE or SATA device. Drivers are simple to implement, as is parsing a partition table and selecting a particular partition to use. On the other hand, floppies - whether old fashioned or USB - are far more difficult to write reliable drivers for.
Most people load a "file containing many files" (initial RAM disk or something) very early during boot (when firmware is usable); and have no reason to care what the boot device was after this (unless the OS reinstalls/updates itself after boot). Maybe half way through boot, an OS might need to access its root file system (which might not be the boot device); but it can take several years (implementing boot code, memory management, scheduler, PCI enumeration, ACPI, etc) before an OS reaches that point.
For my project specifically, I'm going to cheat and shove everything into that "file containing many files that's loaded very early during boot" so I can get things like GUI working before I bother with networking, disk IO or file systems. Then I'll probably only do floppy disk and FAT (the bare minimum needed to get persistent storage and support a "not secure" file system that other OSs can read) so I can start writing an IDE.
Cheers,
Brendan