How to boot into Windows on SSD from macOS

I have a MacBook Pro (13-inch, 2018) running macOS Catalina (10.15.2). I have an old laptop that died, but that still has a (newer) functioning SSD. This SSD has Windows 10 already installed on it, ready to go. I pulled it from my laptop and connected it to my MacBook using a SATA-to-USB adapter.

My MacBook is able to recognize the disk and all partitions on the SSD, but only my internal macOS drive is showing up in the Startup Disk utility.

What steps do I need to take to be able to boot into the Windows SSD from my mac?


Update: It seems my disk is using an MBR partitioning table:

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *480.1 GB   disk2
   1:                 DOS_FAT_32 SONYSYS                 279.6 MB   disk2s1
   2:               Windows_NTFS Windows RE tools        1.1 GB     disk2s2
   3:               Windows_NTFS                         477.7 GB   disk2s3
   4:                       0x27                         1.1 GB     disk2s4

Update 2:

Output from sudo fdisk /dev/disk2:

Disk: /dev/disk2    geometry: 58369/255/63 [937703087 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE    0   0   2 - 1023 255  63 [         1 -  937703086] <Unknown ID>
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused

Update 3: Tried using gdisk to convert from MBR to GPT and the new output of diskutil list is:

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *480.1 GB   disk2
   1:       Microsoft Basic Data SONYSYS                 279.6 MB   disk2s1
   2:       Microsoft Basic Data Windows RE tools        1.1 GB     disk2s2
   3:       Microsoft Basic Data                         477.7 GB   disk2s3
   4:           Windows Recovery                         1.1 GB     disk2s4

Update 4:

Output from sudo gpt -r show /dev/disk2:

      0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34         30
         64     546146      1  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
     546210       2598
     548808    2101917      2  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
    2650725       3427
    2654152  932987461      3  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
  935641613       1523
  935643136    2054144      4  GPT part - DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
  937697280       5774
  937703054         32         Sec GPT table
  937703086          1         Sec GPT header

Solution 1:

Generally, it is not recommended to boot a Windows installation from a different computer. However, do so has been known to work.

You should make sure Secure Boot is set to detect and boot from external drives.

You should first determine if the external drive is using a GUID partition table (GPT) or a MBR partition table. This can be done by looking at the output from the command diskutil list. If you see GUID_partition_scheme for the drive, then the drive is using a GPT. If you see FDisk_partition_scheme, the the drive is using a MBR partition table.

If the drive is using a GPT, then the Mac Startup Manager should detected the boot files on the external drive. Detection of the boot files does not guarantee the Mac will be able to boot Windows. For example, there may be drivers that need to be added to the drivers store. This can be done using the Windows 10 installation media.

Your model Mac can not boot from Windows installed on disk that is using a MBR partition table. If the drive is using MBR partitioning, then there is not enough information posted in your question to tell if the partitioning can be converted to use a GPT. If not, then you might be able to use a third party partitioning tool to make room for adding a GPT. After converting to use a GPT, the UEFI boot file files will need to be added to the drive. Also, you probably should add the drivers from the Window Support Software. This can be done using the Windows 10 installation media.

Update 1: Create an Empty EFI Partition

The EFI partition is where the Windows boot files are stored.

You can going to need a EFI partition. You can use disk2s1 for this. Below are the steps to backup this volume.

cd ~/Desktop
diskutil unmountDisk disk2
sudo dd if=/dev/disk2s1 of=backup2s1.bin

Next, reformat the partition.

sudo diskutil FAT32 EFI disk2s1

Finally, use gdisk to change the partition type of disk2s1 from 0700 to EF00

Update 2: Create a USB bootable Windows 10 flash drive installer.

You will need to boot from the flash drive in order to run the commands to create the boot files and transfer the drivers to the driver store.

  1. Use the Disk Utility to erase a USB flash drive. Use the name WINSTALL, format ExFAT and scheme Master Boot Record.
  2. Download the Windows 10 ISO from Microsoft. This is free and you do not need a product key.
  3. Use the Boot Camp Assistant to download the Windows Support Software.
  4. Mount the Windows 10 ISO and copy all the files to the flash drive.
  5. Copy all the Windows Support Software files to the flash drive. The $WinPEDriver$, BootCamp and (Optional) AutoUnattend.xml files should appear in the root folder of the flash drive.

Update 3: Install the Boot Files and the Drivers

  1. Boot From the USB flash drive. When the first window appears, enter a shift+F10 to open a Command Prompt window.
  2. Use the diskpart command to determine the drive letters for the Windows WINSTALL volumes. (i.e. enter list volume) Here, I will assume the letters are C and D, respectively. Also, assign the EFI volume the drive letter S. See diskpart for more information.
  3. Enter the following command to create the boot files. If needed, substitute your Windows drive letter for the letter C. See bcdboot for more information.

    bcdboot C:\Windows /s S: /f UEFI
    
  4. Add the drivers to the drivers store. Often this step can be omitted. If needed, substitute your Windows drive letter for the letter C and your WINSTALL drive letter for the letter D. See dism for more information.

    dism /Image:C:\ /Add-Driver /Driver:D:\$WinPEDriver$ /Recurse  /ForceUnsigned
    

    You can ignore any error messages produced.

  5. If you succeed in booting Windows, install the Windows Support Software.