GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Errore Zfs Grub-probe Impossibile ottenere il percorso canonico di /dev/disk_name?

Sfondo:

  • Ubuntu Xenial
  • ZFS installato per il disco di sistema (quindi, sai:rpool/ROOT)
  • Il sistema funziona correttamente, ma quando il kernel si aggiorna, grub-probe abbaia l'errore menzionato sopra
  • Preferirei non riavviare subito

C'è una discussione qui su grub-probe e come dovrebbe "essere semplicemente migliore", ma questo aiuta fino a quando non arriva. Mi è venuta l'idea da quella discussione.

Maggiori dettagli:un'istanza completa dell'errore (per il mio sistema) è simile a:

/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.

Questo è sepolto in una sfilza di dettagli emessi da un comando apt per installare i driver grafici (ma non è importante).

Questo disco corrisponde a una delle mie partizioni ZIL. Ho aggiunto ZIL e cache dopo il completamento dell'installazione, quindi suppongo che sia per questo che non ho visto il problema prima. Non ho ancora riavviato, ed è per questo che vedo il problema. Sì, puoi riavviare per risolvere tutto questo, ma supponendo che tu non voglia farlo, continua a leggere:

Se guardo in /dev, vedo collegamenti a tutti i miei dischi ZFS che assomigliano a:

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

... ma in particolare nessuno per le partizioni ZIL.

Posso testare la situazione eseguendo:

$ sudo grub-probe /
grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.

Quindi la domanda è:come risolvere questo problema quindi grub-probe si comporta?

Risposta accettata:

C'è una variabile di ambiente che risolve questo problema. Il problema della mia lettura sembra essere che a Grub piace l'idea di "supportare" zfs ma non l'idea di risolvere i problemi relativi a zfs in Grub. In particolare, la sua scarsa gestione degli errori in termini di ricerca di cose.

Ad esempio, gli strumenti di grub forniti con Ubuntu 16.x non riusciranno a trovare /boot su un volume ZFS senza l'intervento dell'utente, quindi scriveranno felicemente alcuni (ma non tutti) file necessari in output da qualsiasi utilità che stai utilizzando sul /boot cartella che ti ha appena detto che non riusciva a trovare.

In ogni caso...

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 ....

Puoi passare la variabile come input alle utilità grub necessarie, oppure puoi specificarla come variabile di shell in .bashrc o .profile di root o qualcosa del genere con...

export ZPOOL_VDEV_NAME_PATH=YES

La variabile fa in modo che zpool riporti percorsi completi, piuttosto che percorsi /dev relativi ai dischi che possono o non possono funzionare correttamente con zfs. Le utility Grub controllano lo stato di zpool per i pool zfs per trovare i dischi che li contengono. Pertanto, la modifica dell'output dello stato di zpool risolve grub.

Correlati:come rimuovere le voci EFI non necessarie da GRUB?

Sono d'accordo sul fatto che gli utenti non dovrebbero avere a che fare con questo, in riferimento al commento del femulatore. La vera soluzione? Come ogni altro progetto open source che langue in bug che non vengono mai risolti. Forcellalo, aggiustalo da solo e smetti di usare il progetto/libreria di origine/qualunque cosa. Il modo FOSS di “licenziare” qualcuno, in altre parole;). Apparentemente Debian era a conoscenza di questo particolare bug sette anni fa.

Questa è stata l'unica cosa che mi ha impedito di migrare con successo un pool di avvio RaidZ di FreeBSD su Ubuntu. Se qualcun altro tenta qualcosa di simile, il processo è relativamente semplice, purché tu comprenda ZFS abbastanza bene da ignorare le parti della documentazione di Grub e zfsonlinux che sono sbagliate (come impostare il tuo set di dati di root su non automount, eh...? Come si avvierà esattamente allora?). È alquanto ironico che Ubuntu sottolinei nei loro documenti che il boot loader è la "funzione" più insicura di Linux, il che è vero suppongo, ma in questo caso è anche un evidente difetto di Ubuntu. Avrei impiegato un'ora o due per migrare un pool BSD ZFS su un altro sistema operativo se avessi potuto farlo utilizzando le utilità Sun/Solaris che funzionano effettivamente. Il problema è che ho dovuto usare utility Linux (come Grub) che non funzionano (o a malapena) a un certo punto, quindi c'è la colpa per gli altri due giorni che ho passato a sistemarlo. Ubuntu sarebbe molto meglio se non avesse bisogno di grub per l'avvio...


Ubuntu
  1. Come sostituire un disco rigido guasto nel software RAID Linux

  2. Quando usare /dev/random vs /dev/urandom?

  3. Come silenziare completamente un Cronjob in /dev/null/?

  4. Errore Gpg, firme non valide per “http://archive.canonical.com Precise Release”?

  5. Come mappare il dispositivo /dev/sdX e /dev/mapper/mpathY dal dispositivo /dev/dm-Z

tty (/dev/tty ) vs pts (/dev/pts) in Linux

Ubuntu 14.04 "non ha ricevuto un file Uri di riproduzione in entrata::///*"?

Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

kernel:disabilitare /dev/kmem e /dev/mem

Perché su alcuni sistemi Linux, il filesystem di root appare come /dev/root invece di /dev/<real device node>in mtab?