FlashBoot: Install Windows 7 to New Laptop or New PC
If you dislike Windows 10 due to OS-builtin advertising, forced updates, untimely reboots and pervasive telemetry (which can't be disabled) — then only viable option is returning to Windows 7.
But hardware marches on, and older operating systems hardly can play catch-up. Installation of Windows 7 to new laptop fails right on the first screen: mouse, keyboard and boot device are all inaccessible to Windows setup because of missing USB 3.x drivers. In this case, error message like this appears:
A required CD/DVD drive device driver is missing. If you have a driver floppy disk, CD, DVD, or USB flash drive, please insert it now.
Because of missing drivers for USB 3.x controller, any plugged-in USB thumbdrive is ignored here, and also it's impossible to move cursor and click OK, because USB-connected mouse and keyboard doesn't work as well.
This example demonstrates conversion of Windows 7 setup ISO file with slipstreaming all FlashBoot-builtin drivers to bootable USB thumbdrive, for installation of Windows 7 to the new laptop.
1) Run FlashBoot Pro, click Next:
Starting from version 3.3c, FlashBoot Pro adds generic USB 3.0/3.1/3.2 Host Controller driver, compatible with Windows 7 (instead of collection of vendor-specific drivers). So, unlike other tools, FlashBoot Pro can aid in installation of Windows 7 to the modern computers which are based on Intel chipsets with USB 3.1/3.2 Host Controllers (B360, B365, B460, H370, H470, Z370, Z390, Z490) and AMD chipsets with USB 3.2 Host Controllers (B550, X570).
Starting from version 3.3d, FlashBoot Pro adds generic NVMe driver, which is compatible with any type of NVMe storage device from any vendor.
Also, if you are going to install Windows 7 on a modern computer (with pure UEFI firmware and without CSM support), you should apply the patch for Windows 7 UEFI loader. See details below.
Please note: driver slipstreaming feature requires FlashBoot Pro, but plain conversion of Windows setup ISO file or DVD disc into bootable USB thumbdrive is available in FlashBoot Free.
Windows 7 installation to the modern UEFI-based computers without CSM support
If Windows 7 Setup halts at boot time when displaying OS logo, then you need to apply the patch for Windows 7 UEFI loader.
Windows 7 builtin drivers (VGA.SYS and VIDEOPRT.SYS) assume that VGA BIOS (INT 10H) is universally available, but this is no longer the case on modern computers with pure UEFI firmware (without CSM).
Patch for UEFI loader provides emulation of VGA BIOS (INT 10H) over UEFI GOP framebuffer, thus enabling installation of Windows 7 to the modern computers without CSM.
Also, without this patch, Windows 7 just freezes instead of displaying BSoD (blue screen of death) on the modern computers where VGA-compatible hardware is not available (Windows 7 can't switch to classic 640x480x4bpp VGA mode in order to display BSoD). With this patch, Windows 7 is able to display BSoD over the UEFI GOP framebuffer, if necessary.
In FlashBoot version 3.3a, this patch was improved to provide an entire area of LCD screen to the Windows 7 via Standard VGA Driver. Previous versions of this patch restricted available resolution to 1024x768 and displayed black sidebars until vendor-provided GPU driver was installed by the user. Also we added compatibility with UEFI-based computers where video memory (UEFI GOP framebuffer) is mapped above 4 Gb boundary.
Cautionary note for users of nVidia GPUs
Drivers for nVidia GPU may fail to start under Windows 7 in the pure UEFI mode with the following error message:
This device cannot find enough free resources that it can use. (Code 12) If you want to use this device, you will need to disable one of the other devices on this system.
This happens on the motherboards which lack VGA arbitration support in the pure UEFI mode.
VGA is a legacy standard of GPU cards which maps video memory at physical address range 0xA0000 — 0xC0000 and I/O ports at the address range 0x3B0 — 0x3DF.
Windows 7 expects VGA compatibility from GPU cards in order to display animated boot logo, BSoDs and optionally run CheckDisk at boot time.
If your computer has multiple GPU cards, which one gets these ranges mapped (0xA0000 — 0xC0000 memory, 0x3B0 — 0x3DF I/O ports) is determined by BIOS (or UEFI) at the early boot stage by programming PCI and PCI Express bridges in such way that only one GPU device gets these system resources mapped to it. This applies to the case of integrated GPU and integrated PCI-E bridges too. That's why certain PCI-E slots on the motherboard support GPU cards and other ones don't.
Starting from Windows 8, VGA compatibility is no longer required by Windows, so it was excluded from the UEFI standard. Even worse, firmware vendors and hardware suppliers started to exclude VGA arbitration support from PCI-E bridges and their initialization code in firmware. On certain motherboards, it's no longer possible to assign legacy VGA resources (0xA0000 — 0xC0000 memory, 0x3B0 — 0x3DF I/O ports) to certain graphics card even if it demands such assignment and there's no conflict with another card. VGA arbitration feature was simply removed from the hardware. Hence the error when loading nVidia GPU drivers.
Also, driver model for GPU devices has changed in Windows 8, so Windows 7 graphics drivers are essentially very different from Windows 8+ graphics drivers. Unfortunately, nVidia graphics drivers for Windows 7 are implemented in such way that they must to talk to hardware via legacy VGA I/O ports. These drivers assume VGA arbitration feature is available and VGA resources are assigned to their GPU card, otherwise underlying Windows 7 OS couldn't boot. Developers of these drivers simply didn't account for such scenario when Windows 7 boots on VGA-incompatible system (with external aid, such as UEFI loader patched by FlashBoot Pro). nVidia drivers for newer Windows versions can talk to hardware without resorting to VGA I/O ports, but unfortunately these drivers don't run on Windows 7 due to the changes in the graphics driver model.
Also PCI-E bridge configuration is very hardware-dependent, there's no standartized protocol for software control of these devices, realistically only BIOS or UEFI firmware can manage them. Linux tries to do some tricks related to this matter in the vfio driver and GPU passthru code in qemu, but it oftentimes doesn't work, according to our experience it's easier to find motherboard with functional VGA arbitration rather than trying to reprogram PCI-E bridges after the BIOS.
All of the above applies to nVidia GPUs only. Discrete AMD GPUs and integrated Intel GPUs work fine in the pure UEFI mode under Windows 7. nVidia GPUs in CSM mode work fine too. But in the pure UEFI mode, nVidia GPUs may either have driver problems under Windows 7 or work normally, depending on how VGA arbitration is implemented on your motherboard/laptop firmware and PCI Express hardware. Please be aware of that.