Errore di errore: il file '/grub/i386-pc/normal.mod' non è stato trovato?


17

Recentemente ho installato arch (si spera con successo) sul mio computer. Quando sono andato al riavvio, tuttavia, ho avuto un problema. Ho una schermata nera con il testo che dice

Grub loading.
Welcome to GRUB!
error: file '/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>

Da allora ho cercato su Google una risposta. Ne ho quasi trovato uno qui sui forum di Ubuntu, ma poi ho visto uno dei commenti dicendo che era falso. C'è anche un'altra risposta, ma non sono sicuro di voler installare dal CD live per paura di rovinare tutto.

Capiresti la mia paura se anche tu avessi trascorso 7 ore a configurarlo dopo aver costantemente incontrato problemi di partizionamento, comando, tutorial e sistema. Che gioia

Qualcuno sa di una soluzione semplice per far funzionare grub?


Il secondo suggerimento (con liveCD e chroot) probabilmente vale la pena provare. O una variazione su di esso: non sono un utente di Arch ma l'ho già installato e, da quello che ricordo, potresti voler contemplare quel suggerimento in relazione alle varie fasi dell'installazione di Arch, alcune delle quali comportano un chroot. Se è possibile tornare indietro a un passaggio precedente avviando il CD dell'arch e quindi montandolo e eseguendo il chrooting nell'installazione, si dovrebbe essere in grado di provare grub-install. Non è necessario ripetere nessuno dei passaggi, basta usarli come guida per ottenere il chroot da un LiveCD.
Riccioli d'oro

Mentre io non sono al computer in questo momento credo ho provato il grub installare e non ha fatto lavoro.-
Griffin

@Griffin Non ha funzionato come in "grub-install" fallito o non ha risolto il problema?
derobert

@derobert grub-install non era un comando valido \
Griffin

@goldilocks Il secondo non funziona neanche
Griffin

Risposte:


9

Una cosa davvero fastidiosa ...

Dato che apparentemente la directory / boot / grub / i386-pc semplicemente non era a posto, ho finalmente risolto il problema copiando l'intero / usr / lib / grub / i386-pc su / boot / grub. È tutto.

cp -r /usr/lib/grub/i386-pc /boot/grub

L'ho fatto anche perché mancava anch'io. Sfortunatamente, ciò non ha risolto il problema.
Wolfpack'08

8

Sono nel mezzo di un problema simile (per inciso anche sull'arco)

Grub non riesce a trovare questo file ed eseguire perché utilizza un "prefisso" errato

Ecco cosa fai. Ti avvii in modalità di salvataggio di GRUB, quindi capisci semplicemente come avviarlo.

Per prima cosa esegui set questo elencherà le variabili, per esempio il mio è

cmdpath=(hd0)
prefix=(hd1,msdos3)/boot/grub
root=hd1,msdos3

Ora, il prefisso è la variabile in cui grub cerca il file normal.mod. Nel mio caso hd1, msdos3 è lo stesso di / dev / sdb3 (allo stesso modo, hd0, msdos1 sarebbe / dev / sda1) quello che potresti voler fare per vedere un elenco di partizioni valide è digitare in ls

Ora, nel mio caso, di nuovo, grub è stato installato su / dev / sdb1 che è stato montato come / boot nella mia partizione di arco, quindi il prefisso corretto sarebbe (hd1, msdos1) / grub

Quindi per me l'avvio, devo fare questo:

set prefix=(hd1,msdos1)/grub
insmod normal
normal

Nel tuo caso dovrai ricordare o indovinare su quale partizione hai installato grub. Puoi indovinare, non farà alcun danno, il comando insmod semplicemente fallirà e puoi riprovare con un'altra partizione.

Dopo questo, grub si carica come dovrebbe normalmente, e posso scegliere dalla lista ciò che voglio avviare. Normalmente quando si verifica un disastro come questo, reinstallare grub su mbr (usando grub-install ) dovrebbe risolverlo in modo permanente, quindi non è necessario farlo ogni volta che si avvia. Tuttavia, ho molte difficoltà a scoprire cosa fare se risolverlo non è così facile (o condividerei quello che dovresti fare).

Solo se fallisce (ad es. Se il prefisso è corretto ma non riesci ancora ad avviarlo) dovresti ricorrere a vivere o salvare cd per aggirare il problema (è meglio evitarlo)


Potrebbe trattarsi di una domanda un po 'vecchia, ma ho scoperto che qualcuno doveva rispondere a come usare effettivamente il salvataggio di grub invece di andare in giro a usare cd e web live per sistemare le cose. Non sempre disponiamo di supporti live per aiutarci e, anche se lo facciamo, di solito è meglio lavorare dal nostro ambiente preferito.
Cestarian,

Grande spiegazione! (Soprattutto la nota "indovinare il male non farà male a niente"). Ho riscontrato lo stesso problema con un sistema dual boot Windows + Ubuntu, dopo aver erroneamente pensato che l'eliminazione di una partizione Windows non avrebbe avuto alcun impatto su Ubuntu. Ad ogni modo, questo post ha davvero aiutato a capire come correggere l'errore. Dato che non riuscivo a ricordare in quale partizione fosse contenuto grub, li ho elencati tutti con ls, quindi li ho provati uno per uno fino a quando non ho raggiunto la giusta combinazione :-)
Leigh

@Leigh felice che abbia aiutato qualcuno :)
Cestarian il

