I have a machine with a bootable ISO stored on it, and I have another blank machine, which I want to install the ISO on. They're both on the same LAN (attached to the same switch). How would I go about booting the blank machine from the ISO stored on my primary computer?
I think you want a means of pxe booting from ISO images. I searched for a little bit and found this article. I believe that method should work for any bootable ISO image you may have. This is another similar article.
Finally, it appears that this article discusses how to do this from a PXE (Pre-boot eXecution Environment) server you run from Windows.
Yes, it is very much possible. The type of system you can boot will depend on how said system works.
Usually, you will find that very simple systems (like DOS or Win98) and very complex systems (like modern Linux distros) are easily bootable over the network.
The way to accomplish this on the two types of systems is very different.
I'm also assuming a
For simple systems
For simple systems, you simply load the image (ISO) into RAM, and trick the system into believing it is an actual unit. This is done with a little help from the BIOS and a software module called memdisk.
The system you want to load over the network is freedos:
That's pretty much it. The first few lines are menu boilerplate; the important bits are the last four lines: load memdisk with the given ISO.
For complex systems
Modern systems with fancy stuff like good memory management and proper hardware detection pretty much ignore anything the BIOS has to say.
This renders the
What do you do then? Well, you don't actually load the ISO from the network, but instead tell the system it can access the required files from there.
For Linux systems, extract the ISO contents somewhere in the tftproot and load the kernel and initrd directly, then leaving it up to them to find the root filesystem and mount it.
Here's an example using the amazing System Rescue CD. I actually extracted the whole ISO onto the root of the TFTP server, because it fit right in with my directory structure, so the kernels are in
The most important bit here is the
I had conveniently set a DNS name
Also, sysresccd is one of the easiest because it uses a squashfs image for its root filesystem, which can be easily downloaded and loaded to RAM with any method. Here I use nbd; you can also use tftp, nfs and http.
For other distros, like Ubuntu, I think you can only use nfs.
For Windows systems it is a bit more complex to do. The outline is:
I have never tried this, and it seems it doesn't work for some people. For NT versions older than Vista I think it's not even possible. For pre-NT Windows (95, 98, ME, etc) you can use the memdisk approach, but booting those is bad for your health :-p
The Ultimate Deployment Appliance offers what you require. Their homepage describes its functionality; it's reformatted here for convenience:
What is the Ultimate Deployment Appliance?
When would you use this?
How Does it work?
I suggest various tools for this jobs if you are interested to extend this research: