erro: arquivo '/grub/i386-pc/normal.mod' não encontrado

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

O que eu posso fazer? Eu apenas sento e olho para ele.

Encontrei meu netbook antigo (Dell Inspiron 1010) que não uso há cerca de quatro anos. Substituí o Windows XP pelo Ubuntu 12.10. Eu usei minha unidade USB inicializável. Eu instalei e reiniciei. Recebi a mensagem que normal.modnão foi encontrada.

O que devo fazer? Tipo exit, rebootou quit? Devo reinstalar?

Don Metlay
fonte
1
A RESPOSTA ABAIXO NUNCA FUNCIONA. ISSO FUNCIONA: reinstale o sistema operacional, vá para "fazer outra coisa", crie suas tabelas de partição e, em seguida use your windows partition as your primary boot device. Esse último passo é essencial. NÃO USE / inicialize. Pode haver outra solução: tente alterar manualmente o dispositivo de inicialização durante a inicialização; no entanto, acho que não vai funcionar. Este é um problema de longa data que persistiu no Ubuntu até e incluindo o 17.10. Obrigado.
Wolfpack'08
Nenhuma dessas instruções funcionou para mim. De fato, o uso das várias ferramentas de recuperação piorou o problema. Eu consegui reinstalar o grub, mas como uso o lvm2, o kernel falhou ao iniciar. Se você estiver usando lvm2 para qualquer coisa, quando esse problema ocorrer, será necessário reinstalar o sistema operacional. Até onde eu sei, não há recuperação de uma combinação falha na atualização do kernel + grub + lvm2. O lvm2 vê muito pouco suporte oficial, apesar de ter sido empurrado para o Ubuntu Server LTS em um ponto. Estou fazendo backup dos meus dados e reinstalando o SO e não voltarei a tocar no lvm2 novamente. Aprendi minha lição.
CubicleSoft 23/02
1
Eu já mudei de lvm2 e tive zero problemas desde então. Nenhuma da minha infraestrutura usa mais isso. As soluções padrão de resgate do sistema (gráfica e CLI) desconhecem ou mal conhecem o LVM e isso é motivo suficiente para eu não usar o LVM. Mesmo se eu seguisse suas instruções para recuperar o sistema e elas funcionassem, o problema provavelmente aconteceria novamente no futuro. Reinstalar o sistema operacional e abandonar o LVM foi a melhor e mais rápida opção para mim.
CubicleSoft 28/01
1
@ Wolfpack no meu caso, o problema é que, sem o normal.mod definido, me impede de reinstalar o ubuntu, o lgoin não funciona. O que eu posso fazer?
HoCo_ 27/02
1
@ Wolfpack'08 Por favor, reposte sua solução como resposta. A publicação de soluções como comentários está contornando os princípios do site. Você também deve mencionar qual “resposta abaixo nunca funciona”, pois existem mais.
Melebius

Respostas:

40

O Grub tem uma pequena imagem principal que é carregada no momento da inicialização. A imagem principal carrega dinamicamente módulos que fornecem funcionalidade adicional. i386-pc/normal.mod not foundindica que o grub não pode carregar o normal.mod , que é um módulo do grub que fornece o comando normal . Para carregar o normal.mod, você precisa informar ao grub onde ele está. Para fazer isso, você pode usar a linha de comando do grub (também conhecida como Rescue Console). O Grub iniciará a linha de comando se houver um problema ao inicializar, ou você pode iniciá-lo manualmente, mantendo pressionada a tecla Shift enquanto o grub é iniciado (para forçar a exibição do menu do grub) e pressionando a tecla 'c'.

Usando o grub, você pode explorar as unidades, partições e sistemas de arquivos. Você precisa:

  • localize a instalação do grub usando ls ou search.file
  • definir variáveis ​​grub $ prefix e $ root
  • carregar e executar o módulo normal

Exemplo

O seguinte é apenas um exemplo. Você precisará adaptá-lo à unidade local e à configuração da partição.

onde está o normal.mod? procure em alguns locais prováveis

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 você receber "Unknown command 'search.file'"isso significa que o comando search.file não está disponível. Provavelmente, é porque você está no grub rescue>prompt e não no grub>prompt. Nesse caso, você ainda pode continuar e usar o lscomando e seu conhecimento do layout da partição para encontrar normal.mod.

encontrou em (hd0, msdos1)

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

por que o grub não o encontrou?
check $ prefix - localização absoluta do diretório grub
(isso é definido quando o grub é instalado pelo grub-install)

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

check $ root - dispositivo padrão para caminhos que não incluem um
grub de dispositivo inicialmente o define no dispositivo a partir de $ prefix

grub> echo $root
hd0,msdos2

root e prefix estão apontando para a partição errada (hd0, msdos2)
defina $ root e $ prefix para a partição onde encontramos normal.mod (hd0, msdos1)

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

carregar e executar o módulo normal

grub> insmod normal
grub> normal

Alguns outros comandos que podem ser úteis

ls lista todos os dispositivos e partições

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

ls partição

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 sistema de arquivos (nota / no final)

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/

olhar dentro da
presença / boot / grub do diretório i386-pc significa que esta é uma
presença de instalação do BIOS no diretório x86_64-efi indicaria uma instalação da EFI

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

