Je reçois également cette erreur, et je ne pense pas que cela se produise dans un chroot.
Contexte
Je pense que c'est lorsque systemd ne peut pas trouver le chemin d'accès car il est monté dans un répertoire. Ainsi, la différence est que lorsque vous configurez un chroot, vous configurez déjà l'accès au matériel, y compris aux lecteurs.
Bien que vous puissiez configurer cet accès dans Systemd, cela ne signifie pas que vous pouvez configurer les autorisations pour ces lecteurs de la même manière.
Par exemple, j'ai créé ce fichier:
/etc/systemd/system/systemd-nspawn@.service.d/override.conf
Et il contient ces paramètres:
[Service]
DeviceAllow=char-usb_device rwm
DeviceAllow=char-usb
[Files]
Bind=/var/cache/apt/pkgcache.bin
Bind=/var/cache/apt/srcpkgcache.bin
Cela ne fonctionne toujours pas lors de l'utilisation grub-install /dev/sda
ou update-grub
pour un débootstraps USB sur Pi avec Debian Stretch. Même en utilisant grub-uboot et grub-efi-arm, il y a toujours cette erreur qui grub-probe
ne peut pas trouver le chemin canonique.
Non seulement cela, mais update-grub
il verra et saura quels sont les systèmes d'exploitation, mais il grub-install
n'est pas intéressant de reconnaître que le système d'exploitation Debian est sur USB.
Exemple
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#
Intéressant, lorsque je crée un chroot et update-grub
que je peux exécuter , même si je suis sur le système d'exploitation que j'ai démarré sur l'USB lui-même, il ne voit pas son propre système d'exploitation!
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:/#
Il ne voit que Raspbian. Cela se produit uniquement lorsque vous essayez d'installer et de mettre à jour GRUB à l'intérieur du conteneur, mais lorsque je quitte le chroot.
Regardez comment cela fonctionne maintenant car je n'ai pas démonté les répertoires chroot:
/dev dev/
/sys sys/
/proc proc/
/dev/pts dev/pts
En dehors de l'esprit du conteneur, grub-uboot
j'exécute cette commande avec installé sur Raspbian et pas de Grub sur l'USB contenant Debian dépouillé Debian.
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#
Cela ne se produit pas en utilisant l'une des images officieusement disponibles pour Debian ARM , mais il s'agit évidemment d'une personnalisation qui n'est pas encore disponible pour le débootstrapping.
Dépannage
Il y a vraiment des moments où il vaut mieux juste créer un chemin. La seule possibilité suivante (et probable) est simplement d'écrire GRUB. Et pour cela je vais juste lire sur cette page.
https://www.dedoimedo.com/computers/grub-2.html
Une autre chose que je veux partager à propos de ce problème est une solution qui pourrait fonctionner, mais sachez que les cartes microSD sont très sensibles. J'ai construit mes propres images Linux et j'ai appris cela rapidement. La meilleure chose à faire est d'utiliser Qemu chaque fois que vous le pouvez, mais pour essayer d'effacer une ancienne table de partition, vous pouvez essayer de l'exécuter sgdisk --zap-all
sur le lecteur.
sgdisk --zap-all /dev/sdd
En fait, parfois, s'il donne une erreur la première fois et que ce n'est pas une erreur en lecture seule, vous pouvez l'exécuter à nouveau et il finira par retrouver toutes les tables de partition nouvelles ou anciennes.
Et vous pouvez utiliser Qemu pour émuler Raspberry Pi sur un PC AMD / Intel standard. Je le recommanderais. Je sais que c'est plus d'informations que ce qui se rapporte au message d'origine, mais je pense que c'est probablement de cette façon que cette erreur est dérivée. C'est l'âge du conteneur.
sda6
? Ma réponse ici est-elle utile?