bootmgr is not aware of "drive letters", that's something Windows does late in the boot process (and is configured in the registry, absolutely nothing to do with the physical disk configuration).
Using Linux to clone a system is not supported by Microsoft. In short, the official answer is Don't Do That. You should use Windows PE. DISM can create and apply WIM image files, which is Microsoft's preferred format (the same one used by Windows Setup).
Cloning a machine generally follows:
- Setup reference machine. Run
sysprep.
Boot WinPE. Use dism to capture the drive. Something like this batch file:
@ECHO OFF
IF %1 == "" GOTO DIE:
CHKDSK /X C:
CHKDSK /X D:
IF NOT ERRORLEVEL 0 GOTO DIE:
DISM /Capture-Image /ImageFile:Z:\Path\To\Images\%1.wim /Name:Boot /CaptureDir:C:\ /Compress:fast
DISM /Append-Image /ImageFile:Z:\Path\To\Images\%1.wim /Name:Windows /CaptureDir:D:\
:DIE
This may need to be modified if you have a non-standard partition layout.
Boot the destination computer to WinPE. Use diskpart and dism to apply the image:
Standard diskpart script to configure partitions:
SEL DISK 0
CLEAN
CREATE PART PRI SIZE=350
ACT
FORMAT QUICK
ASSIGN LETTER=M
CREATE PART PRI
FORMAT QUICK
ASSIGN LETTER=O
EXIT
Standard dism batch file to write image:
@ECHO OFF
IF %1 == "" GOTO DIE:
DISKPART /s Diskpart-Standard.script
IF NOT ERRORLEVEL 0 GOTO DIE:
DISM /Apply-Image /ImageFile:%1 /Index:1 /ApplyDir:M:\
DISM /Apply-Image /ImageFile:%1 /Index:2 /ApplyDir:O:\
IF NOT ERRORLEVEL 0 GOTO DIE:
BCDEDIT -STORE M:\BOOT\BCD -set {bootmgr} device partition=M:
BCDEDIT -STORE M:\BOOT\BCD -set {memdiag} device partition=M:
BCDEDIT -STORE M:\BOOT\BCD -set {default} device partition=O:
BCDEDIT -STORE M:\BOOT\BCD -set {default} osdevice partition=O:
:DIE
ECHO Script ended...
Your process might work, but you likely are missing those last four bcdedit lines from the script.
Note this does not configure WinRE, but you shouldn't need it if you have WinPE around anyway.