Impossible d'obtenir le chemin canonique de / vache

43

J'essaie d'installer Ubuntu 12.10 depuis un certain temps et de surmonter les obstacles un à un. Maintenant, je suis dans une situation comme suit.

J'ai un PC et un disque dur de 10 Go qui seront totalement dédiés à Ubuntu, donc aucune option de Wubi et de double démarrage.

J'essayais d'installer à partir d'un DVD, mais il est bloqué à l'erreur "Hors de fréquence". J'ai donc dû m'adapter à l'option de démarrage USB. Mais mon ordinateur n’est pas USB démarrable, donc la solution est "Gestionnaire de démarrage Plop". Je suis donc en train de faire la procédure d'installation comme suit:

  1. à partir d'un lecteur de CD sur lequel plop est installé.
  2. optant pour le démarrage USB dans les options plop.
  3. le démarrage commence par USB.
  4. le moniteur donne finalement une erreur "hors fréquence"
  5. appuyez sur Shift+ Alt+ F1pour obtenir le terminal.
  6. ouvrir la bouffe avec sudo nano /etc/default/grub.
  7. faire les changements nécessaires.
  8. sudo update-grub.

Maintenant, je reçois une erreur comme suit:

/usr/sbin/grub-probe:error:failed to get canonical path of /cow.

Mon système est

P4 3,06 GHz, 1 Go de RAM, disque dur de 10 Go sans système d'exploitation, moniteur CRT lg StudioWorks (7 ans). Mobo Mercury P4 266a NDMx (équivalent 865). L’ensemble du système est en parfait état de fonctionnement sous XP, mais il n’est pas USB démarrable, et tous les autres périphériques fonctionnent parfaitement.

Que devrais-je faire ensuite?

ulkaNCST
la source
Votre ordinateur a-t-il la configuration système minimale recommandée pour exécuter Ubuntu? J'ai eu des problèmes pour installer 12.04 sur des machines avec moins de 1 Go de RAM.
CSCameron
Oui, j'ai maintenant ajouté les spécifications de mon système à la question.
ulkaNCST
askubuntu.com/questions/207663/… pourrait valoir la peine d'essayer.
Rinzwind
5
Montez d’abord votre disque dur dans un dossier, par exemple /mnt, puis chrootà /mnt.
vert le

Réponses:

30

Après avoir démarré à partir du live CD Ubuntu (essais 14.04 et 16.04), j'ai pu contourner ce problème en exécutant update-grub chroot'ed sur la partition grub. (Remplacez /dev/sda1ci-dessous par la partition sur laquelle vous avez installé grub. Toutes les commandes en tant que root.)

mkdir /mnt/chrootdir
mount /dev/sda1 /mnt/chrootdir
for dir in proc dev sys etc bin sbin var usr lib lib64 tmp; do
    mkdir /mnt/chrootdir/$dir && mount --bind /$dir /mnt/chrootdir/$dir
done
chroot /mnt/chrootdir
update-grub2  # inside chroot
Nathan Kidd
la source
2
Tenter d'exécuter mount me donne l'erreur suivante: NTFS signature is missing.ce qui est étrange, car ce devrait être Ext4, pas NTFS ...
Cerin
@Cerin, je souligne que / dev / sda1 était la bonne partition pour moi, mais évidemment pas pour vous, si ce volume est NTFS.
Nathan Kidd
Votre solution est déroutante. Avez-vous besoin de lancer la première partie et la seconde à partir du chroot de la première? Ou jetez-vous tout ce que vous avez fait dans la première partie et exécutez-vous uniquement la deuxième partie? Pourquoi montez-vous à la fois / dev / sda et / dev / sda1?
Cerin
2
J'ai suivi vos instructions et /usr/sbin/grub-probe: error: failed to get canonical path of '/boot'.je me suis retrouvé avec seulement ma /bootpartition sur mon disque de démarrage, le reste était ailleurs.
Traîneau
1
Devait faire un supplément grub-install /dev/sdaavant update-grub, alors cela a fonctionné!
Kiw
11

Trouvez votre lecteur censé démarrer

mount

Ou

parted -l

Ou

fdisk /dev/sda

Et tapez p pour lister les partitions, cherchez le type 83.

(Si vous avez Fedora, vous devrez peut-être utiliser les commandes "vgs" et "lvs" et si vous avez peur, vous devrez peut-être "cat / proc / mdstat" ou mdadm -A --scan ou insmod raid1 ou insmod raid5 puis mdadm -A --scan) et vous utiliserez / dev / md0 ou / dev / mapper / my-vg au lieu de / dev / sda

puis essayez de le monter

mkdir /mnt
mount /dev/sda1 /mnt
cd /mnt
ls -l

Est-ce votre lecteur? Cool!

grub-install --recheck --root-directory=/mnt /dev/sda 

(Ou quel que soit le lecteur / dev de votre racine, avec son chemin monté)

grub-install --recheck --root-directory=/mnt /dev/sda --force

(Forcez-le s'il n'aime pas vos partitions.)

Maintenant, il devrait démarrer dans grub, et vous pouvez utiliser les commandes grub pour démarrer, après avoir redémarré et sélectionné le bon lecteur de démarrage dans le Setup du BIOS, ou en appuyant sur Echap ou F12 en fonction de votre BIOS et si vous êtes assez rapide, puis à l'invite Grub - vous pouvez utiliser la complétion de tabulation pour la trouver si ce n'est pas (hd0,1) mais (hd1,3) ou quelque chose d'autre à la place, mais attention, la complétion de la tabulation s'interrompt parfois pendant quelques secondes si grub ne peut pas lire le lecteur. .

insmod linux
ls
root=(hd0,1)
linux /boot/vmlinuz root=/dev/sda1
initrd /boot/initrd
boot

