OK, nach einigem Stöbern habe ich eine Anleitung gefunden, um dieses Problem zumindest vorübergehend zu beseitigen. Es ist ziemlich einfach, aber ich habe mein System nicht mit btrfs eingerichtet, sodass ich dieses Update nicht bestätigen kann.
Entweder auskommentieren oder diese Zeile entfernen:
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
oder
if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env \
recordfail; fi; fi
in dieser Datei
/etc/grub.d/00_header
dann renne
update-grub
Der Grund dafür, dass die Bearbeitung nicht /boot/grub/grub.cfg
direkt erfolgt, ist, dass sie bei jeder Aktualisierung von grub überschrieben wird. In diesem Fall müssten Sie den Fix nur dann erneut ausführen, wenn die allgemeinen Pakete von grub aktualisiert werden.
Dies ist der Fehler im Launchpad, wenn Sie den Fehler # 736743 selbst hinzufügen möchten
Zitiert Colin Watson aus dem Fehlerbericht
Dies ist eine irreführende Fehlermeldung: Was passiert, ist, dass die btrfs-Implementierung von GRUB die Schnittstelle zum Lesen von Dateien nicht implementiert, um Blocklisten an den aufrufenden Code zurückzugeben. Ich habe in grub-devel darüber geschrieben und der Upstream-Betreuer hat darauf hingewiesen, dass das Schreiben in btrfs von GRUB, abgesehen von Problemen mit mehreren Geräten, grundsätzlich riskant ist, weil:
Der gleiche Block kann von mehreren Snapshots verwendet werden. Jeder Baum, der einen bestimmten Block verwendet, enthält seine Prüfsumme usw. rekursiv
Btrfs reserviert jedoch zu Beginn Speicherplatz für den Bootloader. Dieser Speicherplatz ist mehr als GRUB benötigt, um sich einzubetten, und wir könnten 1 KB davon für einen Umgebungsblock verwenden.
In jedem Fall ist dies kein neues Problem, das durch die Verwendung von Subvolumes verursacht wurde, und verhindert auch nicht das Booten (Sie erhalten die falsche Aufforderung "Drücken Sie eine beliebige Taste, um fortzufahren", aber wenn Sie es einfach ignorieren, wird es trotzdem gebootet). Downgrade auf Wunschliste.
Hoffe das hilft