errore: file '/grub/i386-pc/normal.mod' non trovato


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

Cosa posso fare? Mi siedo e lo fisso.

Ho trovato il mio vecchio netbook (Dell Inspiron 1010) che non utilizzo da circa quattro anni. Ho sostituito Windows XP con Ubuntu 12.10. Ho usato la mia unità USB avviabile. Ho installato e riavviato. Ho ricevuto il messaggio che normal.modnon è stato trovato.

Cosa dovrei fare? Tipo exit, rebooto quit? Devo reinstallare?


1
LA RISPOSTA SOTTO NON FUNZIONA MAI. Ciò LAVORO: re-installare il sistema operativo, andare a "fare qualcosa di diverso", creare le tabelle di partizione, quindi use your windows partition as your primary boot device. L'ultimo passo è essenziale. NON USARE / avviare. Potrebbe esserci un'altra soluzione: provare a cambiare manualmente il dispositivo di avvio durante l'avvio; tuttavia, non penso che funzionerà. Questo è un problema di vecchia data che è persistito in Ubuntu fino al 17.10 incluso. Grazie.
Wolfpack'08

Nessuna di queste istruzioni ha funzionato per me. In effetti, l'utilizzo dei vari strumenti di recupero ha aggravato il problema. Sono stato in grado di ottenere grub reinstallato ma poiché utilizzo lvm2, il kernel non è stato avviato. Se stai usando lvm2 per qualsiasi cosa, quindi quando si verifica questo problema, dovrai reinstallare il sistema operativo. Per quanto ne so, non c'è recupero da un aggiornamento del kernel fallito + combinazione grub + lvm2. lvm2 vede pochissimo supporto ufficiale nonostante sia stato spinto per Ubuntu Server LTS ad un certo punto. Sto eseguendo il backup dei miei dati e reinstallando il sistema operativo e non toccherò più lvm2. Ho imparato la mia lezione
CubicleSoft,

1
Sono già passato da lvm2 e da allora non ho più avuto problemi. Nessuna delle mie infrastrutture la utilizza più. Le soluzioni di salvataggio del sistema predefinite (sia grafiche che CLI) non sono consapevoli o conoscono a malapena LVM e questo è un motivo sufficiente per non utilizzare LVM. Anche se avessi seguito le tue indicazioni per ripristinare il sistema e funzionassero, il problema probabilmente si ripresenterebbe in futuro. Reinstallare il sistema operativo e abbandonare LVM è stata l'opzione migliore e più veloce per me.
CubicleSoft

1
@Wolfpack nel mio caso il problema è che senza normal.mod set mi impedisce di reinstallare Ubuntu, il lgoin non funziona. Cosa posso fare?
HoCo_

1
@ Wolfpack'08 Si prega di ripubblicare la soluzione come risposta. Pubblicare soluzioni come commenti sta aggirando i principi del sito. Dovresti anche menzionare quale "risposta sotto non funziona mai" poiché ce ne sono più.
Melebius,

Risposte:


40

Grub ha una piccola immagine centrale che viene caricata all'avvio. L'immagine principale carica in modo dinamico i moduli che offrono ulteriori funzionalità. i386-pc/normal.mod not foundindica che grub non può caricare normal.mod , che è un modulo grub che fornisce il comando normale . Per caricare normal.mod devi dire a grub dove si trova. Per fare ciò è possibile utilizzare la riga di comando di grub (nota anche come Rescue Console). Grub avvierà la riga di comando in caso di problemi durante l'avvio, oppure è possibile avviarlo manualmente tenendo premuto il tasto Maiusc all'avvio di grub (per forzare la visualizzazione del menu di grub), quindi premendo il tasto 'c'.

Usando grub puoi esplorare le unità, le partizioni e i filesystem. Devi:

  • individuare l'installazione di grub usando ls o search.file
  • imposta le variabili grub $ prefix e $ root
  • caricare ed eseguire il modulo normale

Esempio

