Chainloader GRUB2: Por que isso não funciona?

Chainloader GRUB2: Por que isso não funciona?

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

Algumas informações básicas: tenho duas unidades USB, vamos chamá-las de USB1 e USB2. Atualmente, estou tentando instalar o Debian Wheezy em qualquer um deles de maneira amigável para inicialização múltipla. Agora, se eu simplesmente adicionar o iso em USB1 (/dev/sdb):

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

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

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

Agora, para o meu problema: se eu criar uma segunda partição em USB2 e adicionar o iso a ela:

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

Carregamento em cadeia que não funciona. Ele não exibe nenhuma mensagem de erro, apenas exibe uma tela preta com um traço piscando (sem resposta). (Eu tentei isso com as duas unidades, então não acho que a culpa seja do hardware defeituoso).

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

Responder1

Em primeiro lugar, uma imagem de disco é 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 presuma que está tudo bem sem dddar erros: ele fará com prazer tudo o que você mandar, a menos que haja algum tipo de erro real de IO.

Quando você carrega a unidade em cadeia, o GRUB procura um Master Boot Record - é um tipo de coisa que inicia o conteúdo do disco e contém o código de inicialização. No entanto, a estrutura da partição é diferente - ela nem começa no código; ele possui um registro de inicialização, mas em algum local mais distante. O GRUB também pode carregar isso em cadeia; o procedimento é diferente, no entanto. Ao colocar uma imagem de disco na partição, você não criou nada facilmente utilizável e com certeza o GRUB não está esperando um MBR lá. Em vez disso, ele executa algum código de máquina aleatório, o que nunca é saudável para o seu PC.

Para fazer isso funcionar, você teria que copiar o conteúdo da partição Debian para esta e instalar o GRUB nela. A menos que haja algum erro no caminho, deve funcionar perfeitamente. Não se esqueça de recriar o seu /dev/sdc2!

informação relacionada