Dual-Boot Configuration of Windows 10/11 and Windows 7 With Patched Loader
If you have a modern computer where Windows 7 Setup halts at boot time when displaying OS logo, then you need to apply the patch for Windows 7 UEFI loader in FlashBoot Pro. This patch provides emulation of VGA BIOS (INT 10H) over UEFI GOP framebuffer, thus enabling installation and use of Windows 7 on the modern purely UEFI-based computers without CSM.
And if you have a dual-boot configuration of Windows 10/11 and Windows 7, you need to have two UEFI loaders simultaneously: a new one, capable of booting Windows 10/11 (with modern features, frequently updated by Windows Update); and older one, dedicated for booting Windows 7, patched by FlashBoot Pro for VGA BIOS emulation (thus, Windows Update preferrably should leave it alone).
This article explains in detail how to establish such a dual-boot configuration.
1. Problem statement
When there’s a single EFI System Partition, Windows 7 and Windows 10/11 have a conflict over two file objects in that partition, that must be resolved somehow:
2. Simple workaround
If form factor of your device allows multiple internal storage devices (such as SSDs and HDDs), e.g. if this is not a tablet, sealed down by a glue, then install Windows 7 and Windows 10/11 to a different physical storage devices (in any order, but please temporarily disconnect bootable storage with first OS before installing second OS, so Setup of the second OS won’t find EFI System Partition prepared by Setup of the first OS and won’t mess with it).
After the installation, you will have two EFI system partitions and so you can choose OS (storage device) to boot from in the boot menu provided by UEFI firmware of your computer.
3. Solution for hard cases
If you must have single bootable physical storage device and so single EFI system partition (because your tablet does not allow disassembly/teardown, or your laptop does not have a bay for second storage device), then there’s a harder way (but it’s still possible):
Then Windows 7 will have its own kinda-sorta EFI System Partition (actually, it’s just bootable data partition), with its own separate UEFI loader and BCD hive, and Windows 10/11 and its Setup and its Windows Update will leave this partition and patched Windows 7 UEFI loader alone.
4. Other dual-boot considerations
Please be aware that in dual-boot configurations of Windows 10/11 and Windows 7, CheckDisk may kick in on every reboot of Windows 7. This is totally unrelated to the aforementioned UEFI boot shenanigans, and happens on CSM/Legacy systems too. Why it happens and what can be done about it, please read in the separate article (in short: a small registry tweak in Windows 10/11 is necessary to make it use old format of NTFS log compatible with Windows 7 and its CheckDisk).
5. Questions and answers
Q: How to change Type GUIDs for partitions?
A: Most convenient way is to use Emergency Boot Kit, see User Guide for Partition Manager: pages 36, 37, 39 and 40 demonstate this process step-by-step. If you do not have a paid version of Emergency Boot Kit, you can do this for free in a live Linux distribution like SLAX: run lsblk command to list all block devices, then run fdisk -l /dev/sda, fdisk -l /dev/sdb, fdisk -l /dev/mmcblk1 etc (substitute your block device name after /dev as necessary) to determine which Linux block device is your main internal bootable storage device, then run fdisk -l /dev/(chosen_device_name) to start editing partition table, then p subcommand to print partition table, thent subcommand to change partitition type, then 1 for "EFI system" type or 11 for "basic data" type, then w subcommand to write altered partition table to the disk. Alternatively, q subcommand exits fdisk program without saving altered partition table to the disk.
A: Most convenient way is via the UEFI firmware setup utility, but that depends on UEFI firmware vendor (consult user manual for your motherboard or laptop). Also there is a vendor-neutral method of changing UEFI boot order: using efibootmgr tool in live Linux distribution like SLAX. When run without parameters, efibootmgr displays current boot order (list of comma-separated numbers) and a table below (which explains a meaning of each number: for example, an OS name, or PXE network boot device name, or rEFInd boot loader name or whatever). Then you can run efibootmgr --bootorder XXXX,YYYY,ZZZZ,... with reordered list of the same comma-separated numbers. In such way boot order will be changed by efibootmgr and written into the UEFI configuration variables in the NVRAM.