Erro no Grub: arquivo '/grub/i386-pc/normal.mod' não encontrado?

17

Instalei recentemente o arch (espero que com sucesso) na minha máquina. Quando fui reiniciar, no entanto, tive um problema. Eu tenho uma tela preta com texto dizendo

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

Desde então, procurei no Google uma resposta. Eu quase encontrei um aqui nos fóruns do Ubuntu e vi um dos comentários dizendo que era falso. Também há outra resposta, mas não tenho certeza se quero instalar a partir do CD ao vivo por medo de estragar tudo.

Você entenderia meu medo se também passasse 7 horas configurando isso depois de constantemente encontrar problemas de particionamento, comando, tutorial e sistema. Que alegria.

Alguém conhece uma solução fácil para fazer o grub funcionar?

Griffin
fonte
Provavelmente vale a pena tentar a segunda sugestão (com o liveCD e o chroot). Ou uma variação: não sou um usuário do arch, mas o instalei antes e, pelo que me lembro, você pode considerar essa sugestão em relação aos vários estágios da instalação do arch, alguns dos quais envolvem um chroot. Se você puder voltar para uma etapa anterior, inicializando o CD do arco e, em seguida, montando e executando o chroot em sua instalação, poderá tentar grub-install. Você não precisa repetir nenhuma das etapas, basta usá-las como um guia para obter uma inserção em um liveCD.
Goldilocks
Embora eu não estou no computador agora eu acredito que eu tentei instalar o grub e não work.-
Griffin
@ Griffin Não funcionou porque o "grub-install" falhou ou não resolveu o problema?
derobert
@derobert grub-install não era um comando válido \
Griffin
@goldilocks segundo não está trabalhando tanto
Griffin

Respostas:

9

Uma coisa realmente irritante ...

Como aparentemente o diretório / boot / grub / i386-pc simplesmente não estava no lugar, finalmente resolvi o problema copiando todo o arquivo / usr / lib / grub / i386-pc para / boot / grub. Isso é tudo.

cp -r /usr/lib/grub/i386-pc /boot/grub
flittermice
fonte
Eu também fiz isso porque também estava faltando. Infelizmente, isso não foi corrigido.
Wolfpack'08
8

Estou no meio de um problema semelhante (aliás também no arco)

O Grub está falhando ao encontrar este arquivo e executar porque está usando um "prefixo" incorreto

Aqui está o que você faz. Você inicializa no modo de recuperação do grub e simplesmente descobre como fazê-lo inicializar.

Primeiro, você executa o set, isto listará variáveis, por exemplo, a minha é

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

Agora, o prefixo é a variável em que o grub procura o arquivo normal.mod. No meu caso hd1, msdos3 é o mesmo que / dev / sdb3 (da mesma forma, hd0, msdos1 seria / dev / sda1), o que você pode querer fazer para ver uma lista de partições válidas é digitar ls

Agora, no meu caso, novamente, o grub foi instalado em / dev / sdb1, que foi montado como / boot na minha partição arch, então o prefixo correto seria (hd1, msdos1) / grub

Então, para eu inicializar, preciso fazer o seguinte:

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

No seu caso, você terá que lembrar ou adivinhar em qual partição você instalou o grub. Você pode adivinhar errado, isso não fará nenhum mal, o comando insmod simplesmente falhará e você pode tentar novamente com outra partição.

Depois disso, o grub é carregado normalmente, e posso escolher da lista o que quero inicializar. Normalmente, quando uma bagunça como essa ocorre, a reinstalação do grub no seu mbr (usando o grub-install ) deve corrigi-lo permanentemente, para que você não precise fazer isso toda vez que inicializar. No entanto, estou tendo muita dificuldade em descobrir o que fazer se corrigi-lo não for tão fácil (ou eu compartilharia o que você deve fazer).

Somente se isso falhar (por exemplo, se o prefixo estiver correto, mas você ainda não conseguir inicializar) você deve recorrer ao live ou resgatar cds para solucionar o problema (é melhor evitar isso)

Cestarian
fonte
Esta pode ser uma pergunta um pouco antiga, mas descobri que alguém tinha que responder como realmente usar o grub rescue, em vez de se debater usando CDs e usbs ao vivo para consertar as coisas. Nem sempre temos mídia ao vivo disponível para nos ajudar, e mesmo se o fizermos, geralmente é melhor trabalhar no nosso ambiente preferido.
Cestarian
Ótima explicação! (Especialmente a nota sobre "adivinhar o errado não fará mal a nada"). Encontrei o mesmo problema com um sistema dual boot windows + Ubuntu, depois de pensar erroneamente que excluir uma partição do windows não teria impacto no Ubuntu. De qualquer forma, este post realmente ajudou a entender como corrigir o erro. Desde que eu não conseguia me lembrar qual partição contida grub, que acabei de listar todos eles com ls, em seguida, tentou-los um por um até que eu bati a combinação certa :-)
Leigh
@Leigh feliz que ajudou alguém :)
Cestarian
1
Consertar algo é sempre bom, mas entender como você o conserta é ainda melhor :-) Saúde.
Leigh
Você é um gênio
Ashish Doneriya
5

Acabei de ter esse problema hoje após uma nova instalação do Mint 15.