Quello che segue è solo un esempio. Dovrai adattarlo all'unità locale e alla configurazione della partizione.

dov'è normal.mod? cerca in alcune località probabili

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

Se ottieni "Unknown command 'search.file'"questo significa che il comando search.file non è disponibile. Questo probabilmente perché sei al grub rescue>prompt e non al grub>prompt. In questo caso è ancora possibile proseguire e utilizzare il lscomando e la conoscenza del layout della partizione per trovare normal.mod.

trovato a (hd0, msdos1)

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

perché grub non l'ha trovato?
check $ prefix - posizione assoluta della directory di grub
(questo è impostato quando grub è installato da grub-install)

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

check $ root - dispositivo predefinito per percorsi che non includono un dispositivo
grub inizialmente lo imposta sul dispositivo da $ prefisso

grub> echo $root
hd0,msdos2

root e prefisso puntano alla partizione errata (hd0, msdos2)
impostare $ root e $ prefisso sulla partizione dove abbiamo trovato normal.mod (hd0, msdos1)

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

caricare ed eseguire il modulo normale

grub> insmod normal
grub> normal

Alcuni altri comandi che potrebbero essere utili

Elenca tutti i dispositivi e le partizioni

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

La sua partizione

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 filesystem (nota / alla fine)

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/

guardare dentro / boot / grub
presenza della directory i386-pc significa che si tratta di una
presenza di installazione del BIOS della directory x86_64-efi che indica un'installazione EFI

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


+1 Dopo aver seguito questi passaggi per avviare l'installazione di Ubuntu ho corso sudo grub-install /dev/sdXper installare il mio grub. Penso che l'installazione di LVM abbia confuso il mio grub in qualche modo.
DavidG

Immagino che se ottieni il "file di ricerca" del comando sconosciuto come ho appena fatto, è tempo di arrendermi. Il mio consiglio alle persone non è mai installare Ubuntu senza un DVD di ripristino di Windows. Come ho appena scoperto, avere una partizione di ripristino è non abbastanza una volta che Grub viene incasinato. E inoltre, non installare mai Ubuntu sul computer Windows di qualcun altro, perché se si incasina saranno davvero incazzati
Scooter

@Scooter Vedi questa risposta per istruzioni su come reinstallare Grub avviando un CD / USB live.
bagnare il

@bain Grazie per la risposta. Nel mio caso ha fatto una reinstallazione dal disco ISO di Ubuntu. Ubuntu ha scoperto che grub era incasinato o forse semplicemente lo sovrascrive automaticamente, ma lo ha riportato a dove ero di nuovo in grado di riavviare Windows.
Scooter

La shell di salvataggio di Grub non sembra supportare nessuno di questi comandi. "Comando sconosciuto 'search.file'"
Cerin

30

Questo pomeriggio l'ho risolto su una macchina. Sembra che una delle cause di questo problema sia l'installatore che pensa di avere l'avvio sicuro EFI, quando non lo fa e quindi carica i file GRUB errati.

Quello che devi fare è installare GRUB 2. Per fare ciò devi avviare l'istanza live, montare la tua partizione di root e installare.

Da un'istanza live, trova la partizione su cui è caricata la partizione root. GParted te lo dirà o potresti usarlo

sudo fdisk -l

Scegli la partizione in cui è installato Ubuntu.

Una volta che hai la tua partizione devi montarla. Supponendo che la partizione di root sia su / dev / sda5, sarebbe:

sudo mount /dev/sda5 /mnt

Quindi installare GRUB 2

sudo grub-install /dev/sda --root-directory=/mnt [usa copia e incolla per questo in quanto ci sono alcuni spazi che devi trovare nel modo giusto.]

Supponendo che questo sia il tuo problema, allora dovresti essere in grado di riavviare e tutto funzionerà bene.

La soluzione originale per questo era da qui: http://ubuntujournal.blogspot.com/2012/11/fix-new-install-of-ubuntu-1210-wont-boot.html


