My journey updating to Windows 11
My primary desktop at home has run Windows 10 Pro since 2021, and I self-host some services locally at home on Linux. After doing a month-long test run of KDE Plasma from my Linux box, I'd been considering swapping this PC to Linux as well. However, I like to develop on Windows and Linux to learn about cross-platform compatibility issues, and I build my projects with MSVC, Clang and GCC. I've been watching the Windows 10 end-of-line date approach and decided to finally upgrade.
The specs were good when it was built and I upgraded pieces over time - Ryzen 5950x, RX 6800 XT, 64 GB of RAM so upgrading to Windows 11 should be easy. Right?
TPM
PC Health Check says that it met all requirements except using Secure Boot, which is part of the UEFI specification. So, that needed to be set up. A little bit of googling later, and it turns out I need to ensure I have the right TPM. A TPM is a special piece of hardware (or software) Windows can use to ensure only trusted (signed) software and firmware components are run.
From admin powershell:
My TPM is spec 2.0, so it's ready to go.
tpm.msc is a "snap-in" for Microsoft Management Console (MMC). It's an program which interacts with MMC to do some administration task.
Disabling CSM and back again
A bit more research and it turns out I need to disable CSM in UEFI firmware. "UEFI firmware" often still gets called "BIOS," but technically these BIOS is a different, older system.
I'm not entirely certain why this box uses CSM. Maybe I screwed up somewhere when I set up this box? So I hop into UEFI firmware and disable it. The PC now boots directly into UEFI firmware and not into Windows. I check the settings again and reboot and it boots directly into UEFI firmware again and it no longer sees any bootable devices.
Ok, so that broke something, and I should revert. I enable CSM and ... the PC doesn't boot into Windows, it boots straight into UEFI firmware. Did I save the settings? Check CSM enabled and try it again, and it boots directly into UEFI firmware again. That's not good. It still doesn't see any bootable devices.
<chuckles>
I'm in danger
Why doesn't it see bootable devices after reverting the setting? Did it somehow bork something on the Windows side? In hindsight it seems ridiculous that I checked this, but it's part of the story, so it's here anyways.
I plug in the Windows 10 install USB that I still have for this box, and try to use the tool there which should fix Windows startup. That doesn't work. There's also no restore point available to revert back to - maybe that would work and it's my failing for not ensuring that's setup, and I should do that in the future?
I could just directly reinstall Windows 10 at this point. I also have two drives in this machine, one for the OS and another separate one for data, and I also got an external drive a week or so ago to back everything up from that secondary drive.
I'm tempted to just ditch the upgrade and switch this box to Linux. There is an option to use a specialized command prompt, which reminds me of the one from grub, so maybe there's a way forward from there?
Another look at UEFI firmware and I see an option to load profiles. Interesting, it lets me load profiles from disk, and is able to view the contents of the two drives I have installed in the box, and I can see the boot partition. So there's something else weird going on here.
A few more searches on my phone and I find that this motherboard's CSM setting is silently linked to the secure boot setting which I need to disable at the same time as reenabling CSM, which restores a working machine. No progress on getting secure boot to work, but at least the box boots into a working state again.
There's definitely a penguin beckoning me to install Linux instead.
From MBR to GPT
Poking around a bit and I stumble upon a reference to MBR and GPT effects on system startup. Then I find an article describing how Windows boot can use either MBR or GPT, and describes how to switch from MBR to GPT. MBR is old school and GPT is the new thing I should be using if I'm not. Am I using it?
Checking the volume via Disk Management tool, from admin powershell:
This is another "snap-in" for MMC!
The UI of this tool is sneaky and doesn't like to reveal its secrets. I have to read "Properties" from the Disk and then Volume and not the partition itself, and it turns out I do in fact have an MBR.
There's a neat tool called mbr2gpt.exe that the Windows Central article mentions, which lets me convert my MBR to GPT. The article has you go through Settings
> Update and Security
> Recovery
and then into Advanced options
to a command prompt, but mbt2gpt
also looks available through an admin powershell:
Converted! So, did it work?
Back into UEFI firmware, disable CSM and enable secure boot manually this time. While I'm prepared and willing to gift this PC to the penguin, it boots into Windows 10.
I run PC Health Check again, and it says this PC supports Windows 11 now! Victory!
What happened?
Way back when I built my PC, I must have set up my PC to create an old-school Master Boot Record (MBR) instead of using a newer GPT partition. This PC has multiple disks, the smaller (a small 1TB NVMe stick) one I set up to be OS and install programs only. Since it's a smaller storage I didn't hit the MBR maximum disk size of 2 TB to notice.
UEFI supports booting MBR-partitioned disks with the "Capability Support Module" (CSM) which I was using. When I disabled this, the boot process saw no GPT partitioned drives to boot.
MBR is incompatible with secure boot. I might have missed it, but I didn't see any messaging indicating that I was straying into danger here, and the instructions I found didn't say anything about having to possibly convert the boot drive from MBR to GPT.
When I reenabled CSM and didn't realize that Secure Boot enabled, no bootable disks could be found.
Updating the updates
It looks like Windows 11 is installed via the normal update mechanism, and I'm not allowed to upgrade until my Windows 10 version is fully up-to-date, so I install the pending update. After this, there's still no Windows 11 update there yet, but there is a Visual Studio pending update, so I grab that one too since I'll probably want it later during development anyways. A reboot later and the update tool just shows me as "Up to date" and there's no option to update to Windows 11.
The page I found recommends using the update tool to update and since I've ignored three full screen ads on my PC to update to Windows 11, I'm a little confused why it doesn't show up there. The Windows 11 page tells me that I could just buy a new PC to upgrade to Windows 11 if my current one doesn't support it. I could pitch that idea to my wife if I wanted to sleep on the couch.
I find another tool called Installation Assistant that can be used to update instead. I grab that and it seems to be progressing. At around 86% I accidentally hit escape after clicking that window -- I meant to click the window next to it. A notification pops up and disappears. Is it continuing? I look around task manager and don't see anything, so maybe it's done? I reboot and I'm back in Windows 10.
I try the installation assistant again and it seems to stall out at 86% again, but then finishes up and asks to restart now or later. Restart now and be done! After 15 or so seconds, the system reboots and it shows and updating dial of Windows 11 updates before it finally boots into Windows 11.
Result
I haven't noticed much functional difference in my day-to-day usage between Windows 10 and Windows 11. Granted I also have a dedicated Linux box for Linux development so I don't use WSL.
A big win (no pun intended) in usability is snap layouts. Windows Terminal also comes installed by default. A huge regression is that the taskbar can only be on the bottom of the screen, which makes the effective widescreen dimensions without taskbar hiding even thinner.
After upgrading to Windows 11 I have only experienced one problem. One Windows update didn't work properly and it repeatedly had to be undone by the OS. This issue continued despite reinstalling critical components via Windows Update.
I cleared the update cache, ran DISM (Deployment Image Service and Management Tool) and SFC (System File Checker) scans, and reinstalled critical components via Windows Update again, which fixed the issue.
References
-
Wikipedia: UEFI: CSM booting
-
GPT-based hardware partitions
-
Installation assistant
-
MBR-based hardware partitions
-
mbr2gpt
-
MMC Terminology
-
Secure boot
-
UEFI Spec: Secure boot
-
How to organize your screen with Snap layouts
-
Ways to install Windows 11
-
Windows Central: How to convert MBR to GPT drive to switch BIOS to UEFI on Windows 10
-
Wikipedia: TPM
-
What is Windows Terminal?
mbr2gpt