Diese Meldung wird beim Verlassen des Grub-Menüs und vor dem Ubuntu-Begrüßungsbildschirm angezeigt.
Wie behebe ich das Problem, um die Nachricht zu löschen?
Und was soll das heißen?
error: Diskfilter writes are not supported
System bootet und scheint gut zu funktionieren.
Antworten:
Es ist ein Fehler!
Dies ist ein Fehler, der in der neuesten Version von Ubuntu Server LTS (Ubuntu Server 14.04 LTS) auftritt, wenn Sie die Startpartition (oder die Stammpartition, wenn die Startpartition nicht vorhanden ist) in einer LVM- oder RAID-Partition erstellen .
Weitere Informationen zu diesem Fehler erhalten Sie im Ubuntu Launchpad: Fehler # 1274320 "Fehler: Schreibvorgänge mit Festplattenfilter werden nicht unterstützt" .
Update: Dieser Fehler ist bereits in Ubuntu Server 14.04 und einigen neueren Ubuntu-Versionen behoben. Wahrscheinlich müssen Sie nur noch rennen
apt-get upgrade
.Warum tritt dieser Fehler auf?
Beim Booten des Systems liest GRUB (
load_env
) Daten ein/boot/grub/grubenv
. Diese Datei heißt GRUB Environment Block .Aus dem GRUB-Handbuch:
Dieses Verhalten kann begründet werden
/etc/grub.d/00_header
(update-grub
verwendet diese Datei, um die/boot/grub/grub.cfg
Datei zu generieren ):Das Problem ist, dass die
save_env
Anweisung nur bei einfachen Installationen funktioniert (Sie können nichtsave_env
innerhalb eines RAID- oder LVM-Datenträgers ausgeführt werden). Aus dem GRUB-Handbuch:Die GRUB- Recordfail- Funktion verwendet die
save_env
Anweisung, um den Recordfail-Status zu aktualisieren (siehe Ubuntu-Hilfe - Grub 2 , Abschnitt "Letzter Start fehlgeschlagen oder Start im Wiederherstellungsmodus"). In Ubuntu 14.04 (und in neueren Debian-Versionen) wird diesave_env
Anweisung (innerhalb der Recordfail-Funktion) jedoch verwendet, selbst wenn GRUB in einem LVM oder RAID installiert ist.Sehen wir uns die Zeilen 104 bis 124 an
/etc/grub.d/00_header
:GRUB überspringt die Recordfail-Funktion korrekt, wenn nicht unterstützte Dateisysteme (btrfs, zfs usw.) verwendet werden, aber LVM und RAID werden zu keinem Zeitpunkt übersprungen .
Wie schützt sich GRUB vor dem Schreiben in RAID und LVM?
Um in einem Dateisystem richtig lesen / schreiben zu können, lädt GRUB ein entsprechendes Modul.
GRUB verwendet das diskfilter- Modul (
insmod diskfilter
) in RAID-Partitionen und das lvm- Modul in LVM-Partitionen.Sehen wir uns die Lese- / Schreib-Implementierung des Diskfilter- Moduls an:
Ich füge den Code hier ein (Zeilen von 808 bis 823). Die in dieser Frage angezeigte Warnung wird in Zeile 821 angezeigt:
Die
grub_diskfilter_read
Funktion ist implementiert (und GRUB kann RAID-Dateisysteme lesen). Diegrub_diskfilter_write
Funktion löst jedoch einenGRUB_ERR_NOT_IMPLEMENTED_YET
Fehler aus.Warum löst die Verwendung
quick_boot=0
das Problem? Und warum ist es die falsche Lösung?Wenn Sie sich den
/etc/grub.d/00_header
Code noch einmal ansehen, werden Sie feststellen, dass die Funktion recordfail nur verwendet wird, wennquick_boot=1
.quick_boot
Wenn Sie also von 1 auf 0 wechseln , wird die Recordfail-Funktion deaktiviert und Schreibvorgänge in der RAID / LVM-Partition werden deaktiviert.Es werden jedoch auch viele andere Funktionen deaktiviert (Ausführen,
grep \$quick_boot /etc/grub.d/*
und Sie werden sehen). Wenn Sie eines Tages Ihr/boot/grub
Verzeichnis außerhalb des RAID / LVM ändern , wird die Recordfail-Funktion dennoch deaktiviert.Zusammenfassend deaktiviert diese Lösung unnötigerweise Funktionen und ist nicht generisch.
Was ist die richtige Lösung?
Für die richtige Lösung sollten Sie die
save_env
Anweisungen deaktivieren , wenn sich GRUB in LVM- oder RAID-Partitionen befindet.Ein Patch wurde im Debian Bug Tracker-System vorgeschlagen, um diese Lösung zu implementieren. Sie finden es unter: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=754921
Die Idee hinter diesem Patch ist:
grub-probe --target=abstraction "${grubdir}"
Befehl aus, um zu ermitteln, welche Art von Abstraktionsmodulen GRUB zum Lesen / Schreiben von Dateien im/boot/grub
Verzeichnis verwendet.diskfilter
oder verwendetlvm
, überspringen Sie diesave_env
Anweisung recordfail und schreiben Sie einen entsprechenden Kommentar in die/boot/grub/grub.cfg
Datei.# GRUB lacks write support for /dev/md0, so recordfail support is disabled.
Wie wende ich die richtige Lösung an?
Wenn Sie nicht darauf warten möchten, dass dieser Patch von den Ubuntu / Debian-Leuten im offiziellen Code angewendet wird, können Sie meinen Patch verwenden
00_header
:quelle
00_header
Datei hat funktioniert. Ich werde das nicht deaktivierenquick_boot
, damit es verschwindet.00_header
Datei (wie hier empfohlen) nicht funktioniert. Ich weiß, dass nur, weil es für mich (und für Rarylson Freitas) funktioniert, es nicht unbedingt für alle funktionieren muss. Aber haben Sie sichergestellt, dass Sie den alten und neuen Benutzern die richtigen Berechtigungen erteilen00_header
und sie ausführenupdate-grub
? (Wenn Sie gerade bearbeitet00_header
haben, ist keinechmod
erforderlich,update-grub
bleibt jedoch erforderlich.)Ich denke, dass dieser Fehler wegen des Überfalls oder der LVM- Partition auftritt .
Für eine vorübergehende Behebung dieses Problems:
Bearbeiten:
/etc/grub.d/10_linux
Ersetzen
'quick_boot="1"' with 'quick_boot="0"'
Dann :
quelle