Guide: How to install Windows 10 onto storage expansion card

Glad to hear that worked for you! I will update the post with your size for the 1 TB drive.


I never do a fully partitioned disk because most SSDs do OP by leaving some of the disk unpartitioned (even if you don’t install their software and configure, it will actually act like OP). So on the daily driver 256GB I would, say, do 192GB of a C disk (and other things like boot sector and recovery), then just leave the 47GB or whatever unallocated.
It’s better to start small, because you can extend partitions (even if you are using them), but shrinking is a lot more complicated.
I would do a 350 gb C on a 512 disk, maybe 50 or so for a another partition (if needed), and leave the whatever rest for the OP.


So digging around in the documentation for these commands, I realized that the /Index:1 argument given to dism /Apply-Image is actually specifying the version of windows to install

If you do dism /Get-ImageInfo /ImageFile:R:\RecoveryImage\install.{esd,wim}, then it lists each Windows 10 version as a given index, with indices on my end being

1 == Windows 10 Home
2 == Windows 10 Home N
3 == Windows 10 Home Single Language
4 == Windows 10 Education
5 == Windows 10 Education N
6 == Windows 10 Pro
7 == Windows 10 Pro N
8 == Windows 10 Pro Education
9 == Windows 10 Pro Education N
10 == Windows 10 Pro for Workstations
11 == Windows 10 Pro N for Workstations

So if you want a version of Windows other than Home, check the indices in your image with dism /Get-ImageInfo and change the value accordingly

Looking at the other place where this index 1 shows up, I believe if a change is made with /Apply-Image then the same change needs to be made with specifying the recovery image via reagentc

Looking at

reagentc /setosimage /?

(or equivalently at the microsoft docs), we see that the index here is similarly specifying Index of the recovery image Windows imaging (WIM) file to be used by system reset

So from the sound of it, if you were to install Windows 10 Pro with /Apply-Image above and then leave this as /index 1, if you were to eventually restore your OS via the recovery partition you would have your install changed to Windows 10 Home

I am not sure. I know the OEM disks are the same and you can choose between Home, Education, and Pro (and Pro Ed), while Workstation ones are exclusive to those workstation installers

Because how Microsoft make the downloaded ISO a different version (you cannot make windows-to-go with those), I would also assume they shrunk it down so it only installs windows 10 home

Yeah, I haven’t messed around with it enough to say in general. I can say, though, that for an ISO that I downloaded from Microsoft using a Linux system (so no media creation tool) and then booted the installer for via Ventoy, I changed the index to 6 in my case and successfully ended up with Windows 10 Pro on my expansion card (so I’ve been able to enable things like Bitlocker).

1 Like

I just used RUFUS and a regular downloadable install iso. You select the windows-to-go option. It was easy.

The only problem was I had to use another machine to do it. rufus does run in wine, but I didn’t figure out how to make the usb drives available to wine.

However… I do actually like this idea of documenting a real reference way that doesn’t depend on any extra tools. Even if it’s more manual, it’s better in that it’s more deterministic.

I do recommend going through the trouble to add a thermal pad inside the module for this.


So, I have a question. Working my way through the guide and everything worked as advertised until I got to copy install.esd from sources. System returned a “cannot find specified file” I believe the error was but if I boot back into Ubuntu and search my install flash, sure enough it is there. Any idea what I’m doing wrong?

Did you try using install.wim as well? It looks like I might need to update the guide based on some other posts as well.

Wonders if there is a Windows 11 to go yet. Doesn’t look like it.

It probably will not have a “to-go” option because it tried to be more “secure” by auto-enabling things like bitlocker and forcing you to tie your local account to your microsoft account (and thus requires internet connection for setup)

I just installed 10 on my card and then updated to 11. Works great and you don’t even need a license.

Thank you for the great guide, I have Windows on my expansion card, and it is working great.

The only struggle was, once I went back to my Fedora install, the wifi wasn’t working. I had to disable fast boot in Windows and in the bios to get the wifi back.

1 Like

I just ran into this exact same issue so thought I’d post my workaround to save others the frustration.

Assuming you hit the same error at the same point in the guide, you’ll have already set up the necessary disk partitions to allow you to boot back into Ubuntu, mount the primary Windows partition, and copy over the install.esd file from your USB.

You can then boot back into the Windows installer, repeat the assign letter="" commands from Partition the disk (it seems to forget a few of the letters when you exit the installer), then continue to Copy Windows data to the newly created partitions.

The only difference now is that instead of copying install.esd from X:\sources\ you copy it from your primary Windows partition - in the guide this is W:\ but for me it was C:\. After that I was able to follow the rest of the steps without any hiccups.

Hope this helps someone! I’ve been trying to solve this all afternoon and it’s such a relief to finally have it sorted.

Rufus worked like a charm for me as well. My steps, which I followed on a separate Windows machine:

  • Download Rufus.
  • Download Windows 10 ISO (I downloaded and ran the Windows media creation tool and selected the local ISO option).
  • Plug in the expansion card (on the separate machine, not my framework laptop).
  • Run Rufus. Select “List USB Hard Drives” under “advanced drive properties” to make the storage card visible. Select the ISO, select the “windows to go” preset, and click “start”.

