@digitalwanderer, there is visible difference between NVMe and SATA, though it's most noticeable when you perform heavy maintenance tasks like installing new Insider Preview builds and removing previous versions with
cleanmgr.
It's possible to manually copy your data from the old SATA disk to the new NVMe disk if you're comfortable with using command-line window (right-click on the Start button, choose
Windows PowerShell (Admin) and run
cmd).
You will run all required programs and system utilities from your original OS on the old disk, so if the new disk does not boot up, you can always return to the old OS (or alternatively, you can boot Windows Setup from a flash drive, then start the command console with Shift-F10 and make fixes to the BCD store on the boot disk).
You won't need to reinstall anything as your Windows partition will be copied as is; you just need to follow Microsoft WADK documentation for recommended partition layout, published in the OEM deployment guidelines on Microsoft Docs (formerly TechNet).
Here is the step-by-step guide for
Creating or repairing a bootable UEFI/GPT system disk
0. Disk partitioning utilities
You will need to use a free disk partitioning utility, like
EaseUS Partition Master,
Paragon Partition Manager,
Minitool Partition Wizard,
AOMEI Partition Assistant etc. to copy and/or non-destructively resize your existing partitions (standard DiskPart can only shrink or grow partitions towards the end, but it cannot free the space at the beginning and relocate the MFT)
I. (Re)partition your disk
a) New disk
On a new disk, start by creating
Microsoft-recommended GPT/UEFI disk partitions layout. You can run DiskPart and enter commands as
specified in the example DiskPart script, a file named
CreatePartitions-UEFI.txt (note that clean command immediately creates a MSR partition at the start of the disk in Windows 1803 or later - you will have to delete it manually);
(Alternatively, you can use free partitioning software to partition the disk, format the partitions and set their attributes, then assign the drive letters).
You shall end up with a 100 MByte EFI System Partition (drive
S:) and a 16 MByte MSR partition (no drive letter) at the start of the disk, Windows data partition (drive
W:) in the middle, and a 650 MByte recovery partition (drive
R:) at the end.
Then use free partitioning software to copy your Windows data partition to the new disk - first delete partition
W: on the new disk, copy your existing Windows partition to the resulting empty space (the partition will be automatically resized to match your new disk), and reassign letter
W: to the newly copied partition. Press Apply to commit the changes and wait until the batch proceess is finished.
b) Existing disk
(Caution: DO NOT try to run the example DiskPart scripts above on your existing Windows 10 disk, they contain the DiskPart clean command which will erase all partitions on the disk).
On an existing disk, first use free disk partitioning software to check that your disk uses GUID Partition Table (GPT) disk layout (since UEFI/GPT is a requirement for booting from NVMe drives). If it doesn't, non-destructively convert from MBR to GPT disk layout.
To create
Microsoft-recommended GPT/UEFI disk partitions layout, use free partitioning software to assign a drive letter to your Windows partition (drive
W:) and resize it to free 116 MB at the start and 650 MB at the end, then create a 100 MB EFI System Partition (ESP) with FAT32 file system (drive
S:) and a 16 MB Microsoft Reserved (MSR) partition (no drive letter, unformatted) immediately at the start of the disk, and add a 650 MB primary partition with NTFS file system for the Windows Recovery Environment (WRE) (drive
R:) at the end of the disk, with partition type of Windows Recovery (if supported). Commit the changes and wait for the process to finish.
After re-partitioning, you can use the Disk Management console (diskmgmt.msc) or alternatively DiskPart assign command to map S: W: R: drive letters to the new partitions (note that disk numbers can vary if you have a SATA and NVMe disks):
select disk 0
select partition 1
assign letter=S
select partition 3
assign letter=W
select partition 4
assign letter=R
II. Setup Windows Boot Manager
Run
BCDBoot to create the BCD store from the default template (drive letters should be mapped as indicated above):
bcdboot W:\Windows /s S: /f UEFI
This will copy Windows Boot Manager files from your Windows system folder to the new EFI system partition and
configure the BCD store to boot from the
\Windows folder.
(Your disk is bootable at this stage, but you need to take extra few steps before you reboot).
III. Setup Windows Recovery Environment
Set the partition type GUID and the GPT attributes for drive
R: (the recovery tools partition):
select volume=R
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
Create
\Recovery\WindowsRE folder on drive
R: and copy the recovery image
winre.wim and the default
ReAgent.xml to that folder - you can extract these files from
\Windows\System32\Recovery\ folder inside
install.wim on the setup ISO media; the WIM image could also be already present in your
\%WINDIR%\System32\Recovery\ folder.
You can create bootable setup ISO media using
uupdump or
similar tools (it is also a good idea to make a bootable flash drive using
rufus in case you'd need a working recovery environment). Mount the ISO file in File Explorer, then use the free
7-Zip file archiver tool to open
install.wim and extract
winre.wim and
ReAgent.xml to
R:\Recovery\WindowsRE
(Alternatively, see
this Microsoft blog post for a step-by-step guide on extracting the recovery image with the DISM tool, but that method is much, much slower).
IV. Boot from new disk, enable Recovery Environment
Boot Windows from the new GPT disk to verify that everything is working properly (FYI you can even do it from an external USB enclosure). Select your new GPT disk in your UEFI BIOS boot settings - it would show as "Windows Boot Manager (<manufacturer - model code>)".
Create drive letter assigments for drives
W: S: R: with either DiskPart or the Disk Management console (
diskmgmt.msc).
To
setup the recovery partition, run
ReAgentC to create the BCD entries:
reagentc /setreimage /path R:\Recovery\WindowsRE /target W:\Windows
Enable the recovery partition and verify the state of recovery image:
reagentc /enable
reagentc /info
It should show Enabled for 'Windows RE status' on the first line.
You're done. Run
DiskPart remove command and reset all drive letter assignments on the System, Windows and Recovery partitions.
PS.
Personally, for new disks I prefer to copy the EFI system partition and the Windows Recovery partition to a new disk, assign the drive letters in DiskPart ( S: EFI System, W: Windows data, R: Windows Recovery), then use BCDEdit commands to manually fix partition and volume designators for device, osdevice, filedevice, ramdisksdidevice etc. identifiers in the new BCD store (each GPT partition is assigned a globally unique identifier (GUID), so all pointers will be broken after disk copy):
bcdedit /enum all
bcdedit /store S:\EFI\Microsoft\Boot\BCD /enum all
bcdedit /store S:\EFI\Microsoft\Boot\BCD /set {bootmgr} device partition=S:
bcdedit /store S:\EFI\Microsoft\Boot\BCD /set {default} device partition=W:
bcdedit /store S:\EFI\Microsoft\Boot\BCD /set {default} osdevice partition=W:
bcdedit /store S:\EFI\Microsoft\Boot\BCD /set {memdiag} device partition=S:
etc.