Antecedentes:
- Ubuntu Xenial
- ZFS instalado para el disco del sistema (entonces, ya sabe:rpool/ROOT)
- El sistema funciona bien, pero cuando se actualiza el kernel,
grub-probe
ladra el error mencionado anteriormente - Preferiría no reiniciar ahora mismo
Aquí hay una discusión sobre grub-probe
y cómo debería "simplemente ser mejor", pero esto ayuda hasta que eso sucede. Obtuve la idea de esa discusión.
Más detalles:una instancia completa del error (para mi sistema) se ve así:
/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.
Esto está oculto en una gran cantidad de detalles emitidos desde un comando apto para instalar controladores de gráficos (pero eso no es importante).
Este disco corresponde a una de mis particiones ZIL. Agregué ZIL y caché después de completar la instalación, así que supongo que es por eso que no vi el problema antes. Todavía no he reiniciado, y es por eso que veo el problema. Sí, puedes reiniciar para arreglar todo esto, pero suponiendo que no quieras hacer eso, sigue leyendo:
Si miro en /dev, veo enlaces a todos mis discos ZFS que se parecen 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
… pero especialmente ninguno para las particiones ZIL.
Puedo probar la situación ejecutando:
$ sudo grub-probe /
grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.
Entonces la pregunta es:cómo solucionar este problema para que grub-probe
se comporta?
Respuesta aceptada:
Hay una variable de entorno que soluciona esto. El problema de mi lectura parece ser que a Grub le gusta la idea de 'soportar' zfs pero no la idea de solucionar problemas relacionados con zfs en Grub. Específicamente, su pobre manejo de errores en términos de encontrar cosas.
Por ejemplo, las herramientas de grub que se envían con Ubuntu 16.x no podrán encontrar /arrancar en un volumen ZFS sin alguna intervención del usuario, y luego felizmente escribirán algunos (pero no todos) los archivos necesarios de cualquier utilidad que esté usando para el /carpeta de arranque que acaba de decirte que no pudo encontrar.
En cualquier 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 ....
Puede pasar la variable como entrada a las utilidades grub necesarias, o puede especificarla como una variable de shell en .bashrc o .profile de root o algo similar con...
export ZPOOL_VDEV_NAME_PATH=YES
La variable hace que zpool informe rutas completas, en lugar de rutas relativas /dev a los discos que pueden o no funcionar correctamente con zfs. Las utilidades de Grub verifican el estado de zpool para grupos de zfs para encontrar los discos que los contienen. Por lo tanto, cambiar la salida de zpool status corrige grub.
Relacionado:¿Cómo eliminar entradas EFI innecesarias de GRUB?Acepto que los usuarios no deberían tener que lidiar con esto, en referencia al comentario de femulator. ¿La verdadera solución? Igual que cualquier otro proyecto de código abierto que languidece en errores que nunca se solucionan. Bifurque, arréglelo usted mismo y deje de usar el proyecto/biblioteca/lo que sea de origen. La manera FOSS de “despedir” a alguien, en otras palabras;). Aparentemente, Debian estaba al tanto de este error en particular hace siete años.
Esto fue lo único que me impidió migrar con éxito un grupo de arranque de FreeBSD RaidZ a Ubuntu. Si alguien más intenta algo similar, el proceso es relativamente simple, siempre que comprenda ZFS lo suficientemente bien como para ignorar las partes de la documentación de Grub y zfsonlinux que están mal (como configurar su conjunto de datos raíz para que no se monte automáticamente, ¿eh...? ¿Cómo exactamente va a arrancar entonces?). Es un tanto irónico que Ubuntu señale en sus documentos que el gestor de arranque es la "característica" más insegura de Linux, lo cual es cierto, supongo, pero en este caso también es el defecto evidente de Ubuntu. Me habría llevado una o dos horas migrar un grupo BSD ZFS a otro sistema operativo si hubiera podido hacerlo usando las utilidades de Sun/Solaris que realmente funcionan. El problema es que tuve que usar utilidades de Linux (como Grub) que no funcionan (o apenas funcionan) en algún momento, así que ahí está la culpa de los otros dos días que pasé arreglando esto. Ubuntu sería mucho mejor si no necesitara grub para arrancar...