Installing Windows Server 2008 to an iSCSI target

To install Windows Server 2008 to an iSCSI target, you must first configure your system to attempt to boot via iSCSI, and fall back to booting from DVD-ROM if the iSCSI boot fails. The exact procedure for doing this will vary depending on your computer's BIOS.

Configuring the BIOS boot order

Enter your BIOS setup screen. (Typically, this will require you to press a key such as DEL or one of the function keys F1-F12 immediately after rebooting the system.)

Configure your BIOS to attempt booting in the following order:

  1. Boot using gPXE.
  2. Boot from DVD-ROM.

If you can't boot from gPXE from your BIOS read: How to Deploy gPXE. Specifically Boot gPXE for your PXE enabled network card and Loading gPXE from a bootable floppy or the ultimate Replace your legacy network card PXE ROM

Configure DHCP gPXE options for iSCSI boot

ISC dhcpd

See dhcpd for more info on the following settings

Place the following lines in /etc/dhcpd.conf:

option space gpxe;
option gpxe-encap-opts code 175 = encapsulate gpxe;
option gpxe.keep-san code 8 = unsigned integer 8;

filename "";
option root-path "iscsi:my.target.dns.name::::iqn.2007-08.name.dns.target.my:iscsiboot";
option gpxe.keep-san 1;

where my.target.dns.name is the DNS name (or IP address) of your iSCSI target, and iqn.2007-08.name.dns.target.my:iscsiboot is the iSCSI target IQN that you wish to boot from.

You will probably need to restart your DHCP server for the changes to take effect:

  root@chipmunk# /etc/init.d/dhcpd restart

Microsoft DHCP Server

See msdhcp for more info on the following settings

NOTE: The above picture shows settings for a specific windows deployment environment. Configure your settings to meet your needs.

Option 17 Root Path iscsi:my.target.dns.name::::iqn.2007-08.name.dns.target.my:iscsiboot
Option 67 Bootfile ""
Option 175 gPXE_Options 08 01 01 FF

Where freenas1.domain.local == my.target.dns.name == is the DNS name (or IP address) of your iSCSI target, and iqn.2007-09.local.domain.freenas1.target:disk1 == iqn.2007-08.name.dns.target.my:iscsiboot == the iSCSI target IQN that you wish to boot from.
See PXE Chaining for the two Option 67 entries pictured above, if your not using PXE Chaining set Option 67 as a blank entry
See gPXE Encapsulated options for information on Option 175, 08 01 01 FF is the Hex entry for keep-san 1

Starting the installation

Place the Windows Server 2008 DVD-ROM in the drive, and switch on the computer. You should see it attempt to boot via iSCSI, fail, and then boot from the DVD-ROM. Once you reach the point of selecting an installation disk drive, you should see your iSCSI disk appear in the list:

Note: If you get the message ”This computer's hardware may not support booting to this disk. Ensure that the disk's controller is enabled in the computer's BIOS menu.” or ”Windows is unable to find a system volume that meets its criteria for installation.”, do the following: Create a new partition on the disk and format it. Then exit the setup and try again after a reboot. More information can be found in this article.

Windows Server 2008 installation disk selection

Alternative Method (using WinPE)

Some BIOS programs will not fall back to another boot device after loading gPXE. In such cases, you can proceed by executing pxe boot to WinPE 2.1. (make sure it's WinPE 2.1, WinPE 2.0 won't detect iSCSI drives)

After you've reached the WinPE command prompt, you can execute setup.exe from the installation media or network share. (this method was tested with Windows Server 2008 x86, Windows 7 x86 and Windows 7 x64. For installing Windows 7, you will probably want to try using WinPE 3.0 instead of 2.1)

The required gPXE command sequence to achieve this should be like:

dhcp net0
set keep-san 1
sanboot iscsi:192.168.1.11::::iqn.2007-08.name.dns.target.my:iscsiboot
chain tftp://192.168.1.11/boot/pxeboot.n12

NOTE: When using tftpd32, bootmgr.exe should reside inside the root tftp directory and inside the boot directory.

NOTE: If the Windows Setup cannot recognize your iSCSI drive be sure that WinPE is recognized your network card. Type “route print” to the WinPE command prompt and look for your network interface. If it is not there, you should load your network card's driver by using the “loaddrv” command of the WinPE. Go to a local or a network folder which has your driver and execute “loaddrv file.inf” to load the driver.

Alternative Method (simple)

As stated before, some BIOS won't fall back properly. And if you don't need the whole WinPE stuff, have a look here.

To give a proper short receipe: In you tftp directory do: Put memdisk.bin and sbootmgr.dsk into it Place also a copy of pxelinux there.

Edit your pxelinux config file (if you dont have one: Make a directory called “pxelinux.cfg” in your tftp directory and put the folling into a file named “default” to your new pxelinux.cfg-directory):

label torito
kernel memdisk
append initrd=sbootmgr.dsk

Kick off you machine, load some gPXE and press Ctrl+B as it appears. Now do:

dhcp net0
set keep-san 1
sanboot iscsi:192.168.1.11::::iqn.2007-08.name.dns.target.my:iscsiboot
chain tftp://192.168.1.11/pxelinux.0

