After attempting to install Fedora twice, boot partitions and bootloaders appear to be misconfigured

Before I get into the problem, allow me to provide an overview of my system. I have seven drives, one of them is external and not connected, so we’re talking about sda through sdf.

sda is the original SSD (samsung 850 evo) from when I built my computer.
sdc is another SSD (samsung 860 evo) that was installed later.

If I recall correctly, I did a split installation of Windows and elementaryOS more than six years ago. Eventually I took eOS off and installed sdc, along with pop!_OS.

At this point my bootloader was on sda1 (still named ‘ubuntu’ from the popos install).

Eventually I installed Arch and had a working bootloader on sdc1. Around this time last year an Arch update broke my grub install on sdc1, but I could still write to grub on sda1 and decided to use that.

Fast-forward a year and grub was still an issue on my arch install, I wanted to become a little more familiar with Fedora anyway, and I decided to try out Fedora 38.

I was hoping installing Fedora on top of sdc would rewrite its partitions and give me a grub install that would allow me to chose between Fedora and Windows.

After the first installation, my motherboard only identified grub on sda1 and Windows on sda2. I then installed Fedora on sdc again. Still no working grub (or one with expected behavior), so I checked the partitions with gparted and noted that sdc1 wasn’t flagged for boot, so I added that flag. I can see grub text when I boot into the Fedora partition, it’s incredibly large and passes through to plymouth and then gdm.

I attempted grub-mkconfig -o /boot/grub/grub.cfg and was greeted with multiple error: ../grub-core/disk/diskfilter.c:502:invalid volume. errors.

If I am correct, sda was originally formatted as an MBT drive and then later I used MBR2GPT to change it. sdc has always been a GPT drive.

Here is a link to my anaconda log.

Matrix Thread Describing and Discussing This Issue

Here is a link to a mastodon thread where I was discussing my issue.

At this point I am trying to determine how to restore a “fedora correct” grub install on sdc that I can customize and also use to boot into Windows.

Grub, booting, and boot partitions have always been difficult for me to wrap my head around. Any suggestions are welcome. Please let me know if I can provide any more information.

Below, you will also find cfdisk screenshots of sda and sdc.


The BIOS boot is user on a GPT disk unit if you want to boot it in NON-uefi mode. That is where grub2 stores the rest of the boot loader that wouldn’t fit in the Master Boot Record.

Are you installing Fedora from scratch?
If so, did you boot the install image in legacy BIOS mode?

The BIOS boot is user on a GPT disk unit if you want to boot it in NON-uefi mode. That is where grub2 stores the rest of the boot loader that wouldn’t fit in the Master Boot Record.

So I should use external media to change the type of sdc1 to ‘EFI System’ like on sda1?

Are you installing Fedora from scratch?

I am using the normal fedora installer from getfedora.org, written to a 4GB USB stick using gnome disks ‘Restore Image’ function.

If so, did you boot the install image in legacy BIOS mode?

I’ve never specified a legacy BIOS mode as far as I know.

Per the Working with the GRUB 2 Boot Loader article, I attempted to reinstall grub. Firmware echoed back BIOS, and so I attempted to install grub on either drive, and both attempts failed.

[root@fedora shaun]# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
BIOS
[root@fedora shaun]# grub2-install /dev/sda
Installing for i386-pc platform.
grub2-install: warning: ../grub-core/partmap/gpt.c:194:this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub2-install: error: embedding is not possible, but this is required for cross-disk install.
[root@fedora shaun]# grub2-install /dev/sdc
Installing for i386-pc platform.
grub2-install: warning: ../grub-core/partmap/gpt.c:194:this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub2-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub2-install: error: will not proceed with blocklists.

I do not see any information about how you specified the installation method or how the disks were partitioned.
I assume that since you said that windows was on sda and that sda1 was an efi partition it must have been gpt at the time windows was installed. Windows will only install in uefi boot on a gpt partitioned drive.

From all your descriptions and following the logic fedora uses for installation I must note a couple things.

  1. Fedora will only install to unallocated space unless one uses the custom install process and defines the already existing partitions to use and reformats them.
  2. As long as adequate space remains in the efi partition fedora is quite happy to share an efi partition with windows or other OSes.
  3. It appears you have abandoned all the OS you previously had installed on sdc.
  4. If the bios is set to CSM mode and is able to boot either legacy or uefi, then by default fedora will boot in legacy mode unless one specifically selects the uefi mode during boot of the installation media. Only when installing in legacy mode does fedora create a bios boot partition.

If this is a correct evaluation then the simplest path I can see is

  1. boot the install media in uefi mode (it will then install fedora in uefi mode)
  2. Use gdisk to remove all partitions from sdc and leave it with only an empty gpt partition table.
  3. start the installer and allow it to use both sda and sdc for installation. (I assume sda is fully allocated at this time)
  4. perform an install using automatic partitioning. It should use sda1 for /boot/efi and should create the remaining partitions in the open space on sdc (/boot as ext4 and btrfs subvolumes for root and home)

My motherboard is not using CSM or any BIO-compatibility mode.

I purged sdc and made sure it was formatted as GPT using gparted.

I then used Anaconda to select sdc and sda, had it remove the existing EFI partition on sda. Still using automatic storage configuration.

Fedora installed successfully. It even overzealously used some spare megabytes in sda to partially use for the Fedora install. Grub still seems to be complaining about something related to tocblocks. Windows has disappeared from my UEFI boot menu.

From what I understand, grubby is the preferred Fedora tool for customizing a grub installation. Its use is still opaque to me right now, I will have to continue reading.

i wish I could use a GUI application like grub-customizer, though I imagine its use is not recommended on Fedora as I’ve heard likewise regarding Ubuntu and Arch.

I ran into an old problem behavior where my internal drives do not auto mount by default. A previous attempt to configure my drives with Gnome Disks a year or two ago resulted in broken permissions. I ended up manually writing my fstab entries so the internal drives would automatically mount correctly. Am I likely going to have to manually configure again to regain this behavior?

My ISP suffered an outage and I had to begin work, so this is as far as I have progressed on my own.

If you really did that, then you can no longer boot windows. Some Windows expert might be able to tell you how to recover from that.

The EFI partition (also known as ESP) is supposed to be shared by both Windows and Linux, as this partition is used by the UEFI firmware, and you have only one of that on your system.

You need either the original installation media or to make a rescue USB stick to recover the bootloader (available online at MS site), you should also be able to select the Windows partition to boot from the System BIOS screen, at least for now to boot Windows. You need a running Windows to make the recovery USB.