Ripristino di file .mod spostati utilizzando grubrescue


33

Ho fatto una cosa stupida ... Ho dimenticato che Ubuntu 10.04 (Lucid Lynx) è passato a GRUB  2 che inserisce un sacco di file * .mod (moduli del kernel) /boot/grub. Ho pensato che fossero file di colonna sonora messi lì in modo errato e li ho spostati. Inutile dire che il riavvio successivo è stato traumatico. Mi è stato presentato qualcosa che non ricordavo di aver mai visto ... un prompt "grub rescue>".

Con l'aiuto della correzione dell'errore di GRUB: "errore: filesystem sconosciuto" , sono stato in grado di recuperare ...

  • Ho scoperto che il salvataggio di GRUB non ha 'cd', 'cp' o altri comandi del filesystem tranne la sua variazione di 'ls'.
  • Quindi per prima cosa ho dovuto trovare la partizione con la /bootdirectory contenente il vmlinuzfile e altri file di immagine di avvio ... (approssimazione dalla memoria dei tentativi falliti, così come righe vuote per chiarezza, aggiunta a 07-07-2014 da docsalvage)

    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 
    
  • Ho trovato una /bootdirectory contenente il vmlinuzfile vmlinuz-2.6.32-33-genericsulla partizione (hd0,2).

  • Quindi ho avviato manualmente dal prompt 'grub rescue>'. I seguenti comandi ...

    • Impostare il rootper utilizzare la /bootdirectory sulla partizione (hd0,2).
    • Carica il modulo del kernel linux.
    • Imposta quel modulo per usare l'immagine del kernel vmlinuz-2.6.32-33-generic.
    • Imposta initrd (inizializza disco RAM) per usare l'immagine initrd.img-2.6.32-33-generic.
    • Avvia Linux.
  • grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
  • Questo si avvia e si arresta in modo anomalo al prompt BusyBox che ha alcuni comandi rudimentali del filesystem.

  • Quindi ho spostato i file * .mod nella /boot/grubdirectory ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • Il riavvio ha avuto successo, ma è stato un sacco di lavoro.

C'è un modo più semplice?


1
Boot-Repair sarebbe molto più semplice, secondo me. Dai un'occhiata a una delle mie risposte multiple su Boot-Repair per i dettagli su come usarlo.
SirCharlo,

1
Il modo "più semplice" non è sempre il modo migliore. Non sono assolutamente d'accordo con tutti i commenti che suggeriscono di usare un Live CD; è davvero molto difficile avviare da un Live CD su sistemi che non dispongono di un lettore CD / DVD.
Simón,

ican non localizza la partizione con la directory / boot. Tutte le partizioni al comando ls danno un output di filesystem sconosciuto.
Rafed Nole,

1
Il tuo post è stato molto utile per l'avvio manuale del kernel e di initrd, ma il mio sistema non è riuscito a trovare dev, sys o proc, etc / fstab o sbin / init. Questo mi ha portato a un altro post , che mi ha suggerito di caricare il kernel e impostare il root come dettagliato nelle istruzioni di avvio manuali nella documentazione di grub , ad esempio: grub> linux (hd0,X)/boot/vmlinuz-a.b.c-d-generic root=/dev/sdaX dove si Xtrova la partizione /boot, a.b.c-dè la versione del kernel. Quindi il mio sistema si è avviato bene! Grazie!
Mark Mikofski,