O instalador criou /boot/grub/x86_64-efimódulos, mas não os /boot/grub/i386-pcmódulos regulares .

Uma reinstalação do Grub a partir do Live CD corrigiu o problema.

Substitua / dev / sda e / dev / sda1 pelo seu dispositivo de inicialização e partição de inicialização e execute os seguintes comandos no Live CD:

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

Obrigado pela sua postagem. Resolvi uma mensagem de erro quase idêntica - "arquivo '/grub2/i386-pc/normal.mod' não encontrado" após uma nova instalação do Linux CentOS 5.11 em um computador Dell Optiplex antigo com Windows Vista, para criar um sistema de inicialização.

O que complicou minha situação foi que eu já havia tentado e não consegui instalar a distribuição Fedora 20 mais recente, que usa o GRUB2 em vez do GRUB (LEGACY), nas partições padrão do FEDORA. Então tentei instalar o CentOS diretamente sobre isso, mantendo a partição do Windows e sobrescrevendo as partições do FEDORA.

Durante a instalação do CentOS, deixei minha primeira partição (Windows) sozinha (hd0,0) e criei o diretório / boot em uma segunda partição (boot) (hd0,1). Optei por não modificar o MBR na época e, em vez disso, selecionei a outra opção (carregador de inicialização em outra partição).

Após o que parecia ser uma instalação bem-sucedida, ele foi reiniciado no erro acima.

Suspeito que as informações de inicialização na primeira partição continuem apontando para o local do GRUB2. A CPU não conseguiu encontrar o normal.mod, talvez porque as partições FEDORA00 criadas anteriormente foram removidas.

Aqui estão os meus passos:

  1. Inicialize a partir do CD de instalação do Centos 5 no modo de recuperação ("linux rescue").

  2. Monte a unidade local: chroot / mnt / sysimage

  3. Alterne para o modo de usuário único: su

  4. Atualize a instalação do CentOS: yum update

  5. Use o editor emacs para adicionar "Microsoft Windows Vista" ao arquivo grub.conf: emacs /boot/grub/grub.conf e faça do Vista o sistema operacional padrão.

    ( NOTA: Consulte 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. Tente atualizar o MBR: grub-install / dev / hda

  7. Reinicie com um erro não identificado do GRUB, no qual a CPU travou após exibir "GRUB".

  8. Reinicie a partir do disco de instalação original do Windows Vista (ou outro disco de recuperação do Windows) e selecione a opção para reparar o disco. Receba a mensagem de que o MBR foi reparado.

  9. Reinicie corretamente no Windows Vista.

Estou certo de que existem soluções mais elegantes, mas isso funcionou para mim. Também tentei baixar o pacote de migração do GRUB para o GRUB2, conforme descrito em http://help.ubuntu.com/community/Grub2/Upgrading , tentando:

$ yum install grub-pc

Mas não conseguiu encontrar o pacote. Talvez eu devesse ter tentado yum install grub.

dkergyl
fonte
0

Adicionando a flittermice ...

se você inicializar a partir de um USB e tiver a pasta i386, poderá abrir a pasta i386 na partição quebrada como raiz e, em seguida, copiar a pasta i386 em funcionamento do usb.

Jacob David C. Cunningham
fonte
0

Eu entrei no meu sistema CentOS 6.7 em duas etapas. Primeiro, segui o conselho do flittermice acima, inicializei no CD ao vivo, montei meu / dev / sda2 como / mnt e copiei a pasta i386-pc de / mnt / usr / ... (você pode encontrar onde está o seu por find /|grep i386) para / boot / grub e reiniciado.

Isso me deu o grub> em vez do grub rescue> ;-).

Então segui um guia aqui [ https://www.linux.com/learn/tutorials/776643-how-to-rescue-a-non-booting-grub-2-on-linux/] para encontrar e inicializar o minha partição. Foi (hd0,2), porque (hd0,1) foi capturado pelo swap.

Mais tarde, descobri que não era possível tornar essa inicialização "automática", provavelmente porque o meu / boot estava no ext4 com tamanho de inode 256 e o ​​antigo grub1 requer 128. Vou tentar seguir alguns comandos de [ http: // kb.kristianreese.com/index.php?View=entry&EntryID=113] para preparar a partição antes da instalação.

Pavel Anaschenko
fonte
0

Reinstale o Ubuntu. Vá para "fazer outra coisa". Selecione sua partição de instalação do Windows como o local em que deve instalar o carregador de inicialização.

Se você já possui uma instalação do Windows, instale o grub na mesma partição; caso contrário, você terá o problema visto na pergunta.

Isso é relevante para 14, 15, 16, 17 Ubuntu todas as versões e provavelmente versões anteriores. Quando perguntado onde instalar o carregador de inicialização, não crie e selecione uma partição / boot; em vez disso, use a partição do Windows.

Obrigado.

Wolfpack'08
fonte
0

Experimente o cd do grub ao vivo: http://ccm.net/faq/2677-super-grub-disk-live-cd Em seguida, o terminal: cp -r / usr / lib / grub / i386-pc / boot / grub foi o única coisa Esse método funcionou para mim.

Celso de Carvalho
fonte