grub-mkrescue não está produzindo imagem inicializável

2

Estou tentando usar o comando grub-mkrescue para produzir um disco de recuperação. Eu invoco assim:

grub-mkrescue -o grub.iso

Isso produz o arquivo .iso, mas quando eu tento inicializar a partir dele usando o VirtualBox, ele diz que a mídia de inicialização não pode ser lida. Quando abro o arquivo com um arquivador, o .iso tem apenas um diretório vazio / boot / grub.

Eu também notei algumas pessoas usando o comando assim:

grub-mkrescue -o grub.iso /boot/grub

Mas então ele reclama que o diretório não existe. (Talvez seja relevante que eu esteja produzindo isso em um Debian VPS, porque eu não tenho acesso a um PC Linux atual atualmente.)

O que pode estar causando esse problema? Está faltando os arquivos GRUB para armazenar na imagem inicializável ou estou usando o comando da maneira errada?

    
por Overv 03.06.2013 / 11:32

2 respostas

1

Acontece que isso acontece quando o sistema em que você está executando este comando não possui um diretório (acessível) /boot/grub . Ele falhará silenciosamente e produzirá um arquivo ISO vazio.

Ao executar o mesmo comando em uma instalação de desktop normal do Linux, o comando produz uma imagem inicializável ativa.

    
por 03.06.2013 / 11:52
0

Os passos seguintes produzem uma imagem funcional para mim:

  • crie um arquivo Multiboot hello world main.elf . O GRUB sabe como inicializar esses arquivos (o GRUB também sabe como inicializar o kernel do Linux, mesmo que não seja Multiboot)

  • crie um arquivo iso/boot/grub/grub.cfg contendo:

    menuentry "main" {
        multiboot /boot/main.elf
    }
    

    Coloque main.elf em iso/boot/

  • No Ubuntu 17.10, em uma máquina UEFI:

    sudo apt-get install grub-pc-bin
    

    como mencionado em link Caso contrário, simplesmente não funciona e você não tem ideia.

    TODO OMG realmente ?! Eu tenho que aprender a construir o GRUB da fonte para me livrar desse tipo de loucura.

  • Gere uma imagem e execute-a:

    grub-mkrescue -o main.img iso
    qemu-system-x86_64 -hda main.img
    

Eu postei o código exato para este exemplo em: link

    
por 14.09.2015 / 22:23