1
Riparare qualcosa è sempre buono, ma capire come è stato risolto è ancora meglio :-) Saluti.
Leigh,

Sei un genio
Ashish Doneriya,

5

Ho avuto questo problema oggi dopo una nuova installazione di Mint 15.

Il programma di installazione ha creato /boot/grub/x86_64-efimoduli ma non il normale/boot/grub/i386-pc moduli .

Una reinstallazione di Grub dal Live CD ha risolto il problema.

Sostituire / dev / sda e / dev / sda1 con il dispositivo di avvio e la partizione di avvio ed eseguire i seguenti comandi dal Live CD:

sudo mount /dev/sda1 /mnt
sudo grub-install --boot-directory=/mnt /dev/sda
sudo reboot

1

Grazie per il tuo post. Ho risolto un messaggio di errore quasi identico: "file '/grub2/i386-pc/normal.mod' non trovato" dopo una nuova installazione di Linux CentOS 5.11 su un vecchio computer Dell Optiplex con Windows Vista, al fine di creare un doppio sistema di avvio.

Ciò che complicò la mia situazione era che avevo già provato e non avevo installato la nuova distro Fedora 20, che utilizza GRUB2 invece di GRUB (LEGACY), sulle partizioni predefinite di FEDORA. Quindi ho provato a installare CentOS direttamente su quello, mantenendo la partizione di Windows e sovrascrivendo le partizioni FEDORA.

Durante l'installazione di CentOS, ho lasciato la mia prima partizione (Windows) da sola (hd0,0) e ho creato la directory / boot su una seconda partizione (di avvio) (hd0,1). Ho quindi scelto di non modificare l'MBR in quel momento e invece ho selezionato l'altra opzione (bootloader su un'altra partizione).

Dopo quella che sembrava essere stata eseguita con successo l'installazione, è stata riavviata nell'errore sopra riportato.

Sospetto che le informazioni di avvio sulla prima partizione continuassero a puntare alla posizione di GRUB2. La CPU non è riuscita a trovare normal.mod, forse perché le partizioni FEDORA00 precedentemente create erano state rimosse.

Ecco i miei passi:

  1. Avvio dal CD di installazione di Centos 5 in modalità di ripristino ("ripristino linux").

  2. Montare l'unità locale: chroot / mnt / sysimage

  3. Passa alla modalità utente singolo: su

  4. Aggiorna l'installazione di CentOS: yum update

  5. Utilizzare l'editor emacs per aggiungere "Microsoft Windows Vista" al file grub.conf: emacs /boot/grub/grub.conf e impostare Vista come sistema operativo predefinito.

    ( NOTA: vedi www.cyberciti.biz/faq/grubconf-for-windows-vista-or-xp-dual-boot/ e https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html /Installation_Guide/sn-medialess-editing-grub-conf.html .)

  6. Tentativo di aggiornare l'MBR: grub-install / dev / hda

  7. Riavvia a un errore GRUB non identificato, in cui la CPU si è bloccata dopo aver visualizzato "GRUB".

  8. Riavviare dal disco di installazione originale di Windows Vista (o altro disco di ripristino di Windows) e selezionare l'opzione per riparare il disco. Ricevi il messaggio che l'MBR è stato riparato.

  9. Riavvia correttamente in Windows Vista.

Sono sicuro che esistano soluzioni più eleganti, ma questo ha funzionato per me. Ho anche tentato di scaricare il pacchetto di migrazione da GRUB a GRUB2, come descritto su http://help.ubuntu.com/community/Grub2/Upgrading , provando:

$ yum install grub-pc

Ma non è stato possibile trovare il pacchetto. Forse avrei dovuto solo provare yum install grub.


0

Aggiunta a flittermice ...

se si avvia da USB e si dispone della cartella i386, è possibile aprire la cartella i386 sulla partizione rotta come root e quindi copiare la cartella i386 funzionante da USB.


0

Sono entrato nel mio sistema CentOS 6.7 in due fasi. Innanzitutto, ho seguito i consigli di flittermice sopra, avviato dal live CD, montato il mio / dev / sda2 come / mnt e appena copiato la cartella i386-pc da / mnt / usr / ... (puoi trovare dove si trova il tuo difind /|grep i386 ) a / boot / grub e riavviato.

Questo mi ha dato grub> invece di grub rescue> ;-).

Quindi ho seguito una guida qui [ https://www.linux.com/learn/tutorials/776643-how-to-rescue-a-non-booting-grub-2-on-linux/] per trovare e avviare la mia partizione. Era (hd0,2), perché (hd0,1) è stato preso dallo swap.

Più tardi, ho capito che rendere questo avvio "automatico" non era possibile, probabilmente perché my / boot era su ext4 con dimensione di inode 256 e il vecchio grub1 richiede 128. Proverò a seguire alcuni comandi da [ http: // kb.kristianreese.com/index.php?View=entry&EntryID=113] per preparare la partizione prima dell'installazione.


0

Reinstalla Ubuntu. Vai a "fai qualcos'altro". Seleziona la partizione di installazione di Windows come posizione in cui installare il caricatore di avvio.

Se si dispone di un'installazione di Windows esistente, è necessario installare grub nella stessa partizione; altrimenti, avrai il problema visto nella domanda.

Questo è rilevante per Ubuntu 14, 15, 16, 17 tutte le versioni e probabilmente versioni precedenti. Quando viene chiesto dove installare il caricatore di avvio, non creare e selezionare una partizione / boot; utilizzare invece la partizione di Windows.

Grazie.


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.