Ou, espérons-le, vous avez toujours un fichier intact grub.cfg ... ou peut-être que cela fonctionnera:

grub-mkconfig -o /mnt/boot/grub/grub.cfg
Dagelf
la source
1
Il n'a pas aimé mes partitions, mais -fne fonctionnait pas. Je devais utiliser--force
Reinis Mazeiks
pour démarrer à partir Grub, sur mon système , je devais changer ci - dessus comme ceci: linux /vmlinuz root=/dev/sda1 (le dossier racine) initrd /boot/initrd.img (IE .img)
Warner
6

Solution révisée basée sur le code ci-dessus

La solution ci-dessus ne fonctionnera pas totalement sans problèmes car elle monte la partition de démarrage dans le répertoire / (racine) du système de fichiers. Cela fait grub se plaindre que / boot n'existe pas, bien sûr. Cela résoudra ce problème:

mkdir /mnt/chrootdir
mkdir /mnt/chrootdir/boot
mount /dev/sda1 /mnt/chrootdir/boot
for dir in proc dev sys etc bin sbin var usr lib lib64 tmp; do mkdir /mnt/chrootdir/$dir && mount --bind /$dir /mnt/chrootdir/$dir ; done
chroot /mnt/chrootdir
update-grub2  # inside chroot

Comme vous le voyez, j'ai également supprimé les sauts de ligne afin qu'il soit plus facile à exécuter pour tout le monde.

Une autre solution (plus simple)

Si vous continuez à avoir du mal à le faire fonctionner, vous devriez copier la partition / boot sur la partition / (racine). Pour cela, démarrez votre système avec le dvd de démarrage en direct Ubuntu et ouvrez le terminal. À l'intérieur, tapez:

sudo su
fdisk -l

Pour savoir quelles partitions vous avez. Dans mon cas, sda1 est ma partition / boot qui fait environ 250 Mo et une sda5 qui fait environ 500 Go. J'utilise ces valeurs dans les commandes ci-dessous:

mkdir /mnt/boot/
mount /dev/sda1 /mnt/boot/

mkdir /mnt/root/
mount /dev/sda5 /mnt/root/

cp -R /mnt/boot/ /mnt/root/boot/

Définissez l'indicateur d'amorçage pour la partition de données et supprimez-le pour la partition de démarrage:

fdisk /dev/sda
b -> 1 (unset the bootable flag for the first partition)
b -> 5 (set the bootable flag for the fifth partition)
w -> write changes to the MBR

Votre ordinateur va maintenant rechercher les fichiers d’amorçage à l’intérieur du sda5. Il est temps de recommencer à chrooter, cette fois-ci avec certains dossiers requis pour grub et qui sont déjà générés par votre disque live Ubuntu:

mkdir /mnt/chrootdir/
mkdir /mnt/chrootdir/dev/
mkdir /mnt/chrootdir/proc/
mkdir /mnt/chrootdir/sys/

mount /dev/sda5 /mnt/chrootdir/
mount --bind /dev/ /mnt/chrootdir/dev/
mount --bind /proc/ /mnt/chrootdir/proc/
mount --bind /sys/ /mnt/chrootdir/sys/

chroot /mnt/chrootdir/

grub-install /dev/sda

L'installation est terminée. Aucune erreur signalée.

Si vous ne voyez pas de message indiquant que le fichier grub.cnf est généré, lancez également la commande update:

update-grub2 /dev/sda

Maintenant, vous pouvez redémarrer en toute sécurité et voir le menu de démarrage bien connu réapparaître.

Cette solution était la seule qui fonctionnait pour moi après la migration d'un serveur physique vers une machine virtuelle. J'espère que quelqu'un trouvera cela utile!

Tim B.
la source
0

Je sais, c’est un vieux problème, mais j’ai eu les mêmes problèmes aujourd’hui avec la version actuelle de mint-linux (basée sur Ubuntu). J'ai trouvé une solution très simple! :-) Débranchez la connexion Internet lors de la première installation. Cela arrête le chargement d'un grub2 non compatible. Effectuez la mise à jour de tous après l'installation.

Chruegel
la source
0

J'ai la même erreur. Le seul problème était que / vache était toujours monté sur /.

Un petit sudo umount / vache a fait l'affaire.

Simon Lejoly
la source
-6

C'est la commande update-grub qui vous donnera l'erreur quand vous l'utilisez depuis un cd live. J'ai fait face à une situation similaire quand je faisais un sauvetage de vers. Le problème que vous avez est que les commandes update-grub et grub-install ne fonctionnent pas directement sous live cd (je ne sais pas pourquoi). Donc, vous devez aller dans / usr / sbin où se trouvent les commandes et les exécuter à partir de là (par exemple ./update-grub).

aveemashfaq
la source
Non, vous devez monter le disque dur et y chrooter, comme @ green7 l'a dit.
psusi
ma méthode fonctionne aussi. l'essayer sa plus simple
aveemashfaq
1
Tu n'as pas de méthode. / usr / sbin est déjà sur le chemin, il n’est donc pas nécessaire de le copier. Vous ne pouvez pas exécuter grub-install et update-grub directement à partir du cd en direct (comme vous l'avez indiqué) car il tente de configurer grub pour démarrer le système actuel, qui serait le cd en direct, plutôt que l'os installé sur le disque dur. conduire.
psusi
Ceci, bien sûr, ne fonctionne pas. Vous obtenez l'erreur "ne peut pas obtenir le chemin d'accès canonique de / vache". Et les trucs sur le cd-ing vers / usr / sbin ... oh mon dieu.
dan3
essayez les gens. cela a fonctionné pour moi tout le temps
aveemashfaq