This evening, I was bemused to find a Linux live disk unable to identify the storage volume on my new Dell XPS 13 laptop. A quick search introduced me to a problem I have not encountered before; the SSD was likely configured to use a SATA controller mode that did not have a driver in the kernel of the live disk installer. This is typically when the stock disk has been shipped in either
IDE (for backwards compatibility purposes) or a vendor specific
RAID mode, instead of the native Advanced Host Controller Interface (
AHCI) that exposes some of SATAs more advanced features.
One can easily change this setting in the BIOS. On my XPS I had to navigate to
System Configuration > SATA Configuration and switch the radio button selection from
RAID On to
AHCI. A rather scary warning informed me that this would more than likely break my existing partitions. As a curious scientist with a recovery partition as a safety net, I decided to proceed anyway. Unsurprisingly, Windows 10 failed to boot, electing to display the dreaded sideways smiley face and a suggestion that I read up about the
INACCESSIBLE_BOOT_DEVICE error. Oops.
It turns out, to optimize boot times, Windows disables drivers that are deemed unnecessary for startup during installation. Herein lies the problem, if the OS is installed while the disk is in one of these other modes (in my case
RAID), the driver that would allow us to speak
AHCI to our speaking
AHCI-speaking SATA storage controller is effectively disabled (even though it is installed). Windows, without the ability to communicate with the disk correctly, has no real option but to fall on its side with a glum expression and throw the
INACCESSIBLE_BOOT_DEVICE error during startup. The accusations are corroborated by the Wikipedia article on the subject of
Some operating systems, notably Windows Vista, Windows 7, Windows 8 and Windows 10 do not configure themselves to load the AHCI driver upon boot if the SATA-drive controller was not in AHCI mode at the time of installation. This can cause failure to boot, with an error message, if the SATA controller is later switched to AHCI mode.
So what are we to do? If I want to install and run Linux, I need my SSD’s SATA controller to be set to
AHCI1. Yet if I want to dual-boot with Windows, I need to use
RAID to match the currently installed Intel vendor driver. A conundrum!
Official advice from vendors like Intel is that you should format the disk, set the controller mode as desired and then reinstall the Windows operating system. But this seems somewhat of a cop out, what if lazy people like me don’t have physical installation media to hand, or don’t want to go through the hassle of a format and reinstall? Evidently, I am not the first to ask this question; as there are many threads online that attempt to achieve this for Windows 102, with varying degrees of success garnered from fiddling around in the registry (and variants thereof) to merely booting into safe mode and back. Unfortunately, none of these fixes worked for me and so I worked to come up with my own:
Sam’s super easy guide to switching your SATA Controller from
AHCI without destroying your Windows 10 disk
- Boot to Windows with your current SATA controller configuration
- Open Device Manager
- Expand Storage Controllers and identify the Intel SATA RAID Controller
- View properties of the identified controller
- On the Driver tab, click the Update driver… button
- Browse my computer…, Let me pick…
- Uncheck Show compatible hardware
- Select Microsoft as manufacturer
- Select Microsoft Storage Spaces Controller as model3
- Accept that Windows cannot confirm that this driver is compatible
- Save changes, reboot to BIOS and change
RAIDSATA Controller to
- Save changes and reboot normally, hopefully to Windows
If you’ve exhausted your luck elsewhere, I hope this works for you as it did for me, but your mileage will almost certainly vary.
Confusingly, according to the AHCI article on Wikipedia:
Intel recommends choosing RAID mode on their motherboards (which also enables AHCI) rather than AHCI/SATA mode for maximum flexibility.
If this really is the case, why doesn’t our trusty Linux live disk installer identify the dual-wielding
RAIDdisk in question? I wisely chose to stop at the entrance to the rabbit hole on this occasion and was just happy I could move on with my Linux installation. ↩
Other articles exist for Windows 7 and Windows 8 too, but are generally disregarded as unhelpful for Windows 10. In particular, the default
AHCIdriver provided by Microsoft changed name between versions 7 and 8, so much of the advice pertains to registry keys and files that don’t exist if followed for versions 8 and 10. ↩
- A more specific driver from your vendor may be available for your storage controller. ↩