Thanks for your answers, I'll take a look at those, but I should have said I'm aware of network booting and that's not exactly what I'm looking to do (well, my newbie mind is under that impression).
The development machine would be in possibly constant communication with a test machine that's waiting to receive and execute an ongoing stream of instructions (some of which could conceivably end up being a whole boot procedure I suppose) and unless there's an error, it shouldn't have to reboot.
[edit]
Just to expand on how I would use it:
The development machine essentially serves as a kind of scaffolding. Initially, the entire 'OS' will be run as an application on the development machine - it won't be so much an OS as just an app that will delegate the occasional computation to the test machine. As I progress, I want to be able to switch modules (in either direction) between the two machines, while still maintaining a usable system (using the term system very loosely, here) and after some (very large amount of) time it should reach the point where it's an actual OS running mostly on the test machine with the development machine just providing support for debugging.
Basically, the two computers will be running in parallel as one system, with most functionality initially provided by the dev machine and incrementally moved across to the test machine (or even moved back to the dev machine) as and when it makes sense or becomes necessary to do so.
[edit2] ok, having taken a look at tftp and such, no doubt I could take an existing implementation of something like that and modify it to do what I want, it's just that they seem a bit too heavy (yes, I just called *trivial* ftp heavy :p). Ah well, I'll think about it a bit more.
Maybe I should stop trying to work out ways to be laz..., that is to say, efficient and just write it myself instead of steal... borrowing it
.