Wiederherstellung nach einem 'Grub Rescue>' Absturz [geschlossen]

25

Ursprünglich auf AskUbuntu.com gepostet ...

AskUbuntu hat eine Richtlinie zum Schließen von Fragen zu EOL-Versionen (End Of Life) eingeführt. Es gibt ein Gesangskontingent, um sie ebenfalls zu entfernen. Um einen möglichen Verlust dieser beliebten Frage zu vermeiden (bisher 342335 Aufrufe), platziere ich hier eine überarbeitete Version. --- docsalvager

Das "klassische" System ...

  • Puppy Linux 5.2.8 (Lucid) basierend auf Ubuntu 10.04 (Lucid Lynx)
  • GRUB 2 -Bootloader

In GRUB 2 werden mehrere *.modDateien (Kernelmodule) abgelegt /boot/grub. Das Löschen dieser Dateien (als fehl am Platz befindliche Audiodateien) führte zu einem Fehler beim Neustart und der Aufforderung grub rescue>.

Wie kann man sich in dieser Situation erholen?

DocSalvager
quelle
1
Scheint wie eine blöde Frage. Natürlich stellen Sie entweder die gelöschten Dateien aus dem Backup wieder her oder installieren grub neu (und es gibt bereits viele Fragen dazu)
psusi
Die absoluten Statistiken der Vergangenheit sind ungefähr so ​​relevant wie die der gestrigen Zeitung.
Anthon
Zeitungen aus der Vergangenheit haben unzählige Verbrechen aufgeklärt und viele Probleme gelöst, die die Welt zu einem besseren Ort gemacht haben.
DocSalvager
Es scheint mir, dass das Booten in den Rettungsmodus von der DVD und das erneute Installieren von grub von dort aus wahrscheinlich ideal wäre. Für die meisten Menschen ist dies wahrscheinlich einfacher, da der erwähnte Datenverlust auf die Dateien im Paket beschränkt sein sollte.
Bratchley
Um nicht zu sagen, dass ich nicht denke, dass das Fischen der spezifischen Dateien aus der initrd nicht klug ist. Ich denke nur, dass es die Leute verwirren und helfen kann. Das Booten in den Rettungs- / Wiederherstellungsmodus ist ein häufigeres Verfahren.
Bratchley

Antworten:

43

Diese Antwort ist für andere da draußen, für die die Antwort von DocSalvager nicht funktioniert.

  1. Ich folgte DocSalvagers Verwendung ls, um die richtige Festplattenpartition zu finden. In meinem Fall war es das (hd0,msdos5).
  2. Dann habe ich die folgenden Befehle ausgeführt, um zum normalen Grub-Bootloader-Bildschirm zurückzukehren.

    grub rescue>  set boot=(hd0,msdos5)
    grub rescue>  set prefix=(hd0,msdos5)/boot/grub
    grub rescue>  insmod normal  
    grub rescue>  normal  
    
  3. Nach dem Booten in Ubuntu habe ich den Bootloader mit den folgenden Befehlen vom Terminal repariert.

    sudo grub-install /dev/sda 
    

Verweisen Sie auf diese Quelle, um eine visuelle Darstellung dieses Prozesses zu erhalten.

Gibado
quelle
6
Ich bin froh, dass ihr gepostet habt, bevor dies geschlossen wurde
smac89
2
Perfekt - genau die Hilfe, die ich zum Booten brauchte! Ich lief auch sudo update-grubvor grub-install, weil mein Partitionslayout verändert hatte.
Mwfearnley
Wie lange dauert der insmod normalBefehl? Nach dem Drücken der Eingabetaste bleibt mein Ubuntu hängen. Zugegeben, es läuft als VM in Oracle VirtualBox.
Snark
1
Update: Es kam irgendwann mit zurück, error: failure reading sector 0x8019a4 from 'hd0'also denke ich, es ist ein hübsches Terminal!
Snark
legendäre Antwort!
Zack
28

Wiederherstellung nach einem Rettungsunfall ...

  • grub rescue>nicht unterstützt cd, cpoder anderes Dateisystem Befehle außer seine eigenen Variation von lsder ist wirklich eine Art von findBefehl.
  • Also musste zuerst die Partition mit dem /bootVerzeichnis gefunden werden, das die vmlinuzund andere Boot-Image-Dateien enthält ...

    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 Ohne Argumente werden die vier Partitionen auf diesem System zurückgegeben.
    • ls (hd0,4)/bootfindet kein /bootVerzeichnis auf der Partition (hd0,4).
    • ls (hd0,3)/bootfindet kein /bootVerzeichnis auf der Partition (hd0,3).
    • ls (hd0,2)/bootfindet ein /bootVerzeichnis auf der Partition (hd0,2)und enthält ein vmlinuzund andere Boot-Image-Dateien, die wir wollen.
  • So booten Sie manuell von der grub rescue>Eingabeaufforderung ...

    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  
    
    • Legen Sie fest root, dass das /bootVerzeichnis auf der Partition verwendet wird (hd0,2).
    • Laden Sie das Grub-Modul linux.
    • Stellen Sie dieses Modul so ein, dass es das Kernel-Image verwendet vmlinuz-2.6.32-33-generic.
    • Stellen Sie initrd (init RAM disk) ein, um das Image zu verwenden initrd.img-2.6.32-33-generic.
    • Booten Sie Linux.
  • Dies startet mit einer BusyBox- Eingabeaufforderung, die alle grundlegenden Dateisystembefehle ( und noch einige mehr! ) Enthält .

  • Dann könnten die *.modDateien wieder in das /boot/grubVerzeichnis verschoben werden ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • Erfolgreicher Neustart!

Siehe auch ...

DocSalvager
quelle
Ich kann in der BusyBox
souparno majumder
1
Die vmlinuz, ... -Startimages, nach denen Sie suchen, befinden sich möglicherweise im Root-Dateisystem der obersten Ebene. Verwenden Sie also nur einen Schrägstrich. Daraufhin werden auch Verzeichnisse der obersten Ebene angezeigt. Befinden sich die Boot-Images nicht im Stammverzeichnis der obersten Ebene, können Sie versuchen, das vielversprechendste Verzeichnis zu finden, bis Sie es gefunden haben. Zum Beispiel: ls (hd0,1)/, ls (hd0,2)/, ls (hd0,2)/initramfs/, etc ..
DocSalvager
In meinem Fall, nach dem Laufen ls (hd0,7)/boot, es zeigt attempt to read or write outside of disk 'hd0'.
Daisy
Auf dem Laufwerk hd0 befinden sich weniger als 7 Partitionen. Es kann auch sein, dass auf dem Laufwerk nicht zugeordneter Speicherplatz vorhanden ist, der nicht Teil einer Partition ist.
DocSalvager
1
Ich musste das Präfix auf / boot / grub setzen, bevor ich insmod linux ausführen durfte!
Emil