chainloader GRUB2: Por que isso não funciona?

4

Estou tentando criar uma unidade flash USB de inicialização múltipla usando o GRUB2 para carregar diferentes partições na unidade. Não está funcionando. Eu não quero conselhos sobre como criar uma unidade flash de inicialização múltipla; Eu sei que existem muitas maneiras de fazer isso. Estou apenas interessado em descobrir por que esse método específico não funciona.

Alguns antecedentes: Eu tenho dois drives USB, vamos chamá-los de USB1 e USB2. Eu estou atualmente tentando instalar o Debian Wheezy em qualquer um deles de uma maneira amigável para multi-inicialização. Agora, se eu simplesmente enviar o iso para o USB1 (/ dev / sdb):

dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdb

Isso cria uma boa unidade inicializável a partir da qual eu posso instalar o Debian. Além disso, se eu instalar o GRUB2 em USB2, posso carregar USB1 com sucesso a partir dele com:

search --label --set=root "Debian 7.0.0 i386 1"
chainloader +1
boot

Agora, para o meu problema: se eu, em vez disso, criar uma segunda partição no USB2 e inserir o iso nela:

dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdc2

Chainloading que não funciona. Ele não envia nenhuma mensagem de erro, mas simplesmente me dá uma tela preta com um traço piscando (sem resposta). (Eu tentei isso com ambas as unidades, então eu não acho que o hardware defeituoso é o culpado).

Por que isso não funciona? Qual é a diferença entre o carregamento em cadeia de uma unidade diferente e o carregamento em cadeia de uma partição diferente na mesma unidade quando eles contêm exatamente os mesmos dados?

    
por bessman 08.05.2013 / 13:08

1 resposta

4

Em primeiro lugar, uma imagem de disco é uma coisa diferente de uma imagem de partição. Você está tentando usar o seu (aparentemente imagem de disco) como ambos, o que está errado. Não assuma que está tudo bem em dd , sem erros: ele fará tudo o que você disser, a menos que haja algum tipo de erro IO real.

Quando você carrega a unidade em cadeia, o GRUB procura um Registro mestre de inicialização - isso é algo que inicia o conteúdo do disco e contém o código de inicialização. No entanto, a estrutura da partição é diferente - nem sequer começa a partir do código; tem um registro de inicialização, mas em algum outro local. O GRUB pode encadear isso também; procedimento é diferente, no entanto. Quando você coloca uma imagem de disco na partição, não criou nada facilmente utilizável e, com certeza, o GRUB não está esperando um MBR lá. Em vez disso, ele executa um código de máquina aleatório, que nunca é saudável para o seu PC.

Para fazer esse trabalho, você terá que copiar o conteúdo da partição Debian para isso e instalar o GRUB nele. A menos que haja algum erro no caminho, ele deve funcionar sem falhas. Não esqueça de recriar seu /dev/sdc2 !

    
por 08.05.2013 / 16:01

Tags