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 found
indica 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 ls
comando 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
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.