Booting from MBR USB on Mac

I have a MacBook Pro8,1. For experimental purposes I've installed Windows 7 to USB (it's NOT an installer, a real OS on USB) via WinNTSetup on other PC. When I'm trying to boot from the USB with the command (I've unmounted the disk before):

sudo bless --device /dev/disk3s1 --setBoot --legacy

It doesn't work – it just boots to Windows 10 installed on the internal HDD with legacy method + Hybrid MBR too.

Here's my partition table:

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS HDD                     379.8 GB   disk0s2
   3:       Microsoft Basic Data BOOTCAMP                119.9 GB   disk0s3

/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *128.0 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                 Apple_APFS Container disk2         127.8 GB   disk1s2

/dev/disk2 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +127.8 GB   disk2
                                 Physical Store disk1s2
   1:                APFS Volume w32u SSD - Data         11.0 GB    disk2s1
   2:                APFS Volume Preboot                 24.5 MB    disk2s2
   3:                APFS Volume Recovery                708.8 MB   disk2s3
   4:                APFS Volume VM                      8.6 GB     disk2s4
   5:                APFS Volume w32u SSD                11.1 GB    disk2s5

/dev/disk3 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *125.1 GB   disk3
   1:               Windows_NTFS                         367.0 MB   disk3s1
   2:               Windows_NTFS                         124.7 GB   disk3s2

Can I actually boot from USB with the MBR bootloader on Mac or not? I've tried any way, including rEFInd, but it results again in booting to Win10 installed on disk0 HDD.

UPD: I've noticed that my USB drive is detected as internal, that's not true. macOS Catalina Patcher's fault, I guess.


Solution 1:

Not all Mac are built the same. Your Mac is probably just a year to early.

The industry switched to EFI booting of Windows in 2011. Apple did not catch up until around 2012/2013. This is also the time Apple starting to eliminate the optical drives from Mac models. However, since Windows 7 required a BIOS boot, Apple started adding the ability to BIOS boot from USB. This continued through at least the 2014 model year. In 2015, Apple started to eliminate the ability to BIOS boot entirely, which effectively ended the ability to install Windows 7.

So your model probably can not BIOS boot from USB. However, some (if not all) of the very next year MacBook Pro models can BIOS boot from USB. For example, see the question Bootcamp “Missing Operating System” on external drive.

One possible way to come close to having Windows on an USB drive would be to put the System partition on the internal drive and Windows partition on the USB drive. The System and Windows partitions are described in the Microsoft document BIOS/MBR-based hard drive partitions. I have never tested such an arrangement to see if it would work with any Mac model. You would have to try this on your Mac to see if it would work.

Another option would be the following. Since you have Windows already installed on the internal drive, try rebuilding the BCD on the internal drive. Windows on the USB drive may be detected and included in a Windows boot manager.

A final note. Your question included the command which is repeated below.

sudo bless --device /dev/disk3s1 --setBoot --legacy

I believe the --device /dev/disk3s1 is a dummy option which is ignored. In other words, when specifying the the legacy boot option, the firmware tries to BIOS boot. There is no way to select the boot drive.