[ipxe-devel] Issues installing Windows 7 to iSCSI with iPXE

Steve Cross hairlesshobo at stevecross.org
Mon Dec 31 16:19:31 UTC 2012

Thanks for taking the time to type up this thorough response. I
actually made a LOT of progress on this since I sent the email out, so
I figure I will post the results that I have found.

First, I have found that the number one problem so far is on boards
that have nVidia ethernet controllers. From what I read on the old
etherboot site, there are some problems with iSCSI and nVidia because
nVidia cards require a couple special services in order for the card
to act like a normal ethernet card does. Now the very strange part is
that once I am booted into WinPE, the system can pull an IP address
and communicate with the network, but it appears that due to the lack
of the nVidia service in the PE, there are troubles with Windows
reading the iBFT. To confirm that this is the problem, I found a
couple machines around the house that don't have nVidia chipsets, and
those all booted and installed to iSCSI without a problem. The system
booted up and when I started the Windows installer, the mounted iSCSI
drive was visible and I was able to format and install to it without a
reboot or anything needed. I have tested boards with both an Atheros
and a Realtek card, and both worked just fine.

This lead into the next problem. My Windows 7 installation disc
contains two images on the one disc, both x86 and x64. Well, I have
discovered online that when installing directly from CD, you can
install either a x86 or x64 image from an x86 copy of WinPE, however
this is NOT the case when working over PXE. When installing over the
network using PXE, to install a 32 bit Windows 7 image, you must
launch the 32 bit installer from the 32 bit PE, and to install a 64
bit image, you have to run the 64 bit setup.exe from a 64 bit WinPE. I
was able to split my install.wim file using imagex and create two
seperate installation sources on my network, one for 32 and one for 64
bit. On the 64 bit installation source, I had to replace the setup.exe
file and all supporting files with the respective 64 bit copies.
Fortunately, I was able to hunt these down in a CAB file on the
Windows AIK disc. I setup a menu on iPXE and now I can simply choose
to either install 32 or 64 bit Windows 7 and then WinPE loads and
automatically starts the respective installer.

And this lead me into my final problem, which i purely blame on
Microsoft. I noticed that when I was installing, it was taking an
extremely long time and that the transfer speed on the iSCSI server
was only a couple MB/s, which made no since because everything is on a
gigabit betwork and the iSCSI disc was running from a striped SATA
RAID. Well it turns out that when you are installing to iSCSI, Windows
automatically adds a route for the iSCSI server using the default
gateway, EVEN if the iSCSI server is on the same subnet as the client.
In my case, my linux router is running a 10/100 ethernet card (no need
for gigabit on a 25MB/s internet connection). This forces ALL iSCSI
traffic (and in my case, also the installation source) to flow through
the router. Obviously this is pretty annoying but can be easily worked
around by adding "option routers <ip_of_iscsi_server>;" which forces
the client to communicate directly with the server.

My next goal is to attempt to roll in the actual nVidia drivers and
requires services into the WinPE to see if I can add support for the
iSCSI installation on a nVidia chipset. I've got two HTPCs that both
run nVidia ethernet onboard and I would really like to switch them to
iSCSI. If I do manage to pull it off somehow, I'll writeup something
and send it back in here so that others can know in the future.



On Mon, Dec 31, 2012 at 8:47 AM, Robin Smidsrød <robin at smidsrod.no> wrote:
> On 27.12.2012 02:48, Steve Cross wrote:
>> #!ipxe
>> sanboot --keep iscsi: ||
>> set arch x86
>> kernel wimboot
>> initrd winpe/${arch}/ISO/bootmgr       bootmgr
>> initrd winpe/${arch}/ISO/boot/bcd      BCD
>> initrd winpe/${arch}/ISO/boot/boot.sdi boot.sdi
>> initrd winpe/${arch}/winpe.wim         boot.wim
>> boot
> This does seem to be accurate. Nothing wrong here, as far as I can tell.
>> I have the "set arch x86" because I have found that with my copy of
>> Windows 7, I ALWAYS have to load the x86 WinPE in order for my
>> setup.exe to load.
> When you boot the Windows 7 installer from traditional CD, are you also
> limited to only being able to use the x86 installer, or does x64 work?
> If so, your computer might have problems running 64-bit software in general.
>> iPXE will mount my iSCSI disk (I can see the connection on the server
>> side), attempt to boot, fail (because the disc is empty), and then
>> pass on to loading WinPE just as I would expect. The problem is that
>> once WinPE loads, it can no longer see the iSCSI disc. I have noticed
>> that while WinPE is loading, the iSCSI connection is lost.
> This is completely normal. Once the Windows kernel takes over, iPXE is
> no longer in control, and the iSCSI connection iPXE established is lost.
> The iBFT generated by iPXE is there to inform Windows' iSCSI initiator
> (client) that it should re-establish the connection once it's booted and
> ready.
>> Just for kicks, I modified my WinPE to support the Windows iSCSI
>> initiator, and after starting the service and launching iscsicpl, it
>> shows that the iSCSI disc that iPXE loaded is "reconnecting." I have
>> let it sit there and I have tried messing with the settings, and
>> nothing has worked. If I disconnect and reconnect it, then when I try
>> to install Windows, it says something along the lines of "I won't
>> install because your computer can't boot to this disc." This leads me
>> to believe that because of the disconnect/reconnect that the iBFT is
>> cleared out and negates the whole process.
> If you boot up WinPE, you can press Shift-F10 to get a command shell
> when the Windows installer has started. You can then run ipconfig to
> ensure you have IP connectivity, and if you can ping other hosts, run
> diskpart and see if your iSCSI volume is visible. If it is not visible,
> most likely your WinPE doesn't support iSCSI boot, or you have some
> network connectivity issue. If your iSCSI volume is listed among the
> disks available, then in theory you should be able to see it in the
> Windows installer and you should be able to partition and format it.
> Though, a lot of people, me included, have problems that Windows just
> forcibly refuses to accept that iSCSI disk as a valid installation
> target, even though it is listed among the disks available. You get some
> kind of stupid error message saying that this drive can't be verified as
> bootable, so it refuses to install to it. I've heard reports that some
> people say that if you partition the drive during the first run of the
> installer, and then reboot and try again without partitioning, it might
> work. I have not personally had luck with this approach, though.
> Also, as mentioned here,
> http://www.tomshardware.com/forum/53131-63-windows-restarting-install#t220248
> , you should pay attention to those two windows 7 setup log files that
> contain information about the setup process:
> C:\Windows\System32\Panther\setupact.log
> C:\Windows\System32\Panther\setuperr.log
> When you're in the installer, I'm not sure if they are on the C drive or
> the X drive. Try either one.
> Hope this has given you a bit more insight.
> -- Robin

More information about the ipxe-devel mailing list