Friday, 5 August 2016

Upgrading Win7 to Win10 still works! + weird 'Unable to install Windows to the hard disk' issue solved.

I was playing around with PSUs yesterday and temporarily 'borrowed' the PSU from my old Dell Inspiron 530 to test it with another system.
Dell Inspiron 530

After confirming that it worked on the other system, I replaced it back in the Dell 530 when I realised that the 250GB hard disk in the Dell was actually running Windows 7 (the Dell was originally installed with Vista, but I later installed Windows 7 Ultimate many years ago using a Retail product key).

I decided this would be a good chance to see if the Windows 10 Upgrade offer was still working, so I booted from my E2B drive (an Inateck FE2007) to a Windows 10 Pro TH2 VHD, typed in the Windows 7 Product Key (which I had obtained using ShowKeyPlus previously) - and voila! I had one activated Windows 10 Pro system.

So as of 2016-08-05, I can confirm that you can still use a Win7 retail product key to activate Windows 10.

Problems installing Windows 10!

I decided to do a fresh install of Windows 10 from an ISO file using my E2B hard disk (FE2007 + Samsung SSD) and a 'Helper' USB flash drive. As you may know, if E2B is on a hard disk, we need to add a Removable USB drive so that Windows will 'pick up' the AutoUnattend.xml file from the Removable drive during Setup and that we can make ImDisk run and load the ISO as a virtual DVD drive. The FE2007 hard disk enclosure has three USB 3.0 ports built in, so the flash drive is always connected to the E2B hard disk.

So, I booted to E2B and selected the Windows 10 ISO (actually the latest 'Anniversary' version) and got to the Disk\Partition selection screen as usual. BUT I then got stuck on a problem - Setup refused to install Windows onto the internal hard disk!

Every time I got the message:  'We couldn't create a new partition or locate an existing partition'.

I tried Diskpart - clean (and even clean all), but nothing seemed to work. I tried re-ordering the drives in the BIOS, but that also did not work.

When I looked at the log file at X:\Windows\Panther\Setupact.log after pressing SHIFT+F10 and running NotePad (it would be helpful if Microsoft actually told you which log file or even provided a link for you to load it up into NotePad to view - but that would be too easy wouldn't it!), I saw these lines:

2016-08-05 20:05:09, Info IBS Callback_ValidateInstallDrive:-----------------------------------------------------------
2016-08-05 20:05:09, Info [0x0606cc] IBS GetSystemDiskNTPath: Found system disk at [\Device\Harddisk1\DR1].
2016-08-05 20:05:09, Info [0x0606cc] IBS GetSystemDiskNumber: Disk [1] is the system disk.
2016-08-05 20:05:09, Error [0x06069d] IBS GetMachineInfo:Couldn't find info for boot disk [1]
2016-08-05 20:05:09, Info IBSLIB CanBeSystemVolume: Volume at disk [0] offset [0x100000] doesn't meet criteria for system volumes...
2016-08-05 20:05:09, Info IBSLIB DiskRegionSupportsCapability:Disk [0] is BLOCKED against capability [CanBeSystemVolume] for the following reasons...
2016-08-05 20:05:09, Info IBSLIB LogReasons: [BLOCKING reason for disk 0: CanBeSystemVolume] The selected disk is not the computer's boot disk.

The last line indicated that Setup did not think that the internal hard disk (which should have been disk 0) was the boot disk - it thought disk 1 was the boot disk!

Now in my situation, I had the FE2007 drive enclosure + a USB WINHELPER flash drive + internal SATA HDD + internal (empty) DVD drive. So most system BIOSes would arrange the disks as:
  • disk 0 - USB E2B drive
  • disk 1 - internal HDD
  • disk 2 - USB flash WINHELPER drive
E2B swaps over disk 0 and disk 1, so we get:
  • disk 0 - internal HDD 
  • disk 1 - USB E2B drive
  • disk 2 - USB flash WINHELPER drive
Thus when we run Setup, it thinks the 'first' hard disk is the one that the system is going to boot from.

However, the Dell Inspiron 530 BIOS was assigning the BIOS drive numbers like this:
  • disk 0 - USB E2B drive
  • disk 1 - USB flash WINHELPER drive
  • disk 2 - internal HDD 
This meant that when E2B swapped over disk 0 with disk 1, we got:
  • disk 0 - USB flash WINHELPER drive
  • disk 1 - USB E2B drive
  • disk 2 - internal HDD 
So Setup thought that the WINHELPER flash drive was the boot drive (disk 0) but this is a Removable USB drive (hence 'couldn't find info for boot disk [1]') and Setup would not make this the 'system' partition!

I noticed (via Google) that others have had similar problems, where the BIOS has mapped an SD card or a stray USB flash drive as drive 1, thus causing a similar issue when booting from a USB drive to install Windows. I have previously seen systems which contain two SATA drives cause Windows to treat the 'wrong' one as the boot drive and make that drive the system drive (or try to) instead of the one I actually selected (i.e. it tries to install the boot files on one drive and the Windows files on the other drive). If I had two USB HDDs connected, Windows Setup may well have put the boot files on the other USB drive!

I have put a fix in E2B v1.82h Beta for this issue now (it looks to see if hd1 is the WINHELPER drive and if so, swaps over the drives correctly).

If you still have this issue using E2B v1.82 or later (or any USB-boot Windows install method, such as Rufus or WinSetupFromUSB), remove all extra drives, SD cards, USB drives, etc. so that only the E2B USB drive (+WINHELPER drive, if required) and the target internal hard disk are present.

It also may help, if you ensure that only the first internal hard disk contains an Active partition table entry, so make sure your WinHelper USB drive and other drives do not have the Active partition flag set (use RMPrepUSB - Drive Info to check).