Hello, I’m a long-time Linux user, first time Fedora user (well apart from that time like 10 years ago when I tried it shortly)!
I’ve installed Fedora alongside Manjaro on my pc without installing the bootloader.
I did that like so in Anaconda:
To decline installation of a new boot loader, select the device currently marked for boot and click the Do not install bootloader button. This will remove the tick and ensure GRUB2 is not installed on any device.
Why not install the bootloader: Doing so would hand control of Grub to Fedora and, crucially, install the Fedora version of it. Standard Grub is unable to boot Manjaro, which therefore comes with a tweaked implementation of Grub, so keeping that one is necessary to dual boot anything with Manjaro.
The installation was successful, Fedora is now on my system, but I can’t boot it.
I proceeded to update Grub from inside Manjaro, but the grub-update mechanism seems to not detect Fedora on the disk. Do you know any reason why that could be the case?
Here’s partition information of my drive:
sudo parted -l ✔
Model: ATA CT2000MX500SSD1 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 2097kB 317MB 315MB fat32 boot, esp
2 317MB 1669GB 1669GB ext4
3 1669GB 1677GB 8590MB linux-swap(v1) swap, legacy_boot
4 1677GB 2000GB 323GB btrfs
Thank you. I ran this under Manjaro (btw I also started a thread in MNJ forum, and some seem to think I should ask here instead - oh, well…):
sudo grub-mkconfig -o /boot/grub/grub.cfg ✔
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-5.15-x86_64
Found initrd image: /boot/intel-ucode.img /boot/initramfs-5.15-x86_64.img
Found initrd fallback image: /boot/initramfs-5.15-x86_64-fallback.img
Found linux image: /boot/vmlinuz-5.10-x86_64
Found initrd image: /boot/intel-ucode.img /boot/initramfs-5.10-x86_64.img
Found initrd fallback image: /boot/initramfs-5.10-x86_64-fallback.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Adding boot menu entry for UEFI Firmware Settings ...
Found memtest86+ image: /boot/memtest86+/memtest.bin
done
I believe os-prober was executed here, yes? For some reason, it seems not to find Fedora.
Hmmm.
Manjaro grub is tweaked and cannot boot fedora, and you say that fedora cannot boot manjaro. This seems almost a catch-22. Since you did not install fedora grub you have no clue if it actually can boot manjaro.
However, it is necessary that fedora have an ext4 partition for /boot. Grub (of any flavor) cannot read a btrfs partition. I see no partition where fedora could store the boot images that are mandatory for booting.
To boot fedora in efi mode it needs an efi partition and boot loader. Since you prevented loading grub to the efi partition you did not get the part needed to boot.
I would
look in the efi partition and see what the directory structure is. On fedora that is usually mounted at /boot/efi and contains EFI/fedora. I suspect it is similar for manjaro but with a different name.
reinstall fedora, wiping out the current btrfs partition then do an automatic install which will create the /boot partition as ext4, use the existing efi partition as /boot/efi, and create a btrfs partition for the / and /home subvolumes.
I really believe that it will then be able to boot, and will give you a menu entry in grub to boot manjaro.
Typically the Manjaro bootloader can boot any other Linux distro (because they normally use a standard implementation of Grub). Are you saying that’s not the case for Fedora? Is Fedora’s bootloader also tweaked (but different from Manjaro’s)?
The /boot/efi partition on my system is fat32, which thus far I believed was the only possible file format for a boot partition
Well, both are there already…
Is this the information I’m looking for?
[catull-mnj /]# cd /boot/efi
[catull-mnj efi]# ls
EFI
[catull-mnj efi]# cd EFI
[catull-mnj EFI]# ls
boot Manjaro
[catull-mnj EFI]#
I’m sorry to report this did not go well. I have a bootable install of Fedora now, but made Manjaro unbootable in the process. This makes sense because I did delete the /boot/efi partition that was created by Manjaro and installed the Fedora one - at least I think that’s what the installer ended up doing. I gotta say, Anaconda wasn’t being friendly to me, I don’t understand its behavior.
Anyways, when I try to boot Manjaro from the Fedora boot menu, it just goes to a backlit black screen forever until I power down the computer. When I boot Manjaro in fallback mode, this happens:
Just one quick question with a very important answer.
When you installed fedora did you tell it to format the esp partition? or did you allow it to find and automatically use it without formatting?
If the content of /boot/efi/EFI now has only Boot and fedora then you formatted it. If it contains Boot, boot, Manjaro, & fedora then you did not format it.
If it was not formatted then the UUID will be the same as it was before the fedora install. If it was re-formatted then it will have a new UUID.
The gist of the story is that if you did not format the efi (esp) partition then you should be able to boot with steps 3 & 4 in that list. If you did format it then you wiped out the manjaro boot loader and will not be able to boot manjaro. In that case you will have to do another install of manjaro to recover the boot process, but do not format the efi partition during the install.
As far as I can tell, the black screen is to be expected, since Manjaro can only be booted by Manjaro’s grub. In this case, though, it seems like Manjaro is using its existing configuration which refers to a partition that no longer exists (because you deleted it), hence the the device ... not found.
You’ll need to restore Manjaro’s grub (or you can fully reinstall Manjaro). Use Manjaro live and follow a guide like this, or see the wiki page. After that you should be able to do step 3 onward.
So yeah, formatted it I guess.
However, I think Anaconda actually provided no option to do that any other way. It wasn’t possible to assign the installation to the existing boot partition. When I tried, it just kept insisting that I hadn’t done that yet and wouldn’t proceed to the installation.
If there was a way I could have done it though (install Fedora leaving the existing boot partition in place), I’d like to know what it was. Your instructions said to just leave all the defaults in place.
Here is what the partition table now looks like:
[ben@fedora ~]$ sudo parted -l
Model: ATA CT2000MX500SSD1 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 316MB 315MB fat16 EFI System Partition boot, esp
2 317MB 1669GB 1669GB ext4
3 1669GB 1677GB 8590MB linux-swap(v1) swap, legacy_boot
4 1677GB 2000GB 323GB btrfs
Model: VendorCo ProductCode (scsi)
Disk /dev/sdb: 8053MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 8053MB 8052MB primary fat32 boot, lba
This brings me to another point that may have gone wrong:
Reboot into UEFI settings and put Manjaro at the top of the boot order.
#1 is just a flash that I forgot to remove, there’s really only two Fedora options.
In the current Grub menu, the two Fedora options are still at the top.
Completely reinstalling Manajaro will be last resort, I’d rather try anything else first - so will follow the Wiki page for restoring the bootloader now.
I think what I would do in this case is not have Manjaro and Fedora share the same grub. Since Fedora seems to play better with users in general, I would install Fedora first and let Fedora manage the main grub/efi and then install Manjaro using a separate /boot partition and not touching efi, and then let Fedora detect and chainload the Manjaro grub partition. That way there’s no worry about one distro inadvertently breaking the other’s grub since it seems Manjaro depends on some custom hacks.
Other way round in this instance (Manjaro loading Fedora grub), but the same concept. There shouldn’t be a need for seperate EFI partitions though, if that’s what you mean by
Wouldn’t Fedora just continue to configure grub to try to boot Manjaro directly? The end result is the same anyway so it doesn’t really matter how you go about doing it.
Sorry, I should have been clearer there; you should install Fedora with ‘Storage Configuration’ set to ‘Automatic’, this should put the bootloader on the existing EFI partition without recreating it.
At the moment, you don’t have a separate boot partition for Fedora (#4). You don’t necessarily need a separate /boot but Anaconda creates one when you use automatic partitioning. You can install again in this way if you want but you should be fine continuing as is.
So I finally fixed my issue booting Manjaro, it works again. Now the repaired Grub is still missing that entry for Fedora. @thegooselord, your instructions says to enter this in /etc/grub.d/40_custom:
menuentry "Fedora Workstation Live 36 Beta" {
insmod part_gpt
set root='hd0,gpt1'
chainloader /EFI/fedora/grubx64.efi
}
Will this also work for my scenario, or do I e.g. need to replace set root='hd0,gpt1' with something else?
It’s generally better to use uuid instead of hdX since drive number can potentially change. blkid command can be used to find the right UUID to use instead. So, try set root="UUID=<replace with uuid from blkid command>"
Doesn’t grub require the ‘hd0,gpt1’ syntax ? since it has not yet gotten to the kernel and must know which physical device & partition to access from the bios level? The UUID or /dev/sdX syntax becomes usable once the kernel starts loading things, thus the use of the UUID in the kernel command line.
That UUID is for the Fedora partition /dev/sda4.
The Grub menu now has an entry for Fedora, but it doesn’t boot - there’s a message saying something like: “No server provided”
EDIT: I also tried the UUID EC5E-9DE5 of /dev/sda1 which is the boot partition, but same result.
I wonder if the syntax is good: set root="UUID=ae065b6d-d345-4ac6-8b5d-460ab4f2e7b7"
or set root=UUID="ae065b6d-d345-4ac6-8b5d-460ab4f2e7b7"?
also, double quotes or single ones?