O Grub2 não detecta nenhum dispositivo

0

Eu tenho uma imagem HDD de 1Gb (criada usando bximage para Bochs), na qual desejo instalar o Grub 2.

Eu entendo que uma instalação do Grub consiste em 3 partes:

  • A imagem boot.img, que ocupa o primeiro setor
  • A imagem core.img, que ocupa espaço após o primeiro setor até o início da próxima faixa
  • E o diretório / boot / grub /, no qual o grub.cfg e outros módulos estão localizados.

Primeiro eu uso uma imagem boot.img que dentro do meu próprio diretório Linux / boot / grub /.

Após isso, eu gero minha imagem core.img usando o seguinte comando:

sudo grub-mkimage -v --format=i386-pc -o core.img -p\(hd0,msdos1\)/boot/grub ls ext2 part_msdos

E para instalá-los na imagem de disco final, eu uso os seguintes comandos:

  • sudo dd if=boot.img of=/dev/loop0 bs=446 count=1 o 446 blocksize é usado para não sobrescrever Os dados da partição que residem dentro do MBR
  • sudo dd if=core.img of=/dev/loop0 bs=512 seek=1 e aqui, seek=1 é para não sobrescrever o MBR que acabou de ser escrito.

O disco, a partir do setor 2048 até o último, é formatado com uma partição ext2 e contém um diretório boot / grub / contendo um grub.cfg (com uma única entrada de menu falsa que não carrega nada) e módulos no diretório / boot / grub / i386-pc /.

Bochs inicializa com sucesso esta instalação do grub até o grub > pronto. Como Este guia do Ubuntu aponta, este comportamento indica que o grub.cfg não foi encontrado.

Ao invocar ls , me deparo com um problema interessante - aparentemente não tenho nenhum dispositivo conectado!

Para detalhar ainda mais a natureza do problema, observei que ao inicializar uma imagem grub-mkrescue de uma unidade escrava, invocar ls exibia sua própria unidade de resgate, e a unidade anterior unidade de disco principal "existente", juntamente com a partição ext2. Eu verifiquei que /boot/grub.cfg poderia de fato ser acessado.

A partir dessa observação, presumo que meu próprio core.img está faltando algum módulo ou funcionalidade fundamental. Mas qual, e como eu alteraria isso?

Eu também realizei este exercício em uma máquina física usando um pendrive, e exatamente a mesma coisa aconteceu, então posso confirmar que o problema não é com o Bochs.

    
por Maxim Blinov 10.08.2016 / 02:52

2 respostas

0

Como se constatou, eu realmente estava faltando um módulo, mais especificamente um driver de disco, ou seja, biosdisk :

Do OSDev Wiki:

biosdisk -  This module is required for GRUB 2 to be able to boot from a LiveCD.
    
por 10.08.2016 / 16:06
0

Embora o autor original tenha encontrado uma razão para o fracasso de seu caso e o tenha compartilhado com o restante da comunidade, encontrei outro problema que causa exatamente o mesmo comportamento:

ls invocado no shell de recuperação do grub não gera dispositivos.

Se, por algum motivo, *.mod arquivos forem removidos das informações de símbolo vital, grub-install silenciosamente criará core.img , mas que core.img não poderá usar nenhum módulo compactado.

Mesmo essa opção de remoção "inofensiva" como --strip-unneeded resulta na perda de dois símbolos importantes grub_mod_init e grub_mod_fini . Sem estes símbolos, os módulos do grub são carregados mas não inicializados e, portanto, são inutilizáveis.

Se você realmente quiser remover os módulos do grub, adicione a linha de comando -K grub_mod_init -K grub_mod_fini to strip's .

    
por 24.08.2018 / 18:57

Tags