Consider the following scenario
You are installing Data Center or Enterprise Server edition of Windows Server 2008/R2 or later and you boot from DVD or via PXE. The disk(s) on the system are attached via a shared bus (for example SCSI, iSCSI, FIBRE or SAS) and the disk (or SAN presented LUN) which you intend to install to is in a RAW (unformatted) state.When you select the RAW disk to install to, you receive the following 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.”
Also, if you attempt to proceed with installation at this point, installation will fail later on because the disk has the OFFLINE and READ ONLY attributes set.
This failure is by design because the default SAN policy during setup on new installations of Data Center or Enterprise SKUs is OfflineShared
which applies Offline
and Read Only
attributes to any presented disk(s) that are on a shared bus that are not considered System Critical (System or Boot) disks.
Disks which are RAW (unformatted) cannot be detected as System Critical and therefore will result in Setup enforcing the default San policy.
When installing Windows Server in this scenario, the below procedure is required for successful installation.
The default SAN policy on Data Center and Enterprise Server editions of Windows differs from the behavior on other editions (which default to Online All
) in order to prevent data loss in scenarios where disks are unintentionally presented to a server. This behavior prevents unintentional data loss in installation and operational scenarios.Note:
For all other SKUs, the SAN policy is set to OnlineAll
To avoid this issue, configure the default SAN policy to OnlineAll
using an unattend answer file integrated into the boot.wim and install.wim images of the installation media to install from or use the setsanpolicy.cmd included with WAIK or the OPK.WARNING
: After the installation completes ensure you reset the SAN policy back to OfflineShared
using Diskpart.exe to to prevent data loss in scenarios where disks are unintentionally presented to a server that contain critical data.EXAMPLE UNATTEND PARAMETER TO MODIFY SAN POLICY:
: "1" = OnlineAll policy.Disk attached to a shared bus of the following types can encounter this message:
- SCSI (Clustered shared disk)
: This would also be enforced on disks with multiple paths, i.e. one of the disks would be Offlined.TIP
: On some hardware the UEFI firmware may not enumerate USB boot devices correctly. In order to avoid inaccurate boot code enumeration at post its recommended that you a) Avoid having any USB flash drives attached at post b) If your storage controller drivers are not in-box, inject your storage drivers into both your DVD's WinPE boot image and the driver store of the install.wim to avoid needing the USB flash drive attached at post.To inject drivers as documented in Windows OEM Preinstallation Kit Section labeled "Add and Remove Drivers Offline":
: It is recommended that storage drivers be injected in both your Windows Preinstall boot Image (boot.wim) and your Installation (Install.wim) Image's driver store.NOTE
: You may still receive the error if the disk you wish to install to is not enumerated as a INT13 device by the firmware of your controller or HBA adapter. Windows requires that the Disk/HBA controller firmware support enumerating the disk via the regular INT13 methods in order for the Operating System to consider it a System Critical (Bootable) disk; Please consult with your controller manufacturer for an updated firmware that supports INT13 methods if you still encounter the error message.COMMANDS FOR THE WINPE (Boot.wim) IMAGE:
COMMANDS FOR THE INSTALL.WIM (Driver Store):
- Mount the base image (boot.wim) by using the DISM tool to a local Windows PE directory. For example:
Dism /Mount-WIM /WimFile:c:\winpe_x86\boot.wim /index:1 /MountDir:c:\winpe_x86\mount
- Add the .inf file to the base image by using the dism command with the /Add-Driver option. For example:
Dism /image:<path_to_image> /Add-Driver /Driver:c:\winpe_x86\mount\Windows\driver.inf
- Repeat steps 1 and 2 for each additional device driver.
- You must unmount the image after you have modified it.
dism /unmount-wim /Mountdir:c:\winpe_x86\mount /commit
- At an elevated command prompt, navigate to the Windows OEM Preinstallation Kit (Windows OPK) servicing folder, and type the following command to retrieve the name or index number for the image you want to modify.
An index or name value is required for most operations that specify a WIM file.
Dism /Get-WimInfo /WimFile:C:\test\images\install.wim
- Type the following command to mount the offline Windows image.
Dism /Mount-Wim /WimFile:C:\test\images\install.wim /Name:"Windows 7 HomeBasic" /MountDir:C:\test\offline
- At a command prompt, type the following command to add a specific driver to the image.
Multiple drivers can be added on one command line if you specify a folder instead of an .inf file. To install all of the drivers in a folder and all its subfolders use the /recurse option. For example,
Dism /Image:C:\test\offline /Add-Driver /Driver:C:\drivers\mydriver.INF
To install an unsigned driver, use /ForceUnsigned to override the requirement that drivers installed on X64-based computers must have a digital signature. For example,
Dism /Image:C:\test\offline /Add-Driver /Driver:c:\drivers /Recurse
Dism /Image:C:\test\offline /Add-Driver /Driver:C:\drivers\mydriver.INF /ForceUnsigned
- Review the contents of the %WINDIR%\Inf\ directory in the mounted Windows image to ensure that the .inf files were installed. Drivers added to the Windows image are named Oem*.inf. This is to ensure unique naming for new drivers added to the computer. For example, the files MyDriver1.inf and MyDriver2.inf are renamed Oem0.inf and Oem1.inf.
- At a command prompt, type the following command to commit the changes and unmount the image.
Dism /Unmount-Wim /MountDir:C:\test\offline /Commit
* This is in addition to any steps documented below to modify the sanpolicy i.e you might incorporate the above if you do not have in-box driver support for your storage controller in the below steps were noted by "**".Steps required to integrate sanpolicy parameter into your DVD:NOTE
: This process requires the WAIK or OPK be installed.
Copy boot.wim from a Windows Server 2008 / R2 DVD (Located in x:\Sources directory, where "x" is your DVD drive letter) to a scratch location where it can be modified.
You will need to modify the image as follows:
- Add KB979374 to both images in boot.wim
- Use setsanpolicy.cmd to modify the SAN policy in the images in boot.wim
- Create media with this boot.wim and the files from KB2223832 in \efi\boot\microsoft\boot
- Note that KB2223832 does not contain a .msu file so be sure to notice .cab vs. .msu below.
- Use the version of efisys.bin as the bootsector in the OSCDIMG command.EXAMPLE (Windows Server 2008 R2 based image)
- With the WAIK or OPK installed, open a deployment tools command prompt with administrator privilege
- Download and extract KB 979374 and KB 2223832 to c:\hotfix
1. Md c:\hotfix\tmp
2. Expand f:*.* c:\hotfix\Windows6.1-KB979374-x64.msu c:\hotfix
3. Expand f:*.* c:\hotfix\Windows6.1-KB2223832-x64.cab c:\hotfix\tmp
4. Md c:\SRVr2\media
5. Xcopy d:*.* c:\SRVr2\media\*.* /e
6. Md c:\srvr2\mount
7. Dism /mount-wim /wimfile:c:\SRVr2\media\sources\boot.wim /index:1 /mountdir:c:\srvr2\mount
8. Dism /image:c:\srvr2\mount /add-package /packagepath:c:\hotfix\Windows6.1-KB979374-x64.cab
9. Setsanpolicy c:\srvr2\mount 1
** <If applicable - inject storage drivers here before committing boot.wim changes>
10. Dism /unmount-wim /mountdir:c:\srvr2\mount /commit
11. Dism /mount-wim /wimfile:c:\SRVr2\media\sources\boot.wim /index:2 /mountdir:c:\srvr2\mount
12. Dism /image:c:\srvr2\mount /add-package /packagepath:c:\hotfix\Windows6.1-KB979374-x64.cab
13. Setsanpolicy c:\srvr2\mount 1
** <If applicable - inject storage drivers here before committing boot.wim changes>
14. Dism /unmount-wim /mountdir:c:\srvr2\mount /commit
** <If applicable - Mount and inject storage drivers into install.wim here before creating your iso and burning your dvd>
15. Xcopy c:\hotfix\tmp\* c:\SRVr2\media\* /e
16. Copy c:\hotfix\tmp\efi\microsoft\boot\efisys.bin c:\srvr2\*
17 .Copy “C:\Program Files\Windows OPK\Tools\PETools\amd64\boot\etfsboot.com” c:\srvr2\*
(if WAIK is installed, use WAIK instead of OPK)
18. Oscdimg -m -o -u2 -udfver102 -bootdata:2#p0,e,bC:\srvr2\etfsboot.com#pEF,e,bC:\srvr2\efisys.bin C:\srvr2\media C:\srvr2\x64_2k8r2.iso
19. Burn x64_2k8r2.iso to DVD.NOTE
: You may still receive the error if the disk you wish to install to is not enumerated as a INT13 device by the firmware of your controller or HBA adapter. Windows requires that the Disk/HBA controller firmware support enumerating the disk via the regular INT13 methods in order for the Operating System to consider it a System Critical (Bootable) disk; Please consult with your controller manufacturer for an updated firmware that supports INT13 methods if you still encounter the error message.Additional references:http://www.microsoft.com/whdc/system/platform/firmware/UEFIGuide.mspx