I write this topic as a possible solution of how to solve the dreaded ‘Inaccessible boot device’ BSOD. After trying numerous solutions from this forum and others, I finally found a way to clone an already installed Windows 10 bootcamp partition to an USB 3.0 external SSD.
What I’ve tried first after reading all the posts I could find:
- disabled hibernation and chkdsks to prevent dirty file system
- Inject bootcamp Windows drivers using method described by twocanoes
- used 8.2 beta version to inject a mass storage driver (applessd.sys)
- registry setting BootdriverFlags (though part of the solution, see below)
- etc… (sigh)
I can give absolutely no guarantee this will work for everyone (always, always backup!), since this is a complex problem but if it can help some of you as a last resort I would be happy
- Apple iMac late 2013 Catalina 10.15.4 with fusion config (128Gb SSD+1Tb HDD)
- Windows 10 PRO installed (maybe the PRO version matters -I’m not sure- due to Windows To Go functionality)
- Crucial 500Gb SSD with simple Fantec USB3.0 enclosure
- USB Stick with Windows install + Apple bootcamp support drivers
- No SysPrep neccessary as I want to use the same hardware but with a faster SSD
- Remove all USB devices (I’m not sure if this is definitely neccessary but just in case)
- Boot into Windows
- Disable hibernation and chkdsk file system with optional repair to get a ‘clean’ image
- Power down
- Connect external USB 3.0 SSD
- Connect USB stick with Windows install
- Start MacOS and clone Windows to SSD drive (see instructions twocanoes)
- I did not install/injected any drivers; in the end my SSD will be used as the replacement for my HDD, so all the right drivers (video, keyboard, etc) are present (I checked this with dism, it showed that also applessd was installed in the original HDD windows version)
- Restart the Mac
- Select option and select EFI Boot USB stick (SSD is also EFI boot, you’ve to guess a bit)
- Select Shift+Fn+F10 to start a cmd box (there will be no Windows install)
- type ‘DiskPart’
- Search for the original partition on which Windows HDD Bootcamp was installed
- select this partition (see instruction on DiskPart tool)
- Change the GUID of this partition into something no longer recognizable as a Windows Data partition (for example Linux Reserverd GUID as I did) with the set id= option in DisPart
I used https://en.wikipedia.org/wiki/GUID_Partition_Table for valid id’s
This setting in itself is a non-destructive action: you can always set the id back to Windows Data Partition (see link for GUID) and the partition becomes accessible again.
- Exit the cmd box and close the install window. The Mac will now shut down.
- Restart with option-key and choose EFI Boot SSD (by now you know what to guess :-))
- Watch the BSOD appear… and the automatic reboot
- choose again EFI Boot SSD and watch the BSOD appear… again
- By now the system detects problems and gives you the option of a boot menu (F8)
- Choose safe mode with prompt
- [optional[ after the prompt type set and look if all variables point to the same drive (for me C:)
- [optional] You can also start DiskPart and do a select volumes command to see the different volumes (there should be one NTFS partition which is the SSD one)
- Start regedit and search for BootDriverFlags. In other posts it’s adviced to change this to 1c to prevent the BSOD.
- Close regedit and exit cmd. Push the powerbutton of the Mac short, to force Windows to shutdown gracefully.
- Power on the Mac with option and again EFI Boot SSD. Windows should now succesfully boot.
Note: I can’t activate hibernation afterwards because of WIndows To Go issues. For me it’s not a problem because I don’t use it. I’m not sure why the powercfg command mentions Windows To Go because i’ts depricated and I cannot find any other reference in my installation.
Bottom line: it’s a long and complicated path to success, and specific knowledge of commandline tooling is needed. Use this solution at your own risk as data loss is possible when you make mistakes. Therefore, always backup.
How I came to this solution:
The thing is that I noticed after the initial SSD boot and with the bootflags changed, I no longer got the BSOD, but the Windows boot left me with dark screen with a busy icon and mouse pointer flashing when moving the mouse and strangely, a softly rattling HDD being used to start up. That’s strange because it supposed to use the SSD only.
Previously in safe mode I inspected my variable settings and some where pointing to C:\ (HDD) while others to D:\ (SSD). My theory is that the system got confused about two accessible file NTFS file systems at the same time and decided to use both… My theory was that disabling the HDD partition would force the system to only use the SSD part and reassign drive letters (So the SSD would become C:). This worked for me obviously.
It was afterwards also possible to get back to the HDD windows again by enabling the HDD partition with the right GUID and disable the SSD by assigning it a ‘Linux reserved’.