[SOLVED] Grub issues with GUID partition table warnings in dual boot setup

Hi! I’m currently having a rather rough installation of Manjaro after 2 days of trying to make this function. My desktop has an SSD with windows 10 on it and an HDD for storage; I decided to buy another HDD of the same type to install a Manjaro distro by following the wiki: [wiki] Windows 10 - Manjaro - Dual-boot - Step by Step .

Hence I have fast boot off, secure boot off, legacy mode on :+1:. The installation went with almost no issues: my wifi adapter wasn’t recognized, and after a failed attempt to install it package-by-package through USB (ouch), I simply wiped the new disk, reinstalled Manjaro and moved my rig to the router to plug it directly.
tldr; resorting to chroot would be a pain, and I would rather leave that as a last resort…:crossed_fingers:

First, here’s a paste bin with the usual: https://pastebin.com/7z5KiF52

Here’s the twofold issue:

Grub’s dual-boot interface is skipped 90% of the time. In my BIOS, I can change between 2 boot options, both on my third drive. Randomly choosing between them sometimes triggers the dual-boot menu. To solve this, I have attempted Using livecd v17.0.1 as grub to boot OS with broken bootloader (simple method), and used the UEFI additional commands (output in paste bin). Hence, it seems that Grub is functional, just not linked properly. I removed the quiet option in grub’s config file, and I can see the system exiting the BIOS and entering straight to the “Welcome to Manjaro” greeting when the dual-boot interface does not appear. From windows, I also attempted https://itsfoss.com/no-grub-windows-linux/ , without much success.

PS: I do not know why grub-install returns warnings about GUID partition table signatures. I think this may be due to the multiple installations and reformatting of the drive. I am not very familiar with hardware and bootloaders, and everything I have learned came from debugging/repairing this rig.

When I do get into Grub’s dual-boot interface, it does not contain a Windows 10 option! Only Manjaro and addtional Manjaro options. Running os-prober returns empty; hence I tried the more brute-force :triumph: method suggested here: https://ihaveabackup.net/article/grub2-entry-for-windows-10-uefi and using chainloader +1 instead. The .efi boot file on my windows drive is in (windows root)/Windows/Boot/EFI/bootmgw.efi , within /dev/sda2.

Hence, after seeing a couple of implementations of this fix, I currently attempting the following addition to /etc/grub.d/40_custom:

menuentry 'Windows 10' {
    insmod ntfs
    search --fs-uuid --no-floppy --set=root A4B23FCEB23FA428
    chainloader /Windows/Boot/EFI/bootmgfw.efi
}

I have not seen Grub since, but I will report if it works :crossed_fingers: . On failure, the added windows options usually simply returns a grub error:

EFI file location not found.

or something along those lines.

PS: Windows boots fine, when I select it through the BIOS.

Any help will be appreciated, I’m excited to join the community!

EDIT: Solved, the issue was caused by the co-existence of a windows BIOS/Legacy installation alongside a Manjaro UEFI on a disk with a msdos partition table. EFI and Legacy systems have very different booting behaviors and it is always recommended to install operating systems in the same schema. As such the fix is not to attempt to repair grub, but to reinstall Manjaro in the same setup (BIOS/UEFI) as the original Windows 10 installation. There are a few ways to implement this, and should all work fairly well. A clear sign symptom that the issue is present is that os-prober returns without finding the other operating system.

…so you have windows in EFI, manjaro in BIOS … and are maybe using the ESP as your boot partition?
Sounds like a recipe for a bad time. You have no reason to choose legacy/BIOS … and since your current system is already EFI … it is rather advisable to do the opposite - that is keep using EFI if you already use EFI.

If I were you, I would reinstall with that in mind (and remember to select BUT NOT FORMAT the existing ESP for /boot/efi … the ~500mb fat32 one)

And FYI the link you posted explicitly states this…

Computers with preinstalled Windows (Windows 10) is computers using UEFI firmware. This guide is a generic guide targeted at UEFI installations .

Exactly - the BIOS setting Legacy mode or CSM is the recipe for disaster.

Unless your require boot from an MBR media you should never activate CSM on EFI based system on a permanent base but rather enable when needed and disable when done.

Phew, I just passed near total bricking of my windows partition, as my total beginner fascination for neat grub commands made me flag my partition as hidden. I undid the changes and windows works just fine now. I never managed to find a way to boot my UEFI windows partition from grub, after going through the documentation and trying their example code snippets. Trying to access the ntldr.mod module from grub through insmod ntldr returns a file not found error. I remember reading somewhere that this module doesn’t get included when running in legacy bios mode, hence the error. Oh well, the experience has been very insightful, I learned tons of new stuff about partitions and bootloaders!

Sounds like a plan! I’ll try it and come back with the results. I remember formatting my boot&$esp along with the rest when I did my Manjaro reinstalls, I guess I dodged a few bullets there.

Thank you for the CSM clarification, I didn’t know it stood for Legacy mode. Both my Manjaro (/dev/sdc) and Windows (/dev/sda) partitions seem to have MBR partition tables (pastebin, under efibootmgr -v). I’ll check to see if Windows is bootable in fully UEFI settings, and install if I don’t see any issues.

After reading your pastebin info, it seems you have installed Manjaro in UEFI while you might have Windows in MSDOS/Legacy.
So, before you try any new adventures, please make this clear, so you take the proper actions.

Whatever, regardless, notwithstanding…
The installer should not proceed in uefi to a msdos disk.
Trying hard not to say it again. I failed trying.

2 Likes

