Hintergrund:
- Ubuntu Xenial
- ZFS für Systemlaufwerk installiert (Sie wissen also:rpool/ROOT)
- System läuft gut, aber wenn der Kernel aktualisiert wird,
grub-probe
bellt oben genannten Fehler - Ich würde jetzt lieber nicht neu starten
Hier gibt es eine Diskussion über grub-probe
und wie es „einfach besser“ sein sollte, aber das hilft, bis es soweit ist. Die Idee kam mir aus dieser Diskussion.
Genauer:Eine vollständige Instanz des Fehlers (für mein System) sieht so aus:
/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.
Dies ist in einer Menge Details vergraben, die von einem apt-Befehl zum Installieren von Grafiktreibern ausgegeben werden (aber das ist nicht wichtig).
Diese Festplatte entspricht einer meiner ZIL-Partitionen. Ich habe ZIL und Cache hinzugefügt, nachdem die Installation abgeschlossen war, also nehme ich an, dass ich das Problem deshalb vorher nicht gesehen habe. Ich habe noch nicht neu gestartet, und deshalb sehe ich das Problem überhaupt. Ja, Sie können das alles neu starten, aber wenn Sie das nicht möchten, lesen Sie weiter:
Wenn ich in /dev nachschaue, sehe ich Links zu allen meinen ZFS-Festplatten, die so aussehen:
lrwxrwxrwx 1 root root 4 Sep 16 23:31 ata-WDC_WD10EARS-00Y5B1_WD-WMAV51436394-part1 -> sdc1
lrwxrwxrwx 1 root root 4 Sep 16 23:31 ata-WDC_WD20EZRX-00D8PB0_WD-WCC4MK86SWX7-part1 -> sdd1
lrwxrwxrwx 1 root root 4 Sep 16 23:31 ata-WDC_WD20EZRX-00D8PB0_WD-WCC4N1085683-part1 -> sde1
lrwxrwxrwx 1 root root 4 Sep 16 23:31 ata-WDC_WD2500JS-22MHB0_WD-WCANK4053187-part1 -> sda1
… aber insbesondere keine für die ZIL-Partitionen.
Ich kann die Situation testen, indem ich Folgendes ausführe:
$ sudo grub-probe /
grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.
Die Frage ist also:wie kann man dieses Problem beheben, also grub-probe
verhält?
Akzeptierte Antwort:
Es gibt eine Umgebungsvariable, die dies behebt. Das Problem meiner Lektüre scheint zu sein, dass Grub die Idee mag, zfs zu „unterstützen“, aber nicht die Idee, Probleme im Zusammenhang mit zfs in Grub zu beheben. Insbesondere die schlechte Fehlerbehandlung in Bezug auf das Finden von Dingen.
Zum Beispiel werden die mit Ubuntu 16.x gelieferten Grub-Tools ohne Benutzereingriff kein /boot auf einem ZFS-Volume finden und dann fröhlich einige (aber nicht alle) benötigten Dateien schreiben, die von dem von Ihnen verwendeten Dienstprogramm ausgegeben werden /boot-Ordner, von dem es Ihnen gerade gesagt hat, dass es es nicht finden konnte.
Auf jeden Fall…
http://list.zfsonlinux.org/pipermail/zfs-discuss/2016-June/025765.html
To check if you have commit (should see full paths):
ZPOOL_VDEV_NAME_PATH=1 zpool status
If so you can do:
ZPOOL_VDEV_NAME_PATH=1 grub-whatevs ....
Sie können die Variable als Eingabe an die erforderlichen Grub-Dienstprogramme übergeben oder Sie können sie als Shell-Variable in der .bashrc- oder .profile-Datei von root oder etwas Ähnlichem mit …
angebenexport ZPOOL_VDEV_NAME_PATH=YES
Die Variable bewirkt, dass zpool vollständige Pfade meldet, anstatt relative /dev-Pfade zu den Festplatten, die mit zfs möglicherweise ordnungsgemäß funktionieren oder nicht. Grub-Dienstprogramme überprüfen den zpool-Status für zfs-Pools, um die Datenträger zu finden, die sie enthalten. Daher behebt das Ändern der Ausgabe von zpool status grub.
Verwandte:Wie entferne ich unnötige EFI-Einträge aus GRUB?Ich stimme zu, dass sich die Benutzer nicht damit befassen müssen, in Bezug auf den Kommentar von Femulator. Die wirkliche Lösung? Genauso wie jedes andere Open-Source-Projekt, das in Fehlern schmachtet, die nie behoben werden. Verzweigen Sie es, reparieren Sie es selbst und hören Sie auf, das Quellprojekt / die Quellbibliothek / was auch immer zu verwenden. Mit anderen Worten, die Art von FOSS, jemanden zu „feuern“;). Anscheinend war sich Debian dieses speziellen Fehlers vor sieben Jahren bewusst.
Dies war das einzige, was mich daran gehindert hat, einen FreeBSD RaidZ Bootpool erfolgreich auf Ubuntu zu migrieren. Wenn jemand anderes etwas Ähnliches versucht, ist der Prozess relativ einfach, solange Sie ZFS gut genug verstehen, um die Teile der Dokumentation von Grub und zfsonlinux zu ignorieren, die falsch sind (wie z genau wird es dann booten?). Es ist etwas ironisch, dass Ubuntu in seinen Dokumenten darauf hinweist, dass der Bootloader das unsicherste „Feature“ von Linux ist, was meiner Meinung nach stimmt, aber in diesem Fall ist es auch Ubuntus eklatanter Fehler. Ich hätte ein oder zwei Stunden gebraucht, um einen BSD-ZFS-Pool auf ein anderes Betriebssystem zu migrieren, wenn ich dies mit den tatsächlich funktionierenden Sun/Solaris-Dienstprogrammen hätte tun können. Das Problem ist, dass ich Linux-Dienstprogramme (wie Grub) verwenden musste, die irgendwann nicht (oder kaum) funktionieren, also liegt der Fehler für die anderen zwei Tage, die ich damit verbracht habe, dies zu beheben. Ubuntu wäre viel besser, wenn es kein Grub zum Booten bräuchte …