This is not clickbait, it does actually work
(The one trick they don’t want you to know is that this is simply critical thinking, logical deduction and perseverence…)
In my previous post I explained the irritating problems I was having installing Linux on my desktop PC. After going through the Debian installer, it failed to install a bootloader so my PC wouldn’t boot. I decided that rather than giving up with Debian, pulling the drive out and going back to Windows, that I’d fix the thing and make it boot. Or at least understand why it wasn’t working.
This is an important skill to have - not giving up. At least understand why something doesn’t work first. There is always a reason.
Tl;dr - I fixed it, it works fine, it took me about two hours to figure out and was a problem with my machine, rather than the installer being broken.
This is an important lesson. It’s usually you doing something wrong, or your system being broken in some way
This isn’t going to be a technical writeup of what I did, that’s going to be put somewhere else in case I break it again. What I’ll do instead is go through the process I use for problem solving seemingly impossible situations like this. Those kinds of situations where you’re looking at your computer and thinking “why isn’t it working?” and “why isn’t it telling me what’s wrong”. Use this set of steps when you have no words to type into Google, or can’t explain it well enough to ask someone else.
This works for me, every time. It might work for you. The trick is to think scientifically and to look for patterns.
Step 1 - If it didn’t work, try it again
It still won’t work because you’ve not changed anything, but the point is to go through the process again. How many times have you tried something for a second time and noticed you’d misread the instructions, or missed out a step? Go do it again, and see if there’s a mistake. If there isn’t, you are now simply trying to look for patterns - does it always fail in the exact same way, with the exact same problem?
Is the problem reproducible, can you write it down step by step to explain to someone else?
Step 2 - Find error messages
Stick the error messages into your favourite search engine. Prune them down though. Make them less “/home/user/foo.cpp: cannot resolve the bar-wobbler unit in import::loadFile()” and more “foo.cpp cannot resolve bar-wobbler import::loadFile”. Pick out the key words. You’ll end up either with no help, or a few random threads from forum posts and help websites.
Others might have had similar problems as you, their attempts at help might be useful. They will not 100% solve your problem, but could give you a direction to look in
Step 3 - Stop focusing on your specific problem
My specific PC wasn’t letting Grub install, giving strange error messages, and was a problem unique to me and my setup. This is normal. The trick is to figure out what the bigger issue is. Take a step back and stop looking for step-by-step help, and instead try to learn what the problem actually is. Nobody is going to hold your hand and fix this for you, we call that “instructions”, you followed those in step 1 remember and they didn’t work.
Step 4 - Find the name for the thing that’s not working
In my case it was the EFI config was messed up, and this was something to do with an EFI partition on my PC’s boot drive, and some settings in NVRAM. I had no idea these things existed, but after browsing a few dozen forum posts certain key words started to pop out. It’s like piecing together a puzzle, except you’ve lost the instructions.
This is hard. You’re learning new things. This part is what separates problem solvers from people who can’t do it. We want to understand and fix the problem.
Step 5 - Learn how that named thing works
I learnt there was an EFI partition on my PC’s boot drive, and that somehow there’s some settings stored in NVRAM (which I really want to call the BIOS) which are configured using a tool. Linux has a version of the tool, and Windows has one too. Since my Linux installation was broken, I managed to figure out how to use Windows to mount the EFI partition, and remove the broken bits of the Linux bootloader from it. That’s useful, I know how to put my PC back together now.
This is a long process, you will find no quick fixes here. This took an hour or so of frustration to learn.
You will learn extra things along the way. Write them down for later, that’s what separates experienced people from newbies, we’ve got a brain full of randomly learned things to draw on when stuck.
Step 6 - Try the broken thing again, but manually
I tried to manually install grub, and this time it gave me more errors, but they were more detailed than the ones the installer told me. Those errors did appear in Google searches, and there were some specific steps to fix the errors.
At this point I’d almost won.
Turns out there’s a boot order that’s set in the EFI settings - it’s the same one that’s in the BIOS settings in your PC (I’m calling it BIOS settings because that’s what my PC calls it). This was new to me, I thought that stuff just lived in the BIOS config menus, and operating systems couldn’t find it.
The boot order on mine was set to boot Windows, then a non-existent entry, then Linux, then the USB stick in my PC. That non-existent entry was the problem. Grub was trying to add it into its config menu, and getting horribly confused.
I now had a specific issue to solve. I had managed to reduce a vague confusion down to a specific, named problem.
Step 7 - Fix the problem
So now I knew what the actual problem was - I needed to remove an entry from the boot order. Seems the Windows EFI tools couldn’t do this (they probably can, but I found the Linux way first). There was about half an hour of confused poking before I figured out how to use the efi boot manager tool properly, but I didn’t break Windows in the process.
My PC now boots between Linux and Windows without any problems.
The problem was fixed!
This process will work for you, but it’s a process not a set of instructions to follow. You might have to jump around steps 2 through 6 multiple times. Providing you don’t keep repeating step 1 too many times, you’ll eventually jump out and into step 7.
If you don’t, chances are your computer might actually have a hardware fault and not a software one.
In which case, this process will work on that too!