Error de Grub: ¿no se encontró el archivo '/grub/i386-pc/normal.mod'?

17

Recientemente instalé arch (espero que sea exitoso) en mi máquina. Sin embargo, cuando fui a reiniciar tuve un problema. Tengo una pantalla negra con texto que dice

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

Desde entonces busqué en Google buscando una respuesta. Casi encuentro uno aquí en los foros de Ubuntu, pero luego vi uno de los comentarios que decía que no era cierto. También hay otra respuesta, pero no estoy seguro de si quiero instalar desde el CD en vivo por miedo a estropear las cosas.

Entendería mi miedo si usted también pasara 7 horas configurando esto después de encontrarse constantemente con problemas de sistema, particiones, comandos y tutoriales. Que alegria.

¿Alguien sabe de una solución fácil para hacer que grub funcione?

Grifo
fuente
Probablemente valga la pena probar la segunda sugerencia (con liveCD y chroot). O una variación: no soy un usuario de Arch, pero lo he instalado antes, y por lo que recuerdo, es posible que desee contemplar esa sugerencia en relación con las diversas etapas de instalación de Arch, algunas de las cuales implican un chroot. Si puede retroceder a un paso anterior arrancando el CD del arco y luego montando y haciendo chrooting en su instalación, debería poder intentarlo grub-install. No es necesario que repita ninguno de los pasos, solo úselos como guía para obtener acceso directo desde un liveCD.
Ricitos de oro
Si bien no estoy en la computadora en este momento, creo que probé la instalación de grub y no funcionó.-
Griffin
@Griffin ¿No funcionó ya que en "grub-install" falló o no solucionó el problema?
derobert
@derobert grub-install no era un comando válido \
Griffin
@goldilocks El segundo tampoco funciona
Griffin

Respuestas:

9

Una cosa realmente molesta ...

Como aparentemente el directorio / boot / grub / i386-pc simplemente no estaba en su lugar, finalmente resolví el problema copiando todo / usr / lib / grub / i386-pc a / boot / grub. Eso es todo.

cp -r /usr/lib/grub/i386-pc /boot/grub
flittermice
fuente
También hice eso porque también faltaba. Desafortunadamente, eso no lo solucionó.
Wolfpack'08
8

Estoy en medio de un problema similar (por cierto también en el arco)

Grub no puede encontrar este archivo y ejecutarlo porque está usando un "prefijo" incorrecto

Aquí está lo que haces. Arrancas en modo de rescate de grub, luego simplemente descubres cómo hacerlo arrancar.

Primero ejecute set, esto mostrará una lista de variables, por ejemplo, la mía es

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

Ahora, el prefijo es la variable donde grub busca el archivo normal.mod. En mi caso hd1, msdos3 es lo mismo que / dev / sdb3 (de forma similar, hd0, msdos1 sería / dev / sda1) lo que puede hacer para ver una lista de particiones válidas es escribir ls

Ahora, en mi caso, nuevamente, grub se instaló en / dev / sdb1 que se montó como / boot en mi partición de arco, por lo que el prefijo correcto sería (hd1, msdos1) / grub

Entonces, para que arranque, necesito hacer esto:

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

En su caso, tendrá que recordar o adivinar en qué partición instaló grub. Puedes adivinar mal, no hará ningún daño, el comando insmod simplemente fallará y puedes intentarlo de nuevo con otra partición.

Después de esto, grub se carga como normalmente debería, y puedo seleccionar de la lista lo que quiero arrancar. Normalmente, cuando ocurre un desastre como este, reinstalar grub en su mbr (usando grub-install ) debería arreglarlo permanentemente para que no tenga que hacer esto cada vez que arranque. Sin embargo, estoy teniendo muchas dificultades descubrir qué hacer si arreglarlo no es tan fácil (o compartiría lo que debe hacer).

Solo si esto falla (por ejemplo, si el prefijo es correcto pero aún no puede arrancar) debe recurrir a vivir o rescatar CD para solucionar el problema (es mejor evitarlo)

Cestariano
fuente
Esta podría ser una pregunta un poco vieja, pero descubrí que alguien tenía que responder cómo usar realmente grub rescue en lugar de agitarse usando CDs y usb en vivo para arreglar las cosas. No siempre tenemos medios en vivo disponibles para ayudarnos, e incluso si lo hacemos, generalmente es mejor trabajar desde nuestro entorno preferido.
Cestariano
¡Gran explicación! (Especialmente la nota sobre "adivinar mal no hará daño a nada"). Me encontré con el mismo problema con un sistema de Windows de arranque dual + Ubuntu, después de pensar erróneamente que eliminar una partición de Windows no tendría ningún impacto en Ubuntu. De todos modos, esta publicación realmente ayudó a comprender cómo solucionar el error. Como no podía recordar qué partición contenía grub, simplemente los enumeré todos ls, luego los probé uno por uno hasta que encontré la combinación correcta :-)
Leigh
@Leigh me alegro de haber ayudado a alguien :)
Cestarian
1
Arreglar algo siempre es bueno, pero comprender cómo lo solucionó es aún mejor :-) Saludos.
Leigh
Eres un genio
Ashish Doneriya
5

