How to PXE boot multiple Windows 7 desktops off the same image

netbootpxe-bootwindows 7

Some years ago at my university, I recall that the labs there booted Windows NT over the network.

There was a shared drive for your own stuff and other than that any changes you did to the running OS were reset when you restarted the machine.

Now I'd like to be able to do the same thing with Windows 7.

I have found some how to's for this using iSCSI, but I don't want an iSCSI disk for every single PC, I want one image for multiple PC's. I've also found PXE Boot setup files for installing Windows locally, but that's not what I want either.

How would I go about setting up what I had at university but with Windows 7 as a OS to netboot?

i.e. How do I netboot Windows 7 images? I do not want to netboot a Windows 7 installer to a PC to install Windows locally, I want to run a Windows 7 image from memory/network.

Best Answer

To answer my own question. It is possible using iPXE and iSCSI or AoE. The idea is to either replace the network card option ROM with iPXE or to chainload ipxe and then do a sanboot.

iSCSI is the easier of the two san protocols because you can actually install Windows 7 directly to an iSCSI target. This is because iSCSI support is built into windows 7 while AoE is not.

See: archive.org mirror of windowsdiskless.wordpress.com

Or: archive.org mirror of windowsdisklessaoe.wordpress.com

Noting of course that although iSCSI supports multiple machines accessing the same target with NTFS. Corruption will occur. Either a Copy on Write mechanism at the back end needs to be employed, or create a base image (template) and copy that to a newly exported target.

I ended up patching the open source iscsi target from freebsd and adding copy on write. So I could use the same LUN but the writes were directed elsewhere. I was able to direct them to local RAM or to another file on the server. I'm not using this anymore though, it was a proof of concept.