Minimally, you need the following:
- a development machine with compilation, debugging,
and support tools installed for the target system.
- a test machine of the same type as your target
system. This machine houses the boot loader and some
mechanism for getting the operating system from the
development machine.
- some kind of connection between the machines - a
network or serial cable works best. Using a floppy drive
would be passable but painful.
Your development and target systems could be the same
machine, but until your operating system can host the
development environment by itself, you will waste a good deal
of time switching between testing and development environments
(which oftentimes involves a reboot).
How to set up your own
development environment at home.
Check out the ACM@UIUC operating system development environment.