banho
fonte
Depois de seguir estas etapas para inicializar na instalação do ubuntu, executei sudo grub-install /dev/sdXa instalação do meu grub. Eu acho que a instalação do LVM confundiu meu grub de alguma forma.
DavidG
Eu acho que se você receber "Comando desconhecido 'search-file' como eu acabei de fazer, é hora de desistir. Meu conselho para as pessoas nunca é instalar o Ubuntu sem um DVD de recuperação do Windows. Como acabei de descobrir, ter uma partição de recuperação é não é suficiente quando o Grub fica bagunçado.E também nunca instale o Ubuntu no computador Windows de outra pessoa, porque se ele estragar, eles ficarão realmente irritados.
Scooter
@Scooter Veja esta resposta para obter instruções sobre a reinstalação do Grub, inicializando um CD / USB ativo .
Página
@ bain Obrigado pela resposta. No meu caso, fiz uma reinstalação do disco iso do Ubuntu. O Ubuntu descobriu que o grub estava bagunçado ou talvez apenas o escrevesse automaticamente, mas o refez para onde eu estava de volta para poder inicializar no Windows novamente.
Scooter
O shell de resgate do Grub não parece suportar nenhum desses comandos. "Comando desconhecido 'search.file'"
Cerin
30

Resolvi isso em uma máquina esta tarde. Parece que uma das causas desse problema é o instalador pensando que você possui uma inicialização segura EFI, quando não o faz e, portanto, carregando os arquivos GRUB incorretos.

O que você precisa fazer é instalar o GRUB 2. Para fazer isso, você precisa inicializar na instância ativa, monte sua partição raiz e instale.

Em uma instância ativa, encontre a partição na qual sua partição raiz está carregada. GParted lhe dirá isso, ou você pode usar

sudo fdisk -l

Vá para a partição na qual o ubuntu está instalado.

Depois de ter sua partição, você precisa montá-la. Supondo que a partição raiz esteja em / dev / sda5, isso seria:

sudo mount /dev/sda5 /mnt

Em seguida, instale o GRUB 2

sudo grub-install /dev/sda --root-directory=/mnt [use copiar e colar para este, pois existem alguns espaços que você precisa corrigir.]

Supondo que este seja o seu problema, você poderá reiniciar e tudo funcionará bem.

A solução original para isso foi a partir daqui: http://ubuntujournal.blogspot.com/2012/11/fix-new-install-of-ubuntu-1210-wont-boot.html

MorrisseyJ
fonte
1
Não funcionou para mim. Eu tenho o mesmo problema e ainda estou procurando uma solução.
precisa saber é o seguinte
3
--root-directory agora é --boot-directory no grub2
bain
1
Outra solução fácil que funcionou para mim é copiar o backup do grupo localizado em /etc/grub.d/backup para / boot / grub. Verifique o leia-me em anexo para pastas e caminhos apropriados.
jhexp
No meu caso, o problema era que eu tinha 2 discos rígidos e a sequência do BIOS estava procurando primeiro na unidade errada. Essa unidade tinha uma instalação grub corrompida antiga.
Eusoubrasileiro 7/17
Se você não pode dizer qual é o correto do fdisk, este SO pode ajudar (ele me ajudou a encontrar em qual dispositivo / media / ubuntu / some-name estava) unix.stackexchange.com/questions/11311/…
Michael
2

Como não encontrei essas informações nos fóruns, quero compartilhar algumas informações, apesar de essa pergunta ter sido feita há muito tempo:

Se você possui uma partição grande (por exemplo, 1 TB) com o Ubuntu instalada e não alocou uma partição adicional para / boot /, pode ser o motivo de tais erros. Quando o GRUB é iniciado, ele usa o driver biosdisk para ler drivers normais no diretório / boot / grub /. Às vezes, esse diretório pode estar fisicamente localizado no disco rígido em algum lugar após o máximo suportado pelo setor de biosdisk. O problema pode aparecer, por exemplo, após a atualização do sistema. Além disso, sempre enfrento esse problema após a instalação nova do Ubuntu 13.10, mas pode ser diferente, pois depende da placa-mãe / BIOS.

Você pode verificar se, usando o grub recovery - depois de definir PREFIX e ROOT corretos, tente ls / boot - se você não vir nada, mas poderá ver os arquivos ao inicializar a partir da unidade de CD / Flash ao vivo -, o problema descrito acima .

Você pode fazer coisas diferentes para tornar o sistema inicializável, mas a única maneira de evitar esse problema no futuro (durante dist-upgrades) é colocar o diretório / boot em uma pequena partição separada.

Luto
fonte
1

Outras soluções podem não funcionar se você chegar ao grub-rescueprompt e / ou sua configuração usar LVM, esta deve ser.

Inicialize em um disco de recuperação (dica: eu mantenho uma pequena distribuição em uma partição dedicada do meu disco USB de backup).

Se você usar o LVM, localize o nome do seu grupo de volumes com lvdisplayou com outros comandos relacionados ao LVM. Ative-o (caso contrário, você receberá um mount: special drive /dev/volumegroupname/partition does not existerro ao tentar montar):

vgchange -a y volumegroupname

Agora monte sua /partição usual , por exemplo /mnt :

mount /dev/volumegroupname/partition /mnt

Monte também alguns dispositivos especiais (assim como /bootem uma partição separada):

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

Em seguida, chrootem sua distribuição habitual:

chroot /mnt

Por fim, reinstale o GRUB2 - os comandos podem variar dependendo da sua distribuição, isso funciona no Slackware (se a sua unidade for /dev/sda):

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

Reinicie e você deve terminar.

Skippy le Grand Gourou
fonte
0

A RESPOSTA SELECIONADA NUNCA FUNCIONA.

ISSO FUNCIONA:

  1. Reinstale o sistema operacional , vá para " fazer outra coisa ", crie suas tabelas de partição,
  2. Use sua partição do Windows como seu dispositivo de inicialização principal .

O segundo passo é essencial .

NÃO USE/boot .

Pode haver outra solução: tente alterar manualmente o dispositivo de inicialização durante a inicialização; no entanto, acho que não vai funcionar, e ainda tenho que testá-lo.

Este é um problema de longa data que persistiu no Ubuntu até e incluindo o 17.10.

Wolfpack'08
fonte