0

This is a preemptive question to avoid problems.

I currently use a desktop PC with one hard drive in a caddy and one internal HDD (they both are SATA drives); the internal 1 TB drive is just for data with no OS on it (formated as NTFS so that both windows and linux can read and write to it). As a boot drive (to be inserted into the caddy) I have several HDDs with 1 or more OS on them:

2 with Windows XP only.
1 with Windows XP and Linux Mint.
1 with Windows 7 and Linux Zorin.

When I want to use Win7 or Zorin, I put the specific HDD in the caddy and switch on the PC; If I want to use Win XP or Mint, I switch off the PC, take out the drive and put in the other drive (with XP or Mint), and switch back on the PC.

All that works flawlessly at the moment because all the drives are formatted in legacy mode with an MBR and the boot information is on the drive. But soon I will have to upgrade (or replace) the computer and I will need to use UEFI and GPT. I want to continue using caddies and multiple HDDs (of course I will have to re-install them under uefi on the new computer), but from what I have read so far on various forums, I will have some problem when changing HDD as under UEFI some of the boot instructions are written to the motherboard chip and I think it gets overwritten each time I install a new OS on to an other HDD, so only the OS/s that have been installed on the last HDD will boot. All the previous OSs on the previously installed HDDs will not boot as the system does not see them as bootable drives or something else is missing (i'm just guessing here, I'm not sure exactly why or how)

Is this correct? Does anyone on this forum run a similar system and could share their experiences? And if my information is correct, is there a way around it?

For example would it be possible to put all the boot information on each HDD only? (Only the information for the OS/s that is/are on this specific hard drive would needed to be present).

I hope I explained the setup well enough to be understood. Thanks

chameau
  • 1
  • 1
  • None of those OS will work under UEFI, sorry. – Vlastimil Burián Aug 21 '19 at 10:58
  • If graphics speed is not important, all of those OSes can be run in a VM - e.g. use Mint as your main OS and create VMs for Win XP, Win 7, and Zorin. Also, if you only need to occasionally use some old XP or Win7 programs, many (but NOT all) windows programs will run on Linux with WINE. – cas Aug 21 '19 at 11:43
  • If graphics speed is important, there are ways of doing VGA passthrough to a VM, but that would require having a second dedicated VGA card for the VM(s). – cas Aug 21 '19 at 11:43

2 Answers2

1

When you mention "boot instructions written to the motherboard chip", you're referring to UEFI NVRAM boot variables.

According to the UEFI specifications, having multiple boot variables at the same time should not be a problem: the system will try them in order specified by the BootOrder variable.

Also, the UEFI specification defines a way to make removable media bootable in a way that requires no boot variables in NVRAM: if a media has a filesystem type that is recognizable to the UEFI firmware (specification requires FAT32 support, but allows the option of supporting other filesystem types too) and that filesystem contains a valid bootloader in path \EFI\BOOT\BOOT<architecture-ID>.EFI, then it will be recognized as bootable. For 64-bit x86 hardware, the <architecture-ID> will be X64. If the media is GPT-partitioned, there may be an additional requirement that the partition containing the bootloader has a type GUID identifying it as the EFI System Partition, or ESP.

However, some UEFI implementations will "helpfully" remove any boot variables referring to disks that are no longer present. So if your new system ends up having an UEFI implementation with this "feature", you will have to rely on the "removable media boot" mechanism on all your caddy HDDs. On disks with multiple OSs, you would put into \EFI\BOOT\BOOTX64.EFI a bootloader that can present a boot menu and then load the selected OS, e.g. the UEFI version of GRUB2, or maybe rEFInd.

Regarding support of your OS choices:

  • modern versions of Linux Mint will definitely support UEFI.
  • quick Googling indicates people have apparently succeeded booting Zorin with UEFI and made YouTube videos on how to do it.
  • Windows XP is definitely not UEFI boot capable.
  • a 64-bit version of Windows 7 SP1 can be UEFI boot capable, but you might have problems as the support is not as refined as in later versions of Windows. You will probably need to disable Secure Boot.

If you need Windows XP, you'll need a system whose UEFI implementation includes a BIOS Compatibility Support Module, or CSM for short. If you use an older graphics card which does not include UEFI-compatible firmware, you will need the CSM enabled no matter which OS you'll be using, or the display won't work until the OS display drivers kick in.

On some UEFI implementations, the boot configuration options for the CSM/legacy BIOS boot are hidden away unless Secure Boot is disabled, since Secure Boot requires native UEFI boot and is usually enabled by default because of Microsoft's Windows 10 certification requirements.

On many UEFI systems with a CSM, it is possible to select whether the system prefers booting UEFI style over legacy BIOS style or vice versa. This would allow you to boot from a plugged-in Windows XP caddy in legacy BIOS style, although the system might spend a while trying to detect UEFI-bootable systems first.

Note that Intel is planning to remove CSM from their products by year 2020 and other motherboard manufacturers may or may not do the same, so if you need new hardware for your old OSs, you'd better act now, while the current models still include the CSM.

Also, trying to run Windows XP on a system without the appropriate chipset drivers available might be difficult or even impossible. I would urge you to investigate the possibilities to satisfy your Windows XP needs with virtualization, to make the XP installations independent of the actual physical hardware. For example, you could install Oracle VirtualBox on Linux Mint and run your Windows XP instances as VirtualBox VMs.

telcoM
  • 96,466
0

Thanks telcoM for the extensive and detailed reply to my question. So if I understand this correctly, assuming the BIOS/UEFI chip on the motherboard supports both UEFI and Legacy mode, is set to use both, the priority is set to UEFI first, and secure boot is turned off, than it would boot OS on GPT partitioned drives (like linux mint 64bits) in UEFI mode and if I insert a drive with Windows XP 32bits with an MBR based partitioning, it would also boot that?

Not all UEFI systems are created equals

However, some UEFI implementations will "helpfully" remove any boot variables referring to disks that are no longer present. So if your new system ends up having an UEFI implementation with this "feature", you will have to rely on the "removable media boot" mechanism on all your caddy HDDs.

Is there a way to tell if the UEFI system of a motherboard/BIOS chip is of the "helpfully" type?

Windows XP is definitely not UEFI boot capable.

If i was to install a 64bit linux distro (like mint) on a GPT partitioned drive, would it be possible to subsequently install Windows XP 32bits alongside (dual-boot) on a GPT partition (NTFS or Fat32)? However I never installed it in that order - I always install Windows first then Linux, apparently Windows does not play nice with Linux! so I may run into other problems - like having to fix Grub. Thanks