Jessaye de réinstaller grub à partir dune clé USB. Jexécute ce qui suit :
sudo mount /dev/sda6 /mnt sudo grub-install --root-directory=/mnt /dev/sda
Jobtiens lerreur suivante:
grub-probe: error: failed to get canonical path of /cow.
quelquun peut-il expliquer lerreur , et comment le résoudre?
Modifier
Jessaye pour réparer un système à double démarrage cassé, fonctionnant à partir dune clé USB contenant linux mint.
Commentaires
Réponse
Suivez ces étapes:
-
Démarrez dans une session Linux en direct.
-
Montez la partition
/
de votre système dexploitation installé sur/mnt
sudo mount /dev/sda6 /mnt
-
Configurer un environnement
chroot
:sudo chroot /mnt
-
Vous êtes maintenant dans une « fausse » installation Linux qui traite
/mnt
comme/
. Cela signifie que tous les fichiers nécessaires à GRUB se trouvent dans/boot
là où le système les attend et vous pouvez installer GRUB comme si vous exécutiez réellement votre système installé:sudo update-grub sudo grub-install /dev/sda
Redémarrez maintenant et vous devriez voir le menu GRUB apparaître normalement.
Commentaires
- Je ‘ essaie dinstaller à partir du périphérique USB. de toute façon, jai essayé aussi sans montage – même erreur. pouvez-vous expliquer lerreur?
- @elyashiv veuillez modifier votre question et expliquer ce que vous essayez. Essayez-vous de sauver un système défectueux? Démarrez-vous un système en direct depuis lUSB? Si tel est le cas, dites-nous . Quel système dexploitation utilisez-vous? Quest-ce qui vous fait penser que GRUB a une option
root-device
et quespérez-vous que cette option fasse? Avez-vous configuré un environnementchroot
? Chaque fois que vous posez une question, vous devez expliquer exactement ce que vous essayez de faire, nous pouvons ‘ deviner. - oups, je voulais dire -root -directory
- @elyashiv là ‘ nest pas
--root-directory
non plus. Allez lire ma réponse ici qui explique comment réinstaller grub. - regardez la première réponse ici
Réponse
Si grub dit quil na pas pu résoudre le chemin canonique de quelque chose , cela signifie quil nexiste pas ou que realpath()
a échoué.
Dans ce cas, essayez:
$ realpath /cow $ ls -la /cow
Si les deux commandes disent « impossible de trouver le fichier ou le répertoire », vous devez en créer un.
Si la deuxième commande fonctionne, mais pas la première, vérifiez pourquoi realpath()
ne fonctionne pas. Lune des raisons peut être que /proc
nest pas monté. Dans certaines implémentations de libc, /proc/self/fd
est utilisé pour obtenir le chemin canonique dun fichier.
Commentaires
- Jai la première commande qui fonctionne, mais pas la 2ème.
- ME: root @ ubuntu: / # realpath / cow TERMINAL: / cow ME: # ls -la / cow TERMINAL: ls: impossible à access ‘ / cow ‘: aucun fichier ou dossier de ce type (grossièrement traduit).
Réponse
Jobtiens aussi cette erreur, et je ne pense pas que cela se produit dans un chroot.
Contexte
Je pense que cest lorsque systemd ne peut pas trouver le chemin car il est monté dans un répertoire. Donc, la différence est que lorsque vous configurez un chroot, vous configurez déjà laccès au matériel, y compris les lecteurs.
Bien que vous pouvez configurer cet accès dans Systemd, ce qui ne signifie pas que vous pouvez configurer les autorisations pour ces lecteurs de la même manière.
Par exemple, jai créé ce fichier:
/etc/systemd/system/[email protected]/override.conf
Et il contient s 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 lorsque vous utilisez grub-install /dev/sda
ou update-grub
pour une clé USB sur Pi débootée avec Debian Stretch. Même en utilisant grub-uboot et grub-efi-arm, il y a toujours cette erreur que grub-probe
ne peut pas trouver le chemin canonique.
Non seulement cela, mais bien que update-grub
voit et sache quels sont les systèmes dexploitation, mais il est intéressant de noter que grub-install
ne le fait pas reconnaissez que le système dexploitation 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 que je peux exécuter update-grub
, même si je suis sur le système dexploitation que jai debootstrap sur lUSB lui-même, il ne voit pas son propre système dexploitation!
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 dinstaller et de mettre à jour GRUB à lintérieur du conteneur, mais lorsque je quitte le chroot.
Regardez comment cela fonctionne maintenant car je nai pas démonté les répertoires chroot:
/dev dev/ /sys sys/ /proc proc/ /dev/pts dev/pts
De lextérieur du conteneur, attention, je cours cette commande avec grub-uboot
installé sur Raspbian et aucun Grub sur lUSB contenant Debian débootstrapé.
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 fonctionne pas se produisent en utilisant lune des images non officiellement disponibles pour Debian ARM , mais il sagit évidemment dune personnalisation qui nest pas encore disponible pour le debootstrapping.
Dépannage
Il y a vraiment des moments où il vaut mieux simplement créer un chemin. La seule possibilité suivante (et probable) est décrire simplement GRUB. Et pour cela, je vais juste lire sur cette page.
https://www.dedoimedo.com/computers/grub-2.html
Une autre chose que je souhaite partager à propos de ce problème est une solution qui pourrait fonctionner, mais sachez que les cartes microSD sont très sensibles. Jai construit mes propres images Linux et jai appris cela rapidement. La meilleure chose à faire est dutiliser Qemu chaque fois que vous le pouvez, mais pour tenter deffacer une ancienne table de partition, vous pouvez essayer dexécuter sgdisk --zap-all
sur le lecteur.
sgdisk --zap-all /dev/sdd
En fait, parfois si cela donne une erreur la première fois et que cest pas une erreur en lecture seule, vous pouvez lexécuter à nouveau et il sera finalement 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 ce sont plus dinformations que ce qui concerne le message dorigine, mais je pense que cest probablement ainsi que cette erreur est dérivée. Cest lâge du conteneur.
Réponse
Daprès ce qui a été écrit, il semble que vous « essayez dinstaller GRUB sur / dev / sda. Vous ne souhaitez pas monter le disque.
Vous recherchez probablement: grub-install /dev/sda
Page de manuel GRUB pour référence, ou vous pouvez man grub-install
depuis votre système: http://linux.die.net/man/8/grub-install
Commentaires
- Jai déjà tapé la commande grub-install (sur dev.sda1), mais jai eu une erreur en parlant de blocs. Et jai eu lerreur » cow » avec lerreur » grub-install –recheck –root-directory = / mnt / dev / sda1 » commande.
Réponse
Pour toute personne aux prises avec ce problème qui tente dutiliser une clé USB en direct ou un autre moyen de chroot pour réinstaller ou installer grub – jai traité de cela plusieurs fois et jai oublié de le documenter auparavant, même si javais lintention de .
Le problème auquel vous êtes confronté est que grub n’a pas accès au chemin auquel vous faites référence ni comme source (/ boot) ni comme destination (votre système et votre chroot peuvent-ils voir /dev/sda
par exemple?) ou les deux. Lorsque vous vous préparez à effectuer un chroot, vous créez des montages de liaison qui sont accessibles dans lenvironnement chroot, ou vous le faites dans le chroot en utilisant mount -t. Il y a tellement de guides en ligne qui le font dans les deux cas.
Vous devez vous assurer de lier / dev ou juste la ou les partitions spécifiques contenant les fichiers de démarrage dans / boot (par exemple / dev / sda1) . / boot est soit une partition séparée, soit un répertoire dans / Le chroot a besoin daccéder au lecteur pour lequel vous allez (ré) installer grub, alors faites fdisk -l dans le chroot pour vous assurer que vous pouvez voir le périphérique répertorié dans la sortie. Notez également que si vous navez pas de partition de démarrage séparée, mais que vous avez un répertoire de démarrage dans / root avec les fichiers de démarrage (pas seulement un point de montage), vous navez quà monter la partition contenant root. Je nai rien à monter sur / root / boot.
Vous devez également vous assurer de lier le système de fichiers proc et le système de fichiers sys, mais chaque guide que jai vu a ces deux. Je viens de le voir / dev a parfois manqué. Il peut y avoir des cas où vous nen avez pas besoin, mais je ne les connais pas.
tl; dr: assurez-vous de lier mount / dev
Commentaires
- Pourquoi parlez-vous de
chroot
alors que la question nest pas ‘ t about« chroot« ? - LOP dit que » sexécute depuis une clé USB contenant linux mint « . Ce sera un chroot.
sda6
? Ma réponse ici vous aide-t-elle?/cow
semble faire référence au Système de fichiers Copy-on-Write qui est monté sur/
lors du démarrage à partir dun CD ou dune clé USB