1
oltre a [Correggere l'errore di GRUB: "errore: filesystem sconosciuto" [duplicato]] ( askubuntu.com/q/142300/36961 ) un altro ottimo collegamento che copre questi passaggi è Come salvare un GRUB 2 che non si avvia su Linux , il Anche il manuale di grub 2 è molto utile
Mark Mikofski il

Risposte:


5

No. Penso che tu abbia praticamente trovato il modo più semplice per recuperare dallo stato del tuo sistema usando grub rescue ; è un sistema molto minimalista che offre la capacità sufficiente per avviare il sistema.

A proposito, credo che tu abbia trovato i .modfile ed eseguito insmod linuxo il linuxcomando avrebbe fallito.

L'unico altro modo, come detto, sarebbe quello di avviare un Live CD e reinstallare grub2 dopo aver eseguito il chroot sul sistema "rotto".


Hai assolutamente ragione! Ho dimenticato di averlo fatto. Aggiunto al mio post originale sopra per riferimento futuro. Devo essere più disciplinato nel tenere note accurate in queste situazioni. Si prega di avvisare se sono necessarie ulteriori modifiche.
DocSalvager,

Ho anche dovuto specificare root durante il caricamento del kernel come nei documenti di grub, ad esempio grub> linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
Mark Mikofski,

Inoltre, se hai trovato i file .mod, puoi ripristinare "grub rescue" su GRUB completo: # Inspect the current prefix (and other preset variables): set # Find out which devices are available: ls # Set to the correct value, which might be something like this: set prefix=(hd0,1)/grub set root=(hd0,1) insmod normal normal Fonte: gnu.org/software/grub/manual/html_node/…
MegaBrutal

7

Ecco alcune istruzioni generali e di base per aiutare con errori di avvio come GRUB loading stage 1.5 error 15 (ad esempio dopo l'installazione di Windows su un'unità disco diversa):

  1. Avviare con un LiveDVD (ad esempio, il disco Ubuntu Desktop).

  2. Apri un terminale e riscrivi la configurazione di grub usando questi comandi:

    • sudo mount /dev/sdXY /mnt
    • sudo grub-install --root-directory=/mnt /dev/sdX

Dov'è /dev/sdXil disco su cui è installato Ubuntu e/dev/sdXY è la partizione sul disco su cui è installato Ubuntu. In altre parole, /dev/sdXYcontiene /boote così via.

Utilizzare fdisk -lper verificare la posizione di installazione di Ubuntu.


Non ha funzionato. Forse se le indicazioni fossero state più specifiche, avrebbe funzionato.
Tim Stewart,

Quando ho avuto un problema con grub2 su una macchina senza drive cd, sono stato in grado di recuperare usando la mia memory stick USB Gparted Live. Ho avviato Gparted live. ALLORA ho avviato un terminale e ho digitato fdisk -l (che è la lettera ell, non il numero 1) L'output che mi ha permesso di identificare la partizione che aveva la partizione di root e da lì ho seguito le eccellenti istruzioni sopra e presto sono stato felicemente di nuovo dual boot .
Vic

4
  1. Avvia in Live CD

  2. Terminale aperto (CTRL + ALT + T)

  3. Immettere i seguenti comandi:

sudo fdisk -l

E trova la tua partizione Ubuntu (dovrebbe essere / dev / sda1 se è la prima partizione)

sudo mount /dev/sda1 /mnt

sudo mount --bind /sys /mnt/sys

sudo mount --bind /proc /mnt/proc

sudo mount --bind /dev /mnt/dev

sudo chroot /mnt

Ora reinstalla Grub2

sudo apt-get install --reinstall grub2

2
È un modo migliore di sudo mount /dev/sda1 /mnte sudo grub-install --root-directory=/mnt/ /dev/sda && sudo update-grub?

4

Ho avuto lo stesso problema quando ho aggiornato il mio sistema.

Suggerisco i seguenti semplici passaggi:

  1. Avvia il tuo sistema con ubuntu live CD o live USB.
  2. Apri il terminale ed esegui il comando sudo add-apt-repository ppa: yannubuntu / boot-repair && sudo apt-get update
  3. Quindi installare boot repair eseguendo il comando sudo apt-get install -y boot-repair && boot-repair

  4. Avviare la riparazione di avvio dopo l'installazione. Ad esempio, dal menu, utilizzare System->Administration->Boot-Repair (solo Ubuntu 10.04) e seguire le istruzioni.

    Potrebbero essere necessari 15-20 minuti per capire il problema e risolverlo.

Per ulteriori informazioni, visitare il collegamento https://help.ubuntu.com/community/Boot-Repair


0

È possibile avviare il CD live, montare il disco rigido, aprire nautilus come root e copiare i file su / boot.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.