Grub.cfg from other distros can't boot EndeavourOS

I multiboot linux systems because I write C code and compiled output is not consistent in size.

My main boot is Fedora 32,
In the grub.cfg are entries for EndeavourOS. Except for the recovery entry, none of them work.

I also have an entry for arcolinux and Fedora’s grub.cfg, all arcoLinux entries work.

By the way, I can try from mint to Endeavour, or from SUSE Leap to Endeavour, with identical problem.

Would like to be more active with EndeavourOS if I can boot it from any other distro’s grub.cfg

You could try rEFInd instead of grub, see here:

You could perhaps make a custom.cfg in your main distro for booting EOS.

2 Likes

Does Endeavour use the same grub system as Manjaro?
Because if it does, all you have to do is install EnOS’s grub as the master.

4 Likes

I too think you might be better using rEFInd because of this issue and multibooting. I am able to boot from either grubx64.efi or the vmlinuz-linux image depending on the setup.

If you let EndeavourOS be in charge of booting, all should work as expected.

The problem you’re having is caused by mainly two things:

  • Arch based distros handle microcode at boot time differently compared to many other distros, so grub.cfg must be generated accordingly
  • developers of grub and os-prober have not taken the above seriously, even though this particular problem has been reported to them already many years ago

That’s why EndeavourOS has a fix for both grub and os-prober, and it can boot all systems (that I have tested) without issues.

4 Likes

Hi Manuel
Yes, I am aware of the differences. But Arko Linux does not suffer the problem. Arco Linux’ can be booted from Mint, Ubuntu, Fedora32, SuseLeap15, MakuluLinux and itself. That compatibility of one to the other, shouid include EndeavourOS. I have been a Fedora user for almost 20 years, and I did have EndeavourOS in my boot list. I set Endeavour aside, hoping that boot compatibility wiil be implemented soon. I know that from Endeavouros I can boot the others, both I would like the converse.

FYI. If I choose the Emergency recover boot, it works.

Could you show the contents of file /boot/grub/grub.cfg from Fedora here? That is in charge of booting in your machine, right?

I’m guessing that the menu entry for Arcolinux is different from other Arch based distros there. Would be interesting to see. :smile:

From my experience, Arco does not bother with the -ucode.img file at all, so that it has no problems being booted by ‘others’. Of course, none of the mitigations are then present either…

Which is one of the reasons that I use rEFInd, and can set for myself whether amd-code.img is loaded - including for Arco. Not to mention avoiding the grub-rebuilding exercises along the way…

1 Like

Right, not using the microcode is a no-no. They might have another solution for the microcode, but I just don’t know their design.

Yep. rEFInd is bulletproof in my opinion.

interesting to cheat at their GitHub

This is from Arcolinux’ grub.cfg:

menuentry 'ArcoLinux Linux' --class arcolinux --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-029907d2-954d-4696-b7a6-dec096d0deec' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod ext2
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root  029907d2-954d-4696-b7a6-dec096d0deec
	else
	  search --no-floppy --fs-uuid --set=root 029907d2-954d-4696-b7a6-dec096d0deec
	fi
	echo	'Loading Linux linux-zen ...'
	linux	/boot/vmlinuz-linux-zen root=UUID=029907d2-954d-4696-b7a6-dec096d0deec rw  nowatchdog loglevel=3
	echo	'Loading initial ramdisk ...'
	initrd	/boot/intel-ucode.img /boot/initramfs-linux-zen.img

It does use the microcode. This is identical to Endeavour’s:

initrd /boot/intel-ucode.img /boot/initramfs-linux-zen.img

2 Likes

I guess that is what Arcolinux generated, I’d like to see what non-Arch distros generate for Arcolinux.

Sure. That would be the most interesting to see in this case. I just wanted to share that Arcolinux does use intel-ucode.img since there seemed to be some uncertainties about it further up.

1 Like

Obviously Arcolinux uses microcode like all Arch based distros do.

But we heard in the first post that e.g. Fedora can create a grub menu entry that works with Arcolinux? That is puzzling.

Unless Arcolinux (or some other Arch-aware distro) is in fact in charge of booting? I guess that’s the only possible explanation…

1 Like

Yes, indeed. Why it cannot then generate the right entry for EOS? I know that MX Linux can create the right line and Ubuntu/Mint not. If there is other implemetations of Grub in other distros that can do it, I don’t know.

let me be very CLEAR about this
many version use by Ubuntu& Debian are knows as Grub-customizer , and many times they uses version 2.02 Grub ( 2017 )
they NEVER boot kernel img with microcode , they is bug report on their side to not load microcode before booting microcode

in Git gnu savannah
https://git.savannah.gnu.org/cgit/grub.git

version for support microcode
https://git.savannah.gnu.org/cgit/grub.git/log/?qt=grep&q=microcode
( starting in 2018 )

so the bug concerns theirs Grub-customizer not Grub arch ( or manjaro or arcolinux or EOS )
in case of manjaro that all users is asking how to boot on others distro
it started in 2014 or 2015 to support boot with microcode ( version 2.02 - 2.03 )

you can create bug report for others distributions

You don’t mean the application "Grub-Customizer?

Name                 : grub-customizer
Version              : 5.1.0-2
Description          : A graphical grub2 settings manager
URL                  : https://launchpad.net/grub-customizer
Licenses             : GPL3
Repository           : community

Just to clear up some of the confusion about Arcolinux - here is the entry it uses to boot itself (straight from /boot/grub/grub.cfg on an Arcolinux setup):

### BEGIN /etc/grub.d/10_linux ###
menuentry 'ArcoLinux Linux' --class arcolinux --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-868e5188-dfc4-48fc-bf90-f8ae060ecadb' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod ext2
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root  868e5188-dfc4-48fc-bf90-f8ae060ecadb
	else
	  search --no-floppy --fs-uuid --set=root 868e5188-dfc4-48fc-bf90-f8ae060ecadb
	fi
	echo	'Loading Linux linux ...'
	linux	/boot/vmlinuz-linux root=UUID=868e5188-dfc4-48fc-bf90-f8ae060ecadb rw  quiet resume=UUID=d2a430ec-1210-4ecb-aec6-ade4159bc0fa audit=0 loglevel=3
	echo	'Loading initial ramdisk ...'
	initrd	/boot/initramfs-linux.img
}

As you can see it ignores microcode by default - and without it there ‘other’ distros can create an ordinary grub entry that will work.