QUESTION :
I’m reorganizing my home network, which now includes a NAS box, that, among other things, allows me to export partitions via iSCSI. Now I’d like to get rid of the harddisk in my Windows machine, as it makes quite an amount of noise and provides no redundancy, so I’d like to boot from the network and have my system installation on iSCSI.
As the NAS box runs Linux and this is just enough of a personal itch to scratch, I’m willing to code my way around some problems. I understand the Windows boot sequence is very much like Linux’s in that a kernel and an initial set of drivers is loaded as blobs by the bootloader, then the kernel is invoked, which then initializes and loads the drivers from the image left by the bootloader, however the devil is in the details in this case.
My approach would be to provide an iSCSI initiator as an EFI Boot Service, which should allow the loader to retrieve the kernel and drivers, however I see issues with the initial installation (network drivers are loaded after SCSI drivers in the installer), and whether network drivers can be part of the dependency chain for Boot drivers.
Is it possible to load network drivers that early in the boot process, and if yes, can I somehow influence the preparation of the Boot driver collection image so that they are included? Can I get around the installer limitation?
ANSWER :
No need to reflash your firmware or pay for a software solution, especially if you need to boot only one computer.
The solution is:
gPXE + iSCSI initiator plus some cooking.
Most of what you need to do is explained here:
http://www.etherboot.org/wiki/sanboot
This works for Windows XP to 7 and for Server OSes too.
You can reflash your NIC’s firmware with iPXE, which will allow you to boot directly from your iSCSI target.
I prefer to use the chainloading method as I’m not sure if VMware ESXi will play nicely with the NICs reflashed and the dual-NICs I have are too expensive to mess around with.
Windows Server OSes 2003 and newer allow for iSCSI Boot from Microsoft. TechNet Article
CCBoot apparently allows one to also boot client OSes XP & up, but it’s not free. I also just found it via Google, so I have no idea if the product works, how well it works, or if the company is any good. It does appear that the server needs to run Windows as well as the boot client.
Basically anything newer than XP will allow you to install directly to iSCSI without modification, but be aware: the recovery partitions do NOT support iSCSI. This is a problem with Windows 10, which regularly wants to boot the recovery partition when doing major system upgrades. To do those, you’ll have to copy the image to a local disk, apply the update, then copy it back, attach to the iSCSI device with a different machine capable of editing the registry, disable one of the secret firewall rules that prevents iSCSI from working via regedit, and then you should be able to boot it again.
I’m not sure how this got through QA since iSCSI booting is supposed to be an officially supported feature, but despite all the people asking about it, I have yet to find a solution that works.