También recibo este error, y no creo que ocurra en un chroot.
Antecedentes
Creo que esto es cuando systemd no puede encontrar la ruta porque está montada en un directorio. Entonces, la diferencia es que cuando configura un chroot, ya configura el acceso al hardware, incluidas las unidades.
Aunque puede configurar este acceso dentro de Systemd, eso no significa que pueda configurar los permisos para esas unidades de la misma manera.
Por ejemplo, creé este archivo:
/etc/systemd/system/systemd-nspawn@.service.d/override.conf
Y contiene esta configuración:
[Service]
DeviceAllow=char-usb_device rwm
DeviceAllow=char-usb
[Files]
Bind=/var/cache/apt/pkgcache.bin
Bind=/var/cache/apt/srcpkgcache.bin
Esto todavía no funciona cuando se usa grub-install /dev/sda
o update-grub
para un USB en Pi debootstrapped con Debian Stretch. Incluso usando grub-uboot y grub-efi-arm todavía existe ese error que grub-probe
no puede encontrar la ruta canónica.
No solo eso, sino update-grub
que verá y sabrá cuáles son los sistemas operativos, pero curiosamente grub-install
no reconoce que el sistema operativo Debian está en USB.
Ejemplo
root@raspixmc:/home/pi# grub-install /dev/sda
Installing for arm-uboot platform.
grub-install: warning: no hints available for your platform. Expect
reduced performance.
grub-install: warning: WARNING: no platform-specific install was
performed.
Installation finished. No error reported.
root@raspixmc:/home/pi#
Interesante, cuando creo un chroot y puedo ejecutar update-grub
, a pesar de que estoy en el sistema operativo que no tengo en el USB, ¡no ve su propio sistema operativo!
root@raspixmc:/home/pi# mount /dev/sda1 /mnt
root@raspixmc:/home/pi# cd /mnt
root@raspixmc:/mnt# mount --bind /dev dev/
root@raspixmc:/mnt# mount --bind /sys sys/
root@raspixmc:/mnt# mount --bind /proc proc/
root@raspixmc:/mnt# mount --bind /dev/pts dev/pts
root@raspixmc:/mnt# chroot . bin/bash
root@raspixmc:/# update-grub
Generating grub configuration file ...
Found Raspbian GNU/Linux 9 (stretch) on /dev/mmcblk0p2
done
root@raspixmc:/#
Solo ve a Raspbian. Esto sucede solo cuando intento instalar y actualizar GRUB dentro del contenedor, pero cuando salgo del chroot.
Mira cómo funciona ahora porque no desmonté los directorios chroot:
/dev dev/
/sys sys/
/proc proc/
/dev/pts dev/pts
Desde fuera del contenedor, tenga en cuenta que estoy ejecutando este comando con grub-uboot
instalado en Raspbian y sin Grub en el USB que contiene Debian atrapado.
root@raspixmc:/mnt# update-grub
Generating grub configuration file ...
Found Raspbian GNU/Linux 9 (stretch) on /dev/mmcblk0p2
Found Debian GNU/Linux 9 (stretch) on /dev/sda1
done
root@raspixmc:/mnt#
Esto no sucede usando una de las imágenes disponibles no oficialmente para Debian ARM , pero obviamente todavía es una personalización que aún no está disponible para debootstrapping.
Solución de problemas
Realmente hay momentos en que es mejor crear un camino. La única posibilidad siguiente (y probable) es simplemente escribir GRUB. Y para eso solo voy a leer en esta página.
https://www.dedoimedo.com/computers/grub-2.html
Otra cosa que quiero compartir sobre este problema es una solución que podría funcionar, pero que las tarjetas microSD son muy sensibles. He estado construyendo mis propias imágenes de Linux y aprendí esto rápido. Lo mejor que puede hacer es usar Qemu siempre que pueda, pero para intentar borrar una tabla de partición antigua, puede intentar ejecutarla sgdisk --zap-all
en la unidad.
sgdisk --zap-all /dev/sdd
De hecho, a veces, si se da un error la primera vez y es no un error de sólo lectura, puede ejecutar de nuevo y finalmente todas las tablas de partición nuevo o viejo.
Y puede usar Qemu para emular Raspberry Pi en una PC estándar basada en AMD / Intel. Yo lo recomendaría. Sé que esta es más información que la publicación original, pero creo que es probable que este error se derive. Es la edad del contenedor.
sda6
? ¿Mi respuesta aquí ayuda?