After some curious stuff enter torito and enter. Now it starts of your Windows 2008 DVD. (May show error if dvd drive is not ready yet. Just try by pressing enter again and again)

This is might also work for you, without the PXE menu if you have no HD or boot PXE after your HD boot order Kick off you machine, load some gPXE and press Ctrl+B as it appears. Now do:

dhcp net0
set keep-san 1
sanboot iscsi:192.168.1.11::::iqn.2007-08.name.dns.target.my:iscsiboot
exit

You should now have a message that says insert media and press a key. Insert your CD and wait a few seconds then press a key

Completing the installation

Continue the installation as normal. Your computer will reboot a few times during installation; you can safely leave it unattended during this time.

Congratulations on successfully installing Windows Server 2008 to an iSCSI target!

Windows Server 2008 booted from an iSCSI target

What to do if the installation can't find the iSCSI disk.

  1. Ensure the iSCSI target is working by connecting it with existing os. To make your life easy, You can unset the password for the iSCSI target for testing.
  2. Reboot the into gPXE, then press
    Ctrl-B

    to get the command line.

  3. In the command line, type
    dhcp net0

    You'll see response which is like:

    DHCP (net0 xx:xx:xx:xx:xx:xx)... ok
  4. In the command line, type
    set keep-san 1
  5. And in command line, type
    sanboot iscsi:my.target.dns.name::::iqn.2007-08.name.dns.target.my:iscsiboot

    If you see something like “Preserving connection to SAN disk.” in response, You are on the half way.

  6. In the command line, type
    exit
  7. Go on with the installation above.

NOTE: If you are installing vista, be sure to read the NOTE in Vista install guide to save your time.

NOTE: Windows Setup creates an explicit route to your your iSCSI target using your default gateway. This means if your target is on the same LAN, your router must be prepared to route local LAN traffic (which normally it would not do as the initiator and target could communicate directly). You can examine the route settings by pressing SHIFT+F10 when the drive selection window is displayed, then typing “route print” at the DOS command prompt.

Some strict firewall settings will prevent this kind of routing which will cause Windows Setup to be unable to see the iSCSI drive. For example, using Shorewall you need to enable the “routeback” setting on the LAN interface. If using OpenWrt (without shorewall) add this to /etc/firewall.user (create this file if absent):

  iptables -A forwarding_lan -i br-lan -o br-lan -j ACCEPT

To avoid that behaviour, put your iSCSI into it's very own subnet and omit a gateway. Like say your LAN is 192.168.1.0, you could say target is 192.168.2.1 and initiator 192.168.2.2. Configure your DHCP server accordingly and windows won't do that curious explicit route (static route).

NOTE: With Windows 7 the above routing problem affects normal boot as well, not just the setup.

NOTE: When using Microsoft iSCSI Software Target 3.1.3412, The aforementioned explicit routing may cause WinPE 2.1 (Windows Server 2008 / Vista SP1) to BSOD (IRQL_NOT_LESS_OR_EQUAL), and WinPE 3.0 (Windows 7 / Windows Server 2008 R2) won't recognize the iSCSI drive at all.

- To avoid this problem, you can set the gateway (received from the DHCP server) to the IP of the machine running Microsoft iSCSI Software Target. (or use the “set gateway” command from the gPXE console, after the “dhcp” command)

- Another way around this is to configure your DHCP server to give the target host as the default gateway for the initial gPXE boot, and then give your normal gateway for the Windows boot proper. This avoids routing the SAN traffic through an IP router when it isn't necessary (in my case, my LAN is gigabit but routing through the gateway reduced effective throughput to 100mbit - not ideal!). Add the following lines to your dhcpd config (to the stanza that defines the host to be booted):

if exists user-class and option user-class = "gPXE" {
  option routers <iSCSI target IP>;
} else {
  option routers <normal default gateway IP>;
}

- Alternatively, you can install to another software target, and then transfer the installation to the Microsoft iSCSI Software Target.

What to do if the installation says: "Ensure that the disk's controller is enabled in the computer's BIOS menu"

If you can't continue with windows installation on iSCSI Target with an error message

Windows cannot be installed to this disk. This computer's hardware may not support booting to this disk. Ensure that the disk's controller is enabled in the computer's BIOS menu

Solution for this error is quite simple, just add a drive for installation time, if the drive is a Serial-ATA connected then set it to Compatibile Mode not AHCI (for Windows 7 this doesn't matter, you can leave it as AHCI). If you start windows installer once again you will see an error message only at the physical drive, select iSCSI target and just click next.

XFGolden Begin Edit → This is totally contradictory to the above. But it worked for me when the above did not.

In some cases such as mine using an asus m3n-HT Deluxe motherboard with the latest pheonix/award bios having Serial ATA mode set to IDE(compatibility mode) caused the Windows 7 Ultimate x86_64 installer to view the the iscsi connected drive as a non-bios boot drive. There are three options in this bios for how Serial ATA drives are handled IDE/AHCI/RAID . Once the access mode for Serial ATA drives was set to AHCI the Windows Installer saw the physically attached drive as non-bios bootable and the iSCSI attached drive as a valid install target. On subsequent boots the installer completed and I was presented with a freshly installed Windows 7 desktop served from my SAN.

← End Edit XFGolden