booster icon indicating copy to clipboard operation
booster copied to clipboard

Usable with Grub?

Open abenz1267 opened this issue 3 years ago • 19 comments

Hi,

the doc only describes updating systemd-boot, but does this work with grub as well? What do i have to do to make it work? When i run grub-mkconfig it doesn't find the new booster images. They are present in the /boot folder though.

Regards

abenz1267 avatar Feb 17 '21 10:02 abenz1267

I do not use grub myself. But there is a great reply at reddit that worth quoting here:

GRUB by default only looks for some predefined initramfs file names, as you can see in /etc/grub.d/10-linux. If you want it to also search for Booster–generated images, you could duplicate that config file as 11-linux-booster (or 9-… if you want Booster entries at the top of the list) and patch it like this:

https://gist.github.com/Saancreed/7603709409c4220659b8e0e0b62e7a31

This works for me with submenu disabled, not sure if there would be any issues if it wasn't. Of course, you can always roll your own config but yes, it's GRUB that has to be configured for this.

So GRUB looks for hardcoded image names. And this list need to be patched manually as for now.

anatol avatar Feb 17 '21 14:02 anatol

Is there any chance you try to compile grub2 with this patch and see if it makes the booster image detection possible?

diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index e8b01c0d0..8e9cbaa9e 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -214,7 +214,7 @@ while [ "x$list" != "x" ] ; do
   for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
           "initrd-${version}" "initramfs-${version}.img" \
           "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
-          "initrd-${alt_version}" "initramfs-${alt_version}.img" \
+          "initrd-${alt_version}" "initramfs-${alt_version}.img" "booster-${alt_version}.img" \
           "initramfs-genkernel-${version}" \
           "initramfs-genkernel-${alt_version}" \
           "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
index 3b1f47049..07b58a676 100644
--- a/util/grub.d/20_linux_xen.in
+++ b/util/grub.d/20_linux_xen.in
@@ -283,7 +283,7 @@ while [ "x${xen_list}" != "x" ] ; do
        for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
           "initrd-${version}" "initramfs-${version}.img" \
           "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
-          "initrd-${alt_version}" "initramfs-${alt_version}.img" \
+          "initrd-${alt_version}" "initramfs-${alt_version}.img" "booster-${alt_version}.img" \
           "initramfs-genkernel-${version}" \
           "initramfs-genkernel-${alt_version}" \
           "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \

anatol avatar Feb 26 '21 18:02 anatol

cc @eworm-de

anatol avatar Feb 26 '21 18:02 anatol

It sort of works. Sadly it doesn't detect all my kernels:

ls -lh /boot/booster-*.img                                                                                                                                               8:19
Permissions Size User Date Modified Name
.rw-r--r--  4,6M root 26 Feb 19:31  /boot/booster-linux-xanmod-cacule.img
.rw-r--r--  3,3M root 26 Feb 19:28  /boot/booster-linux59.img
sudo rg booster /boot/grub                                                                                                                                               8:28
/boot/grub/grub.cfg
266:            initrd  /boot/amd-ucode.img /boot/booster-linux59.img

ghost avatar Feb 26 '21 19:02 ghost

Interesting.. Do you have /boot/initramfs-linux-xanmod-cacule.img? Does grub detect it correctly?

anatol avatar Feb 26 '21 19:02 anatol

Interesting.. Do you have /boot/initramfs-linux-xanmod-cacule.img? Does grub detect it correctly?

yes and yes

ghost avatar Feb 26 '21 19:02 ghost

@lavalampa unfortunately GRUB expects only 1 initramfs per kernel. It uses only the first image in the list and the other initramfs images are ignored. initrd- and initramfs- are at the beginning of the list and they have higher priority. You can change the patch and put booster to the beginning of the list.

anatol avatar Apr 05 '21 15:04 anatol

A preview for booster support has been added to the Arch's GRUB package https://github.com/archlinux/svntogit-packages/commit/177e28ebb2d3c4c6151a502401928615e69e58f8#diff-3e341d2d9c67be01819b25b25d5e53ea3cdf3a38d28846cda85a195eb9b7203a

Please build grub from the repo and try it with booster. Please share your experience.

anatol avatar Apr 26 '21 15:04 anatol

Or just test grubpackage version 2:2.06rc1-2. 😉

eworm-de avatar Apr 26 '21 18:04 eworm-de

Or just test grubpackage version 2:2.06rc1-2.

Woot! Thank you for the package release.

anatol avatar Apr 26 '21 18:04 anatol

Or just test grubpackage version 2:2.06rc1-2. wink

While grub now correctly finds the booster images, the generated grub.cfg doesn't seem to be correct, copy paste from my comment on the commit:

The generated /boot/grub/grub.cfg seems to be missing the actual img for the first menu-entry, it's just initdr /boot/amd-ucode.img instead of /boot/amd-ucode.img /boot/booster-linux-zen.img for example

abenz1267 avatar Apr 26 '21 19:04 abenz1267

Works for me... Anybody else wants to share experience?

eworm-de avatar Apr 26 '21 19:04 eworm-de

Or just test grubpackage version 2:2.06rc1-2. wink

While grub now correctly finds the booster images, the generated grub.cfg doesn't seem to be correct, copy paste from my comment on the commit:

The generated /boot/grub/grub.cfg seems to be missing the actual img for the first menu-entry, it's just initdr /boot/amd-ucode.img instead of /boot/amd-ucode.img /boot/booster-linux-zen.img for example

I have the same issue, the default archlinux entry in grub is not using any initrd images, just intel-ucode.img. I have to manually select the booster entry.

Kyuzial avatar Jul 27 '21 17:07 Kyuzial

A workaround is to set

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

in /etc/default/grub to "survive" a reboot, but maybe @eworm-de could take a look into this issue.

bjo81 avatar Sep 28 '21 20:09 bjo81

In /etc/grub.d/10_linux in order for the generation to work as expected after this line: for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \ this should be added: "booster-${version}.img" \ The result is that two entries for booster images are generated - this is not ideal, but I don't have time to investigate further.

borislavba avatar Jun 07 '22 10:06 borislavba

So will GRUB be officially supported or not? If yes, there should be setup instructions added to the readme and manpage. If not, there should be a warning notice that it's not supported, so people don't try.

deathtrip avatar Sep 14 '22 22:09 deathtrip

Only "(booster)" version of the grub menu item works for me also. The Default Linux version just locks up. I'll switch back to mkinitcpio until it's working as expected. I see it's doing the same as: https://github.com/anatol/booster/issues/29#issuecomment-827083752

meltdown03 avatar May 23 '23 04:05 meltdown03

I use booster with GRUB, so i think we can safely say that it's compatible with grub. @meltdown03 The default menu entries are probably for old mkinitcpio images. You need to regenerate your grub.cfg. When using LUKS you can't use mkinitcpio and booster images simultaneously, without changing the kernel command-line.

deathtrip avatar May 23 '23 12:05 deathtrip

Can confirm GRUB works beautifully on Void Linux. Perhaps you could try regenerating grub.cfg as suggested?

Arzumify avatar Jul 20 '23 10:07 Arzumify