1
Non ha funzionato per me. Ho lo stesso problema e sto ancora cercando una soluzione.
ExpatEgghead

3
--root-directory è ora --boot-directory in grub2
bain

1
Un'altra soluzione semplice che ha funzionato per me è copiare il backup di grup che si trova in /etc/grub.d/backup in / boot / grub. Controllare il file Leggimi allegato per cartelle e percorsi appropriati.
jhexp,

Nel mio caso il problema era che avevo 2 dischi rigidi e la sequenza del BIOS stava cercando prima sull'unità sbagliata. Quell'unità aveva una vecchia installazione di grub danneggiata.
eusoubrasileiro,

Se non riesci a capire quale sia quello giusto da fdisk, questo SO può aiutare (mi ha aiutato a trovare su quale dispositivo / media / ubuntu / qualche nome era attivo
Michael

2

Non ho trovato queste informazioni sui forum, quindi voglio condividere alcune informazioni nonostante il fatto che questa domanda sia stata posta molto tempo fa:

Se hai una grande partizione (ad esempio 1 TB) con Ubuntu installato e non hai allocato una partizione aggiuntiva per / boot /, potrebbe essere la ragione di tali errori. All'avvio di GRUB, utilizza il driver biosdisk per leggere i normali driver dalla directory / boot / grub /. A volte, questa directory potrebbe trovarsi fisicamente sul disco rigido da qualche parte dopo il massimo supportato dal settore biosdisk. Il problema potrebbe apparire, ad esempio, dopo l'aggiornamento del sistema. Inoltre, ho sempre affrontato quel problema dopo una nuova installazione di Ubuntu 13.10, ma potrebbe differire, poiché dipende dalla scheda madre / BIOS.

Puoi verificare che usando grub recovery - dopo aver impostato PREFIX e ROOT corretti, prova a ls / boot - se non vedi nulla, ma puoi vedere i file lì quando si avvia da cd / flash drive live - di quanto hai il problema sopra descritto .

Puoi fare diverse cose per rendere avviabile il sistema, ma l'unico modo per evitare quel problema in futuro (durante gli aggiornamenti dist) è mettere la directory / boot su una piccola partizione separata.


1

Altre soluzioni potrebbero non funzionare se si arriva al grub-rescueprompt e / o se la configurazione utilizza LVM, questa dovrebbe.

Avvio su un disco di ripristino (suggerimento: mantengo una piccola distribuzione su una partizione dedicata del mio disco USB di backup).

Se si utilizza LVM, trovare il nome del proprio gruppo di volumi con lvdisplayo altri comandi relativi a LVM. Attivalo (altrimenti visualizzerai un mount: special drive /dev/volumegroupname/partition does not existerrore quando provi a montare):

vgchange -a y volumegroupname

Ora monta la tua solita /partizione, ad esempio su /mnt :

mount /dev/volumegroupname/partition /mnt

Montare anche alcuni dispositivi speciali (oltre che /bootsu una partizione separata):

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

Quindi chrootnella tua solita distribuzione:

chroot /mnt

Infine, reinstalla GRUB2 - i comandi possono variare a seconda della tua distribuzione, questo funziona su Slackware (se il tuo disco è /dev/sda):

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

Riavvia e dovresti aver finito.


0

! LA RISPOSTA SELEZIONATA NON FUNZIONA MAI.

QUESTO FUNZIONA:

  1. Reinstalla il tuo sistema operativo , vai a " fai qualcos'altro ", crea le tue tabelle delle partizioni,
  2. Usa la tua partizione di Windows come dispositivo di avvio principale .

Il secondo passo è essenziale .

NON USARE/boot .

Potrebbe esserci un'altra soluzione: provare a cambiare manualmente il dispositivo di avvio durante l'avvio; tuttavia, non penso che funzionerà e devo ancora provarlo.

Questo è un problema di vecchia data che è persistito in Ubuntu fino al 17.10 incluso.

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.