Im running boot manager on my 3.1 running catalina, windows 10 64bit and windows xp 32bit both in legacy mode, my problem is if I select the windows XP disk it will reboot to the windows 10 disk, If I remove the windows 10 disk and try it will reboot to XP fine, any idea how I can fix this? Thanks
Legacy booting on old Macs like the MacPro3,1 requires a few things:
1) The BootCampHD nvram variable needs to be set to the disk that has the MBR code that you want to boot (Startup Disk preferences panel can do that when you select a Windows partition)
2) The partition on the disk that you want to boot needs to be marked active in the MBR (you can use fdisk to do that, or iPartition).
3) Finally, the boot loader just needs to launch the legacy booter Boot Camp EFI app using the correct firmware EFI device path (Startup Disk preferences panel will store the correct path in nvram variables when you select a Windows partition)
rEFInd has code to do all of the above.
For #3, the BootCamp EFI app has the same GUID in all Macs able to boot legacy BIOS, but the firmware address may change. To handle this, rEFInd has device paths for all the known addresses. Another method might be to search all handles that have Efi Firmware Volume Protocol for the Boot Camp App GUID. The device path for the handle will then be part of the device path to launch.
Here's some more info:
#272
Here's a script to view EFI device paths in nvram variables (using UEFI 2.x formatting which is slightly different than what you see in EFI 1.1 shell but the hex results are the same):
macOS nvram boot variables, device properties, EFI device paths - gfxutil.sh
gist.github.com