Snorre Kann mir jemand sagen, für was es speziell wichtig ist und wie ich es eventuell reparieren könnte???
Diese (Fehler-)Meldung kommt bei grub-mkconfig wenn in den Default-Grubeinstellungen festgelegt ist, den zuletzt verwendeten Booteintrag als markierten(aktiven) Eintrag im Menu zu merken, verwenden.
Konkret muß dazu in der /etc/default/grub aktiv sein:
GRUB_DEFAULT=saved
# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
GRUB_SAVEDEFAULT=true
Die Voreinstellung ist eigentlich:
GRUB_DEFAULT=0
#GRUB_SAVEDEFAULT=true
Dann dürfte die Meldung oben eigentlich nicht auftauchen.
Frage also: Verwendest du diese Option des Merkens des letzten Eintrages überhaupt bzw. ist das deine Absicht?
Snorre Kann man der grub-editenv sagen er soll nicht bei /boot schauen sondern bei /efi ???
Das Skript grub-editenv bietet diese Möglichkeit, ja. Allerdings wird diese in dem Skript grub-mkconfig nicht verwendet/berücksichtigt.
Der korrekte Aufruf bei dir wäre:
/usr/bin/grub-editenv /efi/grub/grubenv list
im Skript grub-mkconfig wird es aber so verwendet:
... GRUB_ACTUAL_DEFAULT="
"${grub_editenv}" - list ...`
Durch "-" als FILENAME greift die Voreinstellung von grub-editenv:
If FILENAME is
-', the default value //boot/grub/grubenv is used.`
Dadurch kommt es zur obigen Fehlermeldung.
Also eigentlich ein Fehler in grub-mkconfig, da speziell für Benutzer, die als GRUB_DEFAULT saved benutzen wollen und ihre Grub-Installation/Config nicht in /boot/grub/* haben eben keine Vorsorge getroffen ist.
Ein "dirty hack" wäre z.B. beim ursächlichen Code in grub-mkconfig (Zeile 202) für den Aufruf für grub-editenv den "falschen" Dateiparameter "-" zu ersetzen durch:
"$(dirname ${grub_cfg})/grubenv"
Die Variable grub_cfg entspricht dem, was der User bei -o/--output als Ziel für die gewünschte grub.cfg mitgibt (Default: /boot/grub/grub.cfg, bei dir /efi/grub/grub.cfg).
Hier wird nun explizit das Basisverzeichnis von --output verwendet, um grub-editenv den abweichenden Ort für seine Datei grubenv mitzugeben.
Statt:
grub-editenv - list (was bei dir den Fehler produziert, da "-" bedeutet /boot/grub/grubenv)
wird das also bei dir nun zu:
prub-editenv /efi/grub/printenv list
"Dirty" ist dieser Hack weil:
a) Der Dateiname "grubenv" für den letzten verwendeten Booteintrag nun statisch ist
b) Ich auf die Schnelle keine definierte Variable in/um grub-mkconfig gefunden habe, über die sich das aktuell verwendete Installations-Verzeichnis (default /boot/grub, bei dir /efi/grub) abfragen ließe, ohne die "Krücke" mittels "dirname /wo_der_user_die_grub.cfg_hinhaben_will.
Also IMHO eigentlich ein Fall für einen Bugreport zu grub bei gnu.org.
Kurz: Was heißt das für dich?
a) Wenn du die Möglichkeit der Verwendung des letzten Booteintrags wirklich verwenden willst, dann funktioniert das ohne Codeänderung nicht. Die Fehlermeldung selbst ist für die Erstellung der grub.cfg nicht hinderlich.
b) Wenn du das nicht verwenden willst, dann ändere die Konfiguration in /etc/default/grub
Eine Frage ist, warum das in der aktuellen Version ggf. anders voreingestellt ist wenn du selbst da nichts verändert hast.
//Edit: Falsche Bezeichner grub-printenv zu grub-editenv korrigiert.