And that was it! After Rufus was done, I unplugged my storage card from the other machine and put it back in my framework laptop. I turned it on, spammed f12, selected the storage card as my boot media, and voila: I was in Windows.


I thought windows to go was no longer available. So now, I should be able to install a retail w10 on my usb 3 nvme card?>

Rufus has a “windows to go” preset, and I used that preset to install a normal w10 ISO to my storage expansion card. Worked very smoothly.

I just followed the directions given in the OP above, and a 256G Expansion Card. It worked fine on the 2nd try (probably typo’d the first one). Used a USB that I created from an existing Windows install. Disks look like this on Unix (OpenBSD, which as my main system is on the SSD):

dalai-LAPTOP-ian $ fdisk sd1
fdisk sd1
Disk: sd1       Usable LBA: 34 to 488397134 [488397168 Sectors]
   #: type                                 [       start:         size ]
   0: Win Recovery                         [        2048:      1024000 ]
   1: EFI Sys                              [     1026048:       512000 ]
   2: e3c9e316-0b5c-4db8-817d-f92df00215ae [     1538048:       262144 ]
   3: FAT12                                [     1800192:    471040000 ]
   4: Win Recovery                         [   472840192:      8388608 ]
dalai-LAPTOP-ian $ disklabel sd1
# /dev/rsd1c:
type: SCSI
disk: SCSI disk
label: USB DISK 3.2    
duid: 0204060829212769
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 30401
total sectors: 488397168
boundstart: 34
boundend: 488397135
drivedata: 0 

16 partitions:
#                size           offset  fstype [fsize bsize   cpg]
  c:        488397168                0  unused                    
  i:          1024000             2048 unknown                    
  j:           512000          1026048   MSDOS                    
  k:           262144          1538048 unknown                    
  l:        471040000          1800192   MSDOS                    # /c
  m:          8388608        472840192 unknown                    
dalai-LAPTOP-ian $

I was able to follow the guide and install windows (after jumping through some hoops)- but now wifi and sound don’t work on my pre-existing manjaro installation.

I tried disabling fast boot in the bios, but no luck. Any thoughts?

Edit. I also disabled Windows fast booting in the power settings, no luck.

It wasn’t until I stopped rebooting from one OS to the other that I got my network back on Manjaro. Have to fully shut down Windows, wait for a few seconds, and then boot into Manjaro, and wifi would be fine then.

I don’t understand. Do you put Windows into hybernation? sleep?
I believe Windows saves some data (on the disk, maybe in BIOS too) that lock the state of certain things (should only occur in sleep tho, hibernation is next to a full shutdown)

Could be anything. The wifi card could simply be in some unexpected state that the linux driver doesn’t know how to reset out of. The clue is that staying powered off for longer time makes any difference. That means the card isn’t reset until all the caps on the power rail drain.

1 Like

I want to note some changes to the instructions I made for the current Windows 11 22H2 ISO’s. Please mind that anything in parentheses are not intended to be input, they’re just notes:

list disk

select disk x (where x is the number corresponding to your expansion card)

clean (WARNING: This will format the whole disk, make SURE you have selected the proper disk)

convert gpt

create partition primary size=670 (increased from 500 to account for larger size in current build)

format quick fs=ntfs label="Windows RE Tools"

assign letter="T"

set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"

gpt attributes=0x8000000000000001

create partition efi size=100

format quick fs=fat32 label="System"

assign letter="S"

create partition msr size=128

create partition primary size=230000

format quick fs=ntfs label="Windows"

assign letter="W"

create partition primary size=5120 (increased from 4096 to account for larger size in current build)

format quick fs=ntfs label="Recovery Image"

assign letter="R"

set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"

gpt attributes=0x8000000000000001

list volume


md R:\RecoveryImage

copy XYZ:\sources\install.wim R:\RecoveryImage\install.wim (This needs to be the mounted ISO, which on one attempt was F and on another attempt was G. I used the command "notepad" to open notepad just to get a file browser so I could figure out the drive letter a bit easier and navigate around to ensure I was looking at the right device. Below X: is actually X:, the running from memory system. Changed esd to wim for Win11 build)

cd X:\Windows\System32

dism /Apply-Image /ImageFile:R:\RecoveryImage\install.wim /Index:6 /ApplyDir:W:\ (changed index to 6 for Windows 11 Pro)

md T:\Recovery\WindowsRE

copy W:\Windows\System32\Recovery\winre.wim T:\Recovery\WindowsRE\winre.wim

bcdboot W:\Windows /s S: /f UEFI

W:\Windows\System32\reagentc /setosimage /path R:\RecoveryImage /target W:\Windows /index 6 (changed index to 6 for Windows 11 Pro)

W:\Windows\System32\reagentc /setreimage /path T:\Recovery\WindowsRE /target W:\Windows

also figure it’s worth mentioning, the gpt attributes… those are 14 zeroes. so type 0x8, then hit 0 14 times, then 1. With so many it’s kind of hard to count.