Acabo de tener este problema hoy después de una nueva instalación de Mint 15.

El instalador creó /boot/grub/x86_64-efimódulos pero no los regulares./boot/grub/i386-pc módulos .

Una reinstalación de Grub desde el Live CD solucionó el problema.

Reemplace / dev / sda y / dev / sda1 con su dispositivo de arranque y partición de arranque y ejecute los siguientes comandos desde el Live CD:

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

Gracias por tu publicación Resolví un mensaje de error casi idéntico: "archivo '/grub2/i386-pc/normal.mod' no encontrado" después de una nueva instalación de Linux CentOS 5.11 en una vieja computadora Dell Optiplex con Windows Vista, para hacer un doble -sistema de arranque.

Lo que complicó mi situación fue que ya había intentado y no había podido instalar la nueva distribución Fedora 20, que usa GRUB2 en lugar de GRUB (LEGACY), en las particiones predeterminadas de FEDORA. Luego intenté instalar CentOS directamente sobre eso, manteniendo la partición de Windows y sobrescribiendo las particiones FEDORA.

Durante la instalación de CentOS, dejé mi primera partición (Windows) sola (hd0,0) y creé el directorio / boot en una segunda partición (boot) (hd0,1). Luego elegí no modificar el MBR en ese momento y en su lugar seleccioné la otra opción (gestor de arranque en otra partición).

Después de lo que parecía ser una instalación exitosa, se reinició en el error anterior.

Sospecho que la información de arranque en la primera partición seguía apuntando a la ubicación GRUB2. La CPU no pudo encontrar normal.mod, tal vez porque las particiones FEDORA00 creadas previamente se habían eliminado.

Aquí están mis pasos:

  1. Arrancar desde mi CD de instalación de Centos 5 en modo de rescate ("linux rescue").

  2. Monte la unidad local: chroot / mnt / sysimage

  3. Cambiar al modo de usuario único: su

  4. Actualice la instalación de CentOS: yum update

  5. Use el editor de emacs para agregar "Microsoft Windows Vista" al archivo grub.conf: emacs /boot/grub/grub.conf, y haga que Vista sea el sistema operativo predeterminado.

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

  6. Intente actualizar el MBR: grub-install / dev / hda

  7. Reinicie a un error GRUB no identificado, en el que la CPU se bloqueó después de mostrar "GRUB".

  8. Reinicie desde el disco de instalación original de Windows Vista (u otro disco de recuperación de Windows) y seleccione la opción para reparar el disco. Recibir mensaje de que el MBR ha sido reparado.

  9. Reiniciar correctamente en Windows Vista.

Estoy seguro de que existen soluciones más elegantes, pero esto funcionó para mí. También intenté descargar el paquete de migración de GRUB a GRUB2, como se describe en http://help.ubuntu.com/community/Grub2/Upgrading , intentando:

$ yum install grub-pc

Pero no pudo encontrar el paquete. Quizás debería haberlo intentado yum install grub.

dkergyl
fuente
0

Agregando a flittermice ...

si arranca desde un USB y tiene la carpeta i386, puede abrir la carpeta i386 en la partición rota como raíz y luego copiar la carpeta i386 de trabajo desde el usb.

Jacob David C. Cunningham
fuente
0

Ingresé a mi sistema CentOS 6.7 en dos etapas. Primero, he seguido los consejos de flittermice anteriores, arranqué desde el CD en vivo, monté mi / dev / sda2 como / mnt y simplemente copié la carpeta i386-pc de / mnt / usr / ... (puedes encontrar dónde está la tuya) porfind /|grep i386 ) a / boot / grub y reiniciado.

Esto me dio grub> en lugar de grub rescue> ;-).

Entonces he seguido una guía aquí [ https://www.linux.com/learn/tutorials/776643-how-to-rescue-a-non-booting-grub-2-on-linux/] para buscar e iniciar en mi partición Era (hd0,2), porque (hd0,1) fue tomada por el intercambio.

Más tarde, descubrí que hacer que este arranque sea "automático" no fue posible, probablemente porque mi / boot estaba en ext4 con un tamaño de inodo 256, y el viejo grub1 requiere 128. Intentaré seguir algunos comandos de [ http: // kb.kristianreese.com/index.php?View=entry&EntryID=113] para preparar la partición antes de la instalación.

Pavel Anaschenko
fuente
0

Vuelva a instalar Ubuntu. Ve a "hacer otra cosa". Seleccione su partición de instalación de Windows como la ubicación donde debe instalar el cargador de arranque.

Si tiene una instalación de Windows existente, debe instalar grub en la misma partición; de lo contrario, verá el problema en la pregunta.

Esto es relevante para 14, 15, 16, 17 Ubuntu todas las versiones y probablemente versiones anteriores. Cuando se le pregunte dónde instalar el cargador de arranque, no cree y seleccione una partición / boot; en su lugar, use la partición de Windows.

Gracias.

Wolfpack'08
fuente