web-dev-qa-db-fra.com

Impossible d'obtenir le chemin canonique de / vache

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. presse Shift+Alt+F1 obtenir le terminal.
  6. ouvrez la grub 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?

41
ulkaNCST

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é sur la partition grub. (Remplacez /dev/sda1 ci-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
28
Nathan Kidd

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
9
Dagelf

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é, exécutez é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!

5
Tim B.

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

Un peu Sudo umount/vache a fait le tour.

0
Simon Lejoly

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.

0
Chruegel