Récupération après un crash de «grub rescue>» [fermé]

25

Publié à l'origine sur AskUbuntu.com ...

AskUbuntu a adopté une politique de fermeture des questions sur les versions EOL (End Of Life). Il y a aussi un contingent vocal pour les supprimer. Pour éviter une éventuelle perte de cette question populaire (342335 vues à ce jour), je place ici une version révisée. --- docsalvager

Le système "classique" ...

  • Puppy Linux 5.2.8 (Lucid) basé sur Ubuntu 10.04 (Lucid Lynx)
  • Chargeur de démarrage GRUB 2

GRUB 2 place un certain nombre de *.modfichiers (modules du noyau) dans /boot/grub. La suppression de ces fichiers (pensant qu'il s'agissait de fichiers audio mal placés) a entraîné un échec au redémarrage et l'invite grub rescue>.

Comment récupérer dans cette situation?

DocSalvager
la source
1
Cela semble être une question stupide. Évidemment, vous devez soit restaurer les fichiers supprimés de la sauvegarde, soit réinstaller grub (et il y a déjà beaucoup de questions sur la façon de le faire)
psusi
Les statistiques d'écoute passées absolues sont à peu près aussi pertinentes que celles du journal d'hier.
Anthon
Les journaux du passé ont résolu d'innombrables crimes et ont été responsables de nombreuses résolutions de problèmes qui ont rendu le monde meilleur.
DocSalvager
Il me semble que démarrer en mode de secours à partir du DVD et réinstaller grub à partir de là serait probablement idéal. C'est probablement beaucoup plus simple pour la plupart des gens, car la perte de données mentionnée devrait être limitée aux fichiers du package.
Bratchley
Pour ne pas dire que je ne pense pas que la pêche des fichiers spécifiques hors de l'initrd n'est pas intelligente. Je pense simplement que cela risque de dérouter les gens car c'est pour aider. Le démarrage en mode sauvetage / récupération est une procédure plus courante.
Bratchley

Réponses:

43

Cette réponse s'adresse à d'autres personnes pour lesquelles la réponse de DocSalvager ne fonctionne pas.

  1. J'ai suivi l'utilisation de DocSalvager lspour trouver la bonne partition de disque dur. Dans mon cas, ça l'était (hd0,msdos5).
  2. J'ai ensuite exécuté les commandes suivantes pour revenir à l'écran normal du chargeur de démarrage grub.

    grub rescue>  set boot=(hd0,msdos5)
    grub rescue>  set prefix=(hd0,msdos5)/boot/grub
    grub rescue>  insmod normal  
    grub rescue>  normal  
    
  3. Après avoir démarré dans Ubuntu, j'ai réparé le chargeur de démarrage grub avec les commandes suivantes du terminal.

    sudo grub-install /dev/sda 
    

Veuillez consulter cette source pour une présentation visuelle de ce processus.

Gibado
la source
6
Je suis content que vous ayez posté avant la fermeture
smac89
2
Parfait - exactement l'aide dont j'avais besoin pour démarrer! J'ai également couru sudo update-grubavant grub-install, car la disposition de ma partition avait changé.
mwfearnley
Combien de temps dure la insmod normalcommande? Après avoir appuyé sur Entrée, mon ubuntu se bloque. Certes, il «fonctionne» en tant que machine virtuelle dans Oracle VirtualBox.
snark
1
Mise à jour: Il est finalement revenu avec error: failure reading sector 0x8019a4 from 'hd0'donc je suppose que c'est assez terminal!
snark
réponse légendaire!
zack
28

Récupération d'un crash de sauvetage grub ...

  • grub rescue>ne prend pas en charge cd, cpni aucune autre commande de système de fichiers, à l'exception de sa propre variante, lsqui est en réalité une sorte de findcommande.
  • Donc, d'abord, je devais trouver la partition avec le /bootrépertoire contenant le vmlinuzet les autres fichiers d'image de démarrage ...

    grub rescue>  ls  
    (hd0,4) (hd0,3) (hd0,2) (hd0,1)  
    
    grub rescue>  ls (hd0,4)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,3)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,2)/boot
    ... grub ... initrd.img-2.6.32-33-generic ... vmlinuz-2.6.32-33-generic 
    
    • ls sans arguments renvoie les quatre partitions de ce système.
    • ls (hd0,4)/bootne trouve pas de /bootrépertoire sur la partition (hd0,4).
    • ls (hd0,3)/bootne trouve pas de /bootrépertoire sur la partition (hd0,3).
    • ls (hd0,2)/boottrouve un /bootrépertoire sur la partition (hd0,2)et il contient un vmlinuzet d'autres fichiers d'image de démarrage que nous voulons.
  • Pour démarrer manuellement à partir de l' grub rescue>invite ...

    grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic  
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
    • Définissez rootpour utiliser le /bootrépertoire sur la partition (hd0,2).
    • Charger le module grub linux.
    • Définissez ce module pour utiliser l'image du noyau vmlinuz-2.6.32-33-generic.
    • Définissez initrd (init RAM disk) pour utiliser l'image initrd.img-2.6.32-33-generic.
    • Démarrez Linux.
  • Cela démarre à une invite de ligne de commande BusyBox qui contient toutes les commandes de base du système de fichiers ( et puis certaines! ).

  • Ensuite, pourrait déplacer les *.modfichiers vers le /boot/grubrépertoire ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • Redémarrage réussi!

Voir également ...

DocSalvager
la source
Je ne trouve aucun dossier de démarrage au niveau racine dans la BusyBox
souparno majumder
1
Les images de démarrage vmlinuz, ... que vous recherchez peuvent se trouver dans le système de fichiers racine de niveau supérieur, essayez donc d'utiliser simplement une barre oblique. Cela affichera également les répertoires de niveau supérieur. Si les images de démarrage ne se trouvent pas dans la racine de niveau supérieur, vous pouvez commencer à essayer le répertoire le plus prometteur jusqu'à ce que vous le trouviez. Par exemple: ls (hd0,1)/, ls (hd0,2)/, ls (hd0,2)/initramfs/, etc ..
DocSalvager
Dans mon cas, après avoir couru ls (hd0,7)/boot, ça se voit attempt to read or write outside of disk 'hd0'.
marguerite
Il y a moins de 7 partitions sur le lecteur hd0. Il se peut également qu'il y ait de l'espace non alloué sur le lecteur qui ne fait partie d'aucune partition.
DocSalvager
1
J'ai dû définir le préfixe sur / boot / grub avant de pouvoir exécuter insmod linux!
Emil