56 votes

erreur : fichier '/Grub/i386-pc/normal.mod' non trouvé

error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>

Qu'est-ce que je peux faire ? Je m'assois juste et je le fixe.

J'ai retrouvé mon ancien netbook (Dell Inspiron 1010) que je n'ai pas utilisé depuis environ quatre ans. J'ai remplacé Windows XP par Ubuntu 12.10. J'ai utilisé ma clé USB amorçable. J'ai installé et redémarré. J'ai reçu le message suivant normal.mod n'est pas trouvé.

Que dois-je faire ? Tapez exit , reboot ou quit ? Dois-je réinstaller ?

47voto

bain Points 10495

Grub possède une petite image de base qui est chargée au moment du démarrage. L'image de base charge dynamiquement des modules qui fournissent des fonctionnalités supplémentaires. i386-pc/normal.mod not found indique que Grub ne peut pas charger normal.mod qui est un module Grub qui fournit le module commande normale . Pour charger normal.mod vous devez dire à Grub où il se trouve. Pour ce faire, vous pouvez utiliser la ligne de commande Grub (alias Rescue Console). Grub lancera la ligne de commande s'il y a un problème de démarrage, ou vous pouvez la lancer manuellement en maintenant la touche shift lorsque Grub démarre (pour forcer l'affichage du menu Grub), puis en appuyant sur la touche 'c'.

En utilisant Grub, vous pouvez explorer les lecteurs, les partitions et les systèmes de fichiers. Vous devez :

  • localiser l'installation de Grub en utilisant ls o recherche.fichier
  • définir les variables Grub $prefix et $root
  • charger et exécuter le module normal

Exemple

Ce qui suit n'est qu'un exemple. Vous devrez l'adapter à votre configuration locale de disques et de partitions.

où se trouve normal.mod ? regardez dans quelques emplacements probables

grub> search.file /i386-pc/normal.mod
error: no such device: /i386-pc/normal.mod

grub> search.file /grub/i386-pc/normal.mod
error: no such device: /grub/i386-pc/normal.mod

grub> search.file /boot/grub/i386-pc/normal.mod
hd0,msdos1

Si vous obtenez "Unknown command 'search.file'" cela signifie que la commande search.file n'est pas disponible. C'est probablement parce que vous êtes à l'étape grub rescue> rapide et non grub> rapide. Dans ce cas, vous pouvez toujours continuer et utiliser l'application ls et votre connaissance de l'agencement de votre partition pour trouver normal.mod .

trouvé à (hd0,msdos1)

grub> ls (hd0,msdos1)/boot/grub/i386-pc/normal.mod
normal.mod

pourquoi Grub ne l'a pas trouvé ?
vérifier $prefix - emplacement absolu du répertoire Grub.
(ceci est défini lorsque Grub est installé par Grub-install)

grub> echo $prefix
(hd0,msdos2)/boot/grub

check $root - périphérique par défaut pour les chemins qui n'incluent pas de périphérique
Grub le fixe initialement au dispositif de $prefix.

grub> echo $root
hd0,msdos2

root et prefix pointent vers la mauvaise partition (hd0,msdos2)
mettre $root et $prefix sur la partition où nous avons trouvé normal.mod (hd0,msdos1)

grub> set root=(hd0,msdos1)
grub> set prefix=(hd0,msdos1)/boot/grub

charger et exécuter le module normal

grub> insmod normal
grub> normal

D'autres commandes qui peuvent être utiles

ls liste tous les périphériques et partitions

grub> ls
(hd0) (hd0,msdos5) (hd0,msdos1)

ls partition

grub> ls (hd0,msdos1)
        Partition hd0,msdos1: Filesystem type ext* - Last modification time
2014-05-08 15:56:38 Thursday, UUID c864cbdd-a2ba-43a4-83a3-66e305adb1b6 -
Partition start at 1024KiB - Total size 6290432Kib

ls système de fichiers (notez / à la fin)

grub> ls (hd0,msdos1)/
lost+found/ etc/ media/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/ proc/
root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz initrd.img cdrom/

regarder dans /boot/Grub
la présence du répertoire i386-pc signifie qu'il s'agit d'une installation BIOS
la présence du répertoire x86_64-efi indique une installation EFI

grub> ls (hd0,msdos1)/boot/grub
i386-pc/ locale/ fonts/ grubenv grub.cfg

36voto

MorrisseyJ Points 621

J'ai résolu ce problème sur une machine cet après-midi. Il semble qu'une des causes de ce problème soit que l'installateur pense que vous avez un démarrage sécurisé EFI, alors que ce n'est pas le cas et donc charge les fichiers Grub incorrects.

Ce que vous devez faire, c'est installer Grub 2. Pour ce faire, vous devez démarrer sur l'instance live, monter votre partition racine et installer.

A partir d'une instance live, trouvez la partition sur laquelle votre partition racine est chargée. GParted vous le dira, ou vous pouvez utiliser

sudo fdisk -l

Allez chercher la partition dans laquelle ubuntu est installé.

Une fois que vous avez votre partition, vous devez la monter. En supposant que la partition racine est sur /dev/sda5, ce sera :

sudo mount /dev/sda5 /mnt

Puis installez Grub 2

sudo grub-install /dev/sda --root-directory=/mnt (utilisez le copier-coller pour celui-ci car il y a des espaces que vous devez respecter).

En supposant que c'est votre problème, vous devriez pouvoir redémarrer et tout devrait fonctionner correctement.

La solution originale pour cela se trouvait ici : http://ubuntujournal.blogspot.com/2012/11/fix-new-install-of-ubuntu-1210-wont-boot.html

3voto

Les autres solutions peuvent ne pas fonctionner si vous arrivez à la grub-rescue et/ou votre configuration utilise LVM, celui-ci devrait le faire.

Démarrez sur un disque de secours (astuce : je garde une petite distribution sur une partition dédiée de mon disque USB de sauvegarde).

Si vous utilisez LVM, trouvez le nom de votre groupe de volumes avec lvdisplay ou d'autres commandes liées à LVM. Activez-la (sinon vous obtiendrez un mount: special drive /dev/volumegroupname/partition does not exist erreur lors de la tentative de montage) :

vgchange -a y volumegroupname

Maintenant, montez votre / partition, par exemple sur /mnt  :

mount /dev/volumegroupname/partition /mnt

Monter quelques dispositifs spéciaux également (ainsi que des /boot si sur une partition séparée) :

mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t sysfs /sys /mnt/sys

Puis chroot dans votre distribution habituelle :

chroot /mnt

Enfin, réinstallez GRUB2 - les commandes peuvent varier en fonction de votre distribution, cela fonctionne sur Slackware (si votre lecteur est /dev/sda ) :

grub-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

Redémarrez et vous devriez avoir terminé.

2voto

Wayne Points 41

Je n'ai pas trouvé cette information sur les forums, alors je veux partager quelques informations malgré le fait que cette question a été posée il y a longtemps :

Si vous avez une grande partition (par exemple 1TB) avec l'installation d'Ubuntu et que vous n'en avez pas alloué une supplémentaire pour /boot/, cela pourrait être la cause de telles erreurs. Lorsque Grub démarre, il utilise le pilote biosdisque pour lire les pilotes normaux dans le répertoire /boot/Grub/. Parfois, ce répertoire pourrait être physiquement situé sur le disque dur quelque part après le secteur maximum supporté par biosdisk. Le problème peut apparaître, par exemple, après une mise à jour du système. De même, je suis toujours confronté à ce problème après une nouvelle installation d'Ubuntu 13.10, mais cela peut varier, car cela dépend de la carte mère/bios.

Vous pouvez vérifier cela en utilisant Grub recovery - après avoir défini le PREFIX et le ROOT corrects, essayez de ls /boot - si vous ne voyez rien, mais que vous pouvez y voir des fichiers lorsque vous démarrez à partir d'un live cd/flash drive - alors vous avez le problème décrit ci-dessus.

Vous pouvez faire différentes choses pour rendre le système amorçable, mais la seule façon d'éviter ce problème à l'avenir (lors des mises à jour de disque) est de mettre le répertoire /boot sur une petite partition séparée.

0voto

ChrisO Points 1580

Réinstallation de Grub à partir de la réponse ci-dessus de MorrisseyJ ( https://askubuntu.com/a/286028/795299 ) a aidé, mais j'avais toujours l'erreur du module non trouvé. Il cherchait les fichiers dans /Grub.. au lieu de /boot/Grub Même après avoir réinstallé Grub avec plusieurs méthodes, quelque chose continuait à pointer là (grubenv peut-être). Finalement, j'ai renommé le répertoire /boot et utilisé la fonction grub-install /dev/sda --boot-directory=/mnt/boot et cela a finalement changé l'emplacement de $prefix.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X