Guide: How to install Windows 10 onto storage expansion card

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.

2 Likes

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
flags:
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

exit

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.

2 Likes

I installed Win11 pro according to this method. What I have to say is that after using fedora for a long time, I switched to win11 to use Microsoft’s Chinese input method. It feels really great!
However, after the surprise, there are also some problems:

  1. I think it may be because the system is running on an external expansion card, so the system time cannot be synchronized, and it needs to be adjusted manually after booting.
  2. In standby mode, shut down and restart.
1 Like

Recently, my win11 professional version has a new problem, the system update has an installation error - 0x800703f1, and the inexplicable power button fails, I have to use shutdown to shut down or restart.
Another point is that disk detection often occurs when win11 is turned on. Recently, I have been thinking about how to produce these unstable factors after using it for a period of time.

What advantage do you have booting the OS from the external drive instead of just running it in a VM?

There are so many shortcomings in the external drive approach that I really question why someone should use that approach instead of the VM one.

With a VM, I can start+stop it without issues, freeze it, a snapshot is done within a milisecond (CopyOnWrite ftw.) and so many more things.

My suggestion would be: Passthrough the external expansion card to the VM and then install Windows to it. Then you can just point your VM to something like /dev/sda, all would work and you wouldn’t have to keep fighting with Windows.

1 Like

“Passthrough the external expansion card to the VM and then install Windows to it.”

This suggestion is eye-catching, but I don’t know how to configure it, is there a tutorial for it? @Anachron

That very much depends on both your primary OS as well as which VM solution you choose.

I use Void Linux with Qemu and it allows me to attach basically anything to my Virtual Machine: I can choose a file, partition or even block device to mount.

https://qemu-project.gitlab.io/qemu/system/images.html#using-host-drives

Since I use no GUI, I would pass -drive format=raw,media=disk,file=/dev/sda to my VM for example.

1 Like

@Anachron , just for context, for my personal use case the only reason I have any “bare metal” install of Windows on my Framework is specifically doing firmware updates on a couple of my 3D printing related devices. Some of the devices have linux firmware updaters but one in particular is poorly supported and works best in Windows. While it’s definitely possible to pass through the USB interface for the serial device to exist in the VM, it was really tedious to get it working consistently to the point where I thought “I’m gonna have to make an unnecessarily complicated script for this one thing I do every 6 months?” and I just stopped and installed directly to the expansion card to go bare metal.

That said, for many folks (depending on their needs) I’d very much agree that just running Windows in a VM is almost certainly going to be simpler.

1 Like

@Anachron @JP_Powers
Thank you for your suggestions, which gave me a new understanding of VM. I always thought that VM are not suitable for some production environments. I may be wrong. After I think about it, I might also think that installing the OS on external storage is weird behavior (it does have a lot of instability issues if you use it confidently).