As Windows 7 approaches EOL [End of Life], and SSD prices are dropping dramatically, there are all sorts of upgrade paths that people may choose to follow. While some will abandon Windows altogether, and others will buy new PCs or laptops, still others will choose to upgrade to Windows 10, sometimes after upgrading the hardware they already use. While I hope that this will be at least a little bit useful for most, I think it might be of more use to those upgrading…
There are 2 ways, modes, of booting into [starting] an OS [Operating System] like Windows & Linux. There are two ways to set up a hard drive, or rather the partition or partitions that let you use that hard drive. And there are 2 ways to set up communication between a device and the hard drive or drives it uses. Having at least a passing familiarity with these things will be useful when creating bootable USB sticks with many backup programs, when installing Windows or Linux fresh, rather than updating them, if adding, upgrading, or replacing hard drives, especially SSDs, and upgrading to Windows 10.
All this stuff has to do with your PC’s or laptop’s BIOS, so that’s a good place to start. The main circuit board that everything connects to is usually called the motherboard, and it has a sort of brain, called the BIOS. The BIOS has lots of settings that it stores in its memory, and you can change many of those or reset them to their default. The number and types of settings that can be changed varies with BIOS version, motherboard, &/or PC/laptop model. How you access those settings also varies, so check the docs that came with the motherboard, PC, or laptop. Often you need to repeatedly press the Delete, or sometimes the F2 key when the device is just starting from being powered off – Not Just Sleeping.
Note that getting into the BIOS settings can be more of a hassle on recent devices running Windows 10 – you may have to go into win10 itself and set it to boot into the BIOS – but with these newer devices you very probably won’t need to get into the BIOS to change the things I’ll talk about anyway.
Years ago, IDE drives used wide ribbon cables connecting them to the motherboard. They’ve long since been replaced by SATA drives and cables, but these SATA drives still communicated with the motherboard the same way, using IDE. Intel later developed a new way for SATA drives to communicate called ahci [Advance Host Controller Interface]. Ahci has advantages but in some cases it can be slower than IDE and turning it on is an option in many BIOS. When you have that choice – if the BIOS doesn’t always use ahci -- you want ahci turned on if you want to use an SSD. If you’re using Windows 7 however, you can’t just flip the switch, turning ahci on in the BIOS – do that and Windows won’t start. Google on something like “windows 7 ahci” [without quotes] for the particulars – it’s not hard but you’ll find there’s tons of info – and be ready to reactivate Windows 7 afterward.
Most of the headaches booting a PC/laptop to a USB stick are because of UEFI BIOS. Back when Windows 7 was brand new [just out of Beta], they started changing the way that the BIOS works. They used to run code that was kind of like a single, stand alone program, but now run a mini OS, with software running on top of that. The old way is called Legacy – the new way is called UEFI, though Microsoft and Windows often just say EFI.
When you turn on a PC or laptop the BIOS takes a quick inventory to see what’s attached, e.g. hard drives, RAM etc., performs checks to make sure necessary things are working, then goes looking for the 1st bit of software to run, the bootloader that starts the OS. There’s a boot order setting in the BIOS that tells it where to look for that boot loader, e.g. a USB stick, a DVD drive, or a hard drive. If it doesn’t find it on the first device, it’s supposed to look on the 2nd item on the list, and so on, though it may actually only look at the 1st item on the list, and if it doesn’t find a boot loader, just throw an error and stall.
The boot loader that the BIOS looks for can be designed for a Legacy or a UEFI BIOS, but not both. That doesn’t sound too bad – just have two boot loaders, i.e. two sets of boot files on the hard drive, and the BIOS will just use the one that it needs. And in fact, that’s just what many bootable USB sticks & drives do. The headaches come because very many BIOS have a compatibility mode for some reason, which emulates the way a Legacy BIOS worked, but in different ways and to different degrees that varies with the brand and model of device. Worse, these BIOS may go into and out of compatibility mode automatically, based on triggers that vary by brand and model too. Even the amount of control you have in the BIOS settings over whether compatibility mode is turned on/off varies.
Because of the ways that their compatibility mode works, some BIOS will get confused if both UEFI & Legacy boot files are present, while some BIOS will insist on using compatibility mode when everything’s set for UEFI, or on using UEFI mode when everything’s set for Legacy. The only sort of pattern is that using a DVD drive as the boot device usually triggers compatibility mode, while using a GPT hard drive usually triggers UEFI – a GPT USB stick or drive on the other hand can go either way.
If you create a bootable USB stick in backup and/or some other kinds of software, you may need to know whether to create one that uses EFI or Legacy boot mode – I think that’s the most common situation where you need to know which mode your PC or laptop is using. The only easy, sure-fire way to tell that I know of is to run the free EasyBCD app – it’ll show you a message window if Windows was started using EFI. There are other indicators, and if you are using a device that came with Windows 10 it’s very probably using EFI, but that’s assuming rules that can be [& sometimes are] broken. I’ve seen other software that tells you if Windows was started using EFI or Legacy mode, but I’ve also seen that software error. [I didn’t include a link to EasyBCD because it’s so widely available.]
Note that some brands & models of USB sticks and/or drives may not work to boot some hardware – if a bootable USB stick or drive doesn’t work, it could be the cure is to use another USB stick or drive. Some BIOS will give you a boot menu &/or boot order setting that gives you two options for every USB stick or drive, one UEFI and one just listing the drive – you may have to try both to find which one [hopefully] works. Bootable USB sticks and/or drives will sometimes just not work on some hardware, depending on the software used to create it – whenever you create a bootable USB stick or drive in backup software for example, you should always test it to make sure it works on the devices you’ll use it with.
Probably because of the BIOS potentially getting confused, when you install Windows it normally only adds one set of boot files for either EFI or Legacy mode. Which one it installs can depend on the mode the BIOS is in, which in turn can depend on the media where you have the Windows set up files that you want to use. If you install Windows to a drive that’s already GPT it may tend to use the EFI boot files, but it also can set the drive to MBR or throw an error. [More on GPT and MBR drives later.]
Using UEFI to start Windows is more complicated, it allows the potential use of Secure Boot, it allows you to boot to a NVMe drive, there may be some SSDs that can only be used for boot drives if you use EFI, and if you only have one hard drive, it may be the only way to use a GPT hard drive, which allows more *real* partitions and larger hard drives, though that last part won’t ever effect most people. You might see articles or blogs telling you to switch to using UEFI booting if you don’t use it already, but unless you need to use UEFI, e.g. for one of the above reasons, ignore them. I’m NOT saying UEFI booting is bad, but if you’re not using it already, and if everything works OK as-is, and you don’t need to switch, the hassle of switching from Legacy to UEFI just isn’t worth it. Windows is Windows – the files are just the same whichever type of boot loader, EFI or Legacy is used.
Note that you’ll be able to make more settings with the Legacy version of the Windows 10 boot loader than the EFI version. The EFI version may also interact with the BIOS, e.g. you’ll see an entry for Windows boot loader that references the drive it’s on in the BIOS boot order list, and it may remove all other entries in that list – setting the boot order list back to the BIOS default usually brings them back.
A situation where I’d expect you’d find articles, blogs, &/or posts concerning possible UEFI vs. Legacy issues is adding a fresh copy of Windows 10 to a PC/laptop currently running Windows 7. When Windows 7 first came out its new UEFI boot option didn’t work, and throughout its life an awful lot of [most?] Windows 7 PCs and Laptops used Legacy booting. Since Windows 10 works just fine using Legacy boot mode, this is usually a non-issue.
If Windows 7 was installed in Legacy mode, if there was a partition before the partition where you were installing Windows 7, the boot files went there. That meant that if there was a partition with Windows XP, that’s where they went. Otherwise a new, hidden partition would be created to hold the boot files. Since Windows 7 worked just fine with its Legacy mode boot files on the same partition as Windows, I’m guessing that there’s quite a few Windows 7 installs set up that way too. Later in its lifecycle, a Windows 7 installation might use EFI mode boot files, and those would be placed on a hidden FAT32 partition.
Windows 10 can update and use Windows 7 Legacy mode boot files, wherever they are located, when you do an in-place upgrade of Windows 7 to Windows 10. If you install Windows 10 fresh, using either EFI or Legacy boot mode, it will usually put the boot files on a hidden, protected FAT32 Boot partition on the same drive where you’re installing Windows [the UEFI BIOS spec calls for the boot files to be on a FAT32 compatible partition]. If Windows 10 is installed on an empty drive, that Boot partition is often the 1st partition on the drive, but it doesn’t have to be in that number 1 spot – Windows 10 setup can put that partition anywhere on the drive.
I’d guess that a popular upgrade path would be to add a 120 – 240 GB SSD [$20 - $30 on sale], sticking a fresh copy of Windows 10 on that. Windows 10 takes up less disk space than Windows 7 [less that 20 GB], fitting on a small SSD that’s not only faster than a conventional drive, but cheaper too. While I’ve seen it for $4 - $5 less on sale, SCDKey today sells Windows 10 Pro keys for $16.82, making for a pretty inexpensive, mostly pain-free upgrade, that still lets you use your existing copy of Windows 7 and all the software you’ve installed. Installed fresh to that SSD, Windows 10 may set itself up for UEFI booting, possibly also setting the SSD as GPT, which is still not a problem. Use the free app, EasyBCD, in Windows 10 to add Windows 7 to the new Windows 10 boot menu – it’ll work just fine by the way whether Windows 10 uses UEFI or not. [Quick Tip: while in EasyBCD set the boot menu to Not use the Windows 10 Boot Menu’s graphical GUI – Windows will start faster.]
Note: putting the Windows 10 setup files on a GPT USB stick set up for EFI booting, e.g. using the free Rufus app and a Windows 10 ISO, setting the new SSD as GPT rather than MBR, and setting the BIOS for UEFI, turning compatibility mode off as possible, increase the odds that Windows 10 will be installed on that SSD using EFI mode boot files. However, depending on the BIOS, there may not be any guarantees that it won’t still use Legacy mode.
There’s some confusion when it comes to UEFI booting and GPT hard drives. Hard drives can either be MBR or GPT – the difference is in the hidden tables that record where the data making up each file & folder is stored. GPT is better, but you won’t notice a difference yourself in performance or anything whether a drive is MBR or GPT. A BIOS using UEFI mode doesn’t care whether any hard drive is GPT or MBR – it just needs to find the OS boot files on a FAT32 compatible partition. A BIOS in Legacy [compatibility] mode doesn’t care at all about how the partition with the boot files is formatted but will usually jump into UEFI mode if those boot files are on a GPT hard drive. This has led many people to falsely claim that you need to use GPT drives when booting in EFI mode – it makes no difference at all.
In my example, adding Windows 10 to a new SSD in a PC with Windows 7 already installed on a conventional hard drive, the BIOS could use UEFI mode together with EFI boot files on the SSD, and start either Windows 10 or Windows 7, regardless whether either drive was MBR or GPT. Or the BIOS could use Legacy mode with Windows 10 Legacy mode boot files on that SSD, if it was MBR.
Note that I talk about adding an SSD to hold a new Windows 10 installation because I feel that that’s the most painless option. It’s certainly not the only one. You’ll need space for a partition to hold Windows 10 on an existing hard drive – if needed you could defrag the partition with Windows 7, then shrink that partition to make space. That’s assuming however that you have enough unused space on that drive to fit Windows 10 plus any software you’d want to install. Many people tend to use all the storage space that’s available, so making room could require a bit of work. That also assumes that you’d be comfortable shrinking the Windows 7 partition if need be. On the other hand, adding an SSD means opening the case on a desktop PC, and is often not possible with a laptop. To add an SSD to a PC you’d need an available plug for power, though Y cables to use the plug going to your existing drive are cheap, plus a SATA cable and an available SATA port on the motherboard. The PC’s case may have a mounting option for the SSD, or there are adaptors to fit a 2.5” drive in a mount made for a 3.5” drive, and those are cheap, or you could just lay the SSD on the bottom of the case – with no moving parts there’s no urgent need to tie it down, assuming like most PCs yours stays put on or under your desk.
Should you want to switch a drive from MBR to GPT, or the reverse, I recommend using one of the well-known partitioning apps, e.g. AOMEI – they’re easier and work better than alternatives. While it’s entirely possible to convert an MBR drive with Windows on it to GPT, you’re better off installing Windows 10 fresh to a GPT drive, if you want it on a GPT drive. That’s because Windows 10 setup will add different partitions to a GPT drive compared to installing it on an MBR disk. Personally, I use GPT for new stuff, figuring MBR may someday go away, but have no problems leaving a conventional hard drive as MBR with older stuff on it [including a base Windows 10 install]. Any time you work with partitions there’s risk, so back up 1st, and as possible, just avoid it.
You *might* also get away with restoring a backup of an MBR disk partition to a GPT drive, but I really want to stress the word Might. Check the docs for your backup app, and keep in mind that it might or might not work.
If you have a copy of Windows that’s set up to boot in Legacy mode, switching it to boot using UEFI is more difficult than adding a fresh copy of Windows 10 using EFI mode to another drive and using those boot files. [Note that this Does Not Apply to using a NVMe drive.] You need to back everything up using a disk image backup app, and then if you want to convert the drive to GPT [Optional], do so. Next, you’ll add the EFI mode version of Windows boot files to a FAT32 partition on the drive. If there’s already a boot partition on the drive, and it’s FAT32, you might be able to use that, with both Legacy & EFI boot files coexisting -- this gives you the advantage that if this doesn’t work the original boot files you were using are still there, and should still work.
If that partition is not FAT32, or if you can’t access it, or if there is no pre-existing boot partition, you’ll add EFI, and optionally Legacy boot files to a new FAT32 partition – the reason for possibly adding Legacy boot files is if the drive is MBR, and if booting in EFI mode does not work, reverting to booting in Legacy mode should. To tell if you have a pre-existing, often hidden boot partition, check in Control Panel\ All Control Panel Items\ Administrative Tools\ Computer Management -> Disk Management, or use a partitioning app, e.g. AOMEI. Because it’s hidden, it won’t have a drive letter, and it’s usually 100 – 300 MB. Note that it’s different than a hidden Recovery partition, usually 300 – 500 MB. AOMEI Partition Assistant [& many similar apps] will tell you if a hidden and protected partition is FAT32.
Hopefully you can add EFI boot files using the Windows BCDBoot app while running Windows, without doing anything further than verifying that Windows is already using a FAT32 Boot partition. If you want to access that partition, or if you want to add the boot files while running another copy of Windows, e.g. a WinPE bootable USB stick, you’ll have to add a drive letter to that Boot partition. A Boot partition is normally protected, and the level of protection varies a Lot. You may be able to use Windows DiskPart to simply assign a drive letter, so you can access the partition in Windows Explorer, or you might be able to do it in a partitioning app. Or, you might have to assign that partition another GUID, again using DiskPart, or with the latest Windows 10 versions, you might not be able to assign a drive letter at all.
To add a new Boot partition, you can either delete a pre-existing Boot partition, and use that space, or Shrink the Windows partition, and use that space to create a new FAT32 partition [the current version of Windows 10 sets it at 100 MB, so you can use that size if you want]. Again, this is best done using something like AOMEI’s partitioning app. You’d still use Windows BCDBoot to add the boot files, using the /s, Volume Letter parameter to give it the drive letter of your new Boot partition. Once you’re done, and Windows boots using UEFI, you can use DiskPart to set the boot partition GUID back to protected, though I’ve had Windows 10 do that for me just by starting Windows 10 using those boot files. Once booting into Windows is working you can use EasyBCD to set up &/or customize the boot menu as needed, e.g. add a 2nd OS.
The reverse, setting Windows to boot in Legacy mode rather than EFI is MUCH easier. While it’s optional to use a GPT disk when booting Windows in EFI mode, you’ll want to convert the disk to MBR if it’s GPT, and you’ll still use BCDBoot, but using a special, hidden partition is completely optional – you can just as well use the same partition where Windows is installed. Either way, switching from Legacy to UEFI or UEFI to Legacy, it’s usually best if you wait until the boot files are in place before you make any changes in the BIOS, IF they’re necessary, to switch the BIOS to UEFI or Legacy [compatibility] mode.
docs.microsoft[.]com/en-us/windows-hardware/manufacture/desktop/bcdboot-command-line-options-techref-di
docs.microsoft[.]com/en-us/windows-server/administration/windows-commands/diskpart
easeus[.]com/partition-manager-software/fix-uefi-boot-in-windows-10-8-7.html
docs.microsoft[.]com/en-us/windows/desktop/api/winioctl/ns-winioctl-_partition_information_gpt
If you want to go further in depth, there are loads of possible ways to get a copy of Windows 10 on a drive [including USB and VHDs] and fully working, so don’t give up hope if none of what I’ve written here ideally matches what you want to do. There are so many options that with research you’ll most like find more than one that’ll fit. And Don’t Be Afraid of getting creative… I could see adding win10 alongside win7 on a conventional hard drive, adding an SSD to hold both the boot files and games for example. Windows on an SSD starts fast, but once it’s started, performance isn’t really that different from Windows on a regular hard drive. It’s the software you run, e.g. games, and the data it uses that benefit most from faster disks. At the same time, SSDs do fail without warning, especially the cheaper drives, so keeping Windows on a regular hard drive would be more reliable – less chance you would find yourself not being able to use your PC at all. But that’s just one idea – I’m sure you can come up with more – so as I said, don’t be afraid to get creative. :)