Thanks a lot for all the help. I haven’t done the installation yet, and I’ll take a moment to clarify the status of my windows partition. In system info, Windows 10 boots in Legacy mode and won’t boot when CMS support is disabled in BIOS options: it is a BIOS machine. The paste bin also confirms this, I now know more and can see it now.
The point where I got confused was that my machine was recent and I had wrongly assumed it was a UEFI syste. When the installer first booted it showed EFI, which only affirmed my wrong assumption. The original reason why I had installed an EFI Manjaro with Legacy mode on was because in my total confusion, I wrongly read the original wiki. Doubly mistaken, ouch.

Right? At first I thought my memory was wrong, but you made me curious. I tried booting up my live USB while extensively changing all possible options of my gigabyte BIOS, i.e. Windows feature (= Other OS or win 8/10, this changes further options), Storage Boot Option Control (= UEFI or Legacy) and CSM Support (Enabled or Disabled). None of these have direct control over the installer, because I was using the quick boot menu; boot priority made me boot in windows before my USB. There, 3 different options are given to boot the USB live version: a standard USB option, which makes the installer recognize the system as BIOS, a UEFI:USB option which makes the installer recognize the system as EFI (and a third option, because the system spots both grub.efi and boot.efi, I believe). I.e the installer recognizes its own bootup configuration, not the configuration of other partitions/disks. Circumventing this fail-safe mechanism by mistake through quick boots/boot overrides was my third error.

So it seems clear now what the fix will be for my system: installing Manjaro after booting the installer with CSM support and Legacy Storage Boot Option Control. Replace (not format) the old EFI root with the new root (mount point = /), replace the old /boot/efi, fat32, partition with the new BIOS /boot (mount point = /boot/). Does that sound about right?

No.

Print out output from terminal of

sudo parted -l
sudo blkid
findmnt -s
test -d /sys/firmware/efi && echo UEFI || echo BIOS

ps: I’ll reply you about 2 hours later.
Busy time here, for the next 10 days.
Too much festivities.

1 Like

Np, have fun (^^). I’m still capable of booting both without issue.
Here’s a paste bin with all the info:
https://pastebin.com/XpSLC9MA

Sorry, your disk sdc is msdos.
You need to reinstall.

It may work presently, but it will not last.
Make you sdc gpt and prepare partitions ready before installing.

ps: read here for why we shouldn’t install uefi to msdos.

1 Like

Yes, reinstalling looks like the good choice. However,

My sda is msdos with legacy windows too. If I install Manjaro the msdos/Legacy BIOS way, then I’ll have everything msdos (sdb is just an extra gpt storage drive. windows/sda can access it so itll be fine). Doesn’t that sound like a better option?

I.e. instead of upgrading to gpt/uefi. Isn’t it better to downgrade to msdos/bios?

Yes.
Best, if possible, use the same disk as windows.
If you use another disk, remember to ‘set grub’ to the windows disk (usually sda). That’s a common failing for most multiple msdos disk setup.

1 Like

Oh I see. Surely I can ask windows to shrink and offer me a small 4th partition 5mb on which i can mount grub (/boot/, boot flag only). I can format sdc, and mount manjaro’s root (no flag, mountpoint /) and some swap(mountpoint linuxswap, flag swap) on all the space there.

I won’t do the reinstall right away; i have some things for 2 hours. Hence, probably tomorrow.

In msdos/bios-legacy, there’s no need for /boot partition.
You can if you want to, but there is no advantage, in fact, more hassles and more things to go wrong and more difficulties to fix if things go wrong. {But I guess many people are bored :laughing:}

However many disks we have, there need to have only one swap partition, in a fixed internal disk, preferably. If swap is in an external disk and is not there when booted, there will be errors and boot will fail. swap is optional and newer computers with much ram don’t really need ram - okay, caveats apply, not worth to discuss, leave it to the experts who uses VM, etc…

1 Like

Hmm…what do you mean by that?
I use CSM/Legacy exclusively with zero problems on a dual-boot machine. The installed Manjaro even uses GPT.
The reason for that is a rather bad EFI implementation of the motherboard.

Or do you mean that changing from one to the other is a bad thing? That is definitely true.

You don’t “need” to do that. In fact, I suggest you

  • install Manjaro at sdc (where it was already), leaving the drive partition scheme as “msdos” (not GPT),
  • delete all partitions (actually, you don’t need /boot/efi in an MSDOS/MBR installation)
  • use the installer to create / (root) and swap and possibly /home for your local/personal data.
  • Install GRUB on the same (Manjaro) drive, currently /dev/sdc
  • Set your BIOS disk boot priority to the Manjaro drive.

This way you can even use your BIOS Quick Boot menu to boot to either Windows drive/bootloader or Manjaro drive/bootloader. IMHO this is core clear and lets you more options.

1 Like

Not if the Manjaro drive is not sda (it is sdc).
Yes, he can bring it up at bios level if he wants sdc to boot but he has to do that everytime when he boots. He doesn’t need to do that if he ‘sets mbr’ to sda, which is not the manjaro drive.
Have you forgotten how msdos/bios-legacy works? :laughing:
I still have a msdos/bios-legacy system.

ps: maybe if he has a msi… :rofl:

2 Likes

Not in my experience. I only have MSDOS/BIOS Legacy drives.

Right back to you!! :mask:

Fact 1
In a msdos/bios-legacy system, without touching bios setup or boot setup, system will boot the bootloader from the mbr of the primary drive, commonly called ‘sda’.

We don’t need Fact 2 or Fact 3… :grin:

1 Like

Correction:

In my msdos/bios-legacy system … of the primary drive, commonly called ‘sda’

Answer:
In all msdos/bios-legacy systems I have worked with (several from other users), there is a BIOS setting to choose Boot drive priority. This setting is permanent for subsequent boots and can be overridden from a Quick Boot selector with a shortcut (different than normal BIOS Setup shortcut).

Please continue to your embarrassment… :laughing::rofl:

1 Like