Error Message Libreboot X200

#1

Hi

When booting the kernel, an error message displays that file /boot/grub/grubenv cannot be found. How do I report a bug in Manjaro? Or do I report in upstream Arch?

Mint did not have this error, so I assume Manjaro specific bug. Libreboot itself has not had a stable release since 2016, tho development continues apace, so kudos to Manjaro for sleeping with zero errors. Mint would get stuck in eternal snooze, requiring a hard reset.

#2

Is not a bug but the way you made the partitions/install.
Have a look from here on:

1 Like
#3

Hmmm, OK. Nothing worked for original poster, I'm stuck too. I figure it's a bug with Libreboot and/or Manjaro. Minor annoyance. No suspend was a biggie with Mint. Nuke & paved over Mint. Succeeded with hibernate script, tho! Arch Wiki was scary!?!

#4

What fs are you using? btrfs, f2fs or ext4?
Since the time the link was referred to, the new manjaro grub now uses extensively grubenv from previously none. So the link is no longer valid.

Now, What fs are you using?

#5

I am using defaults.

#6

Right. Have a good day lest I descend into insufferable condescending hostility.

#7

Default: ext4 according to GParted.

#8

Ah, sorry! That may be the default for the XFCE spin, not necessarily KDE or GNOME or otherwise. My most abject apologies! The universe does not revolve around me, nor acknowledge me as Grand Dictator for Life.

#9

At terminal

sudo rm /boot/grub/grubenv
sudo grub-editenv /boot/grub/grubenv create

At /etc/default/grub
GRUB_DEFAULT=0
must not be 'saved'
Comment out
#GRUB_SAVEDEFAULT=true
Put in
GRUB_TIMEOUT_STYLE=menu

Back At terminal...
grub-install
update-grub

Then go to new grub.cfg, make a copy to grub.cfg.original
Modify manually that grub.cfg as follows..

Totally delete
the following secion

if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

Now I don't use libreboot, but if there are steps to make this grub into the libreboot grub, you must do the steps again for it. Flash it to rom? Heh heh.

When you have new kernel, redo all above steps.

ps: reminder - don't forget to do grub-install,. Do not miss this step, not just update-grub.

#10

Thx for your detailed technical reply. Hacking is doing something complex for fun. Rebuilding GRUB every kernel sounds anti-fun?!? The thing with Libreboot is it has 2 GRUBs?!? I'm just a copy & paste merchant, arcane commands mean nothing to me (time to learn something?)

I guess it could well be a Libreboot bug, I'll wait till next stable surfaces, unless flashing Coreboot over the top an option? That seems to dispense with the "libre" approach & be more pragmatic. However I think it not as simple flashing a BIOS in Windows. Hmmm...

#11

I don't know if libreboot needs flashing after a change of grub.
If it don't need flashing, just create that new grub that don't have grubenv (or search of it).
But it looks certain that libreboot cannot handle any instance or search of grubenv.

In a normal grub, certain filesystems in the (btrfs,f2fs) cannot handle grubenv as well but removing searching for it in grub (savedefault, now this new manjaro grub has lots more unnecessary items in it) will do. Even if not done, a spurious error message that did no harm will appear and will still boot.

BTW, we don't need any OS grub, or grub-install or update-grub to write in a grub.cfg that will work.
We can write one out for libreboot without any grubenv or lots other complicated stuff.

Thats's all it needs (really. see here. ) followed by your entries.

set root='hd0,msdos1'
search.fs_uuid xxxxxxxxxxxxxxxxxxxxxxxx root
set prefix=($root)/boot/grub

set gfxpayload=1280x1024x32
gfxmode=1280x1024x32

default=0
timeout=15

menu_color_normal=white/blue
menu_color_highlight=yellow/blue

ps: even so, we don't need lines menu_color or default or prefix. They will use 'defaults'.