Instale o grub na imagem kvm montada?

1

Estou tentando montar uma imagem KVM na máquina host para corrigir um problema no grub, mas parece que está dando errado em algum lugar.

Eu tentei os seguintes passos:

mount -o loop,offset=32256 /var/lib/libvirt/images/vm1.img /mnt/vm1
mount -obind /dev/ /mnt/vm1/dev/
mount -obind /proc/ /mnt/vm1/proc/
mount -obind /sys/ /mnt/vm1/sys/
cd /mnt/vm1/
chroot .
grub-install

Eu faço as etapas acima, mas quando instalo o grub, vejo o seguinte:

root@host:/# grub-install /dev/sda      
grub-probe: error: Cannot find a GRUB drive for /dev/loop0.  Check your device.map.

Auto-detection of a filesystem module failed.
Please specify the module with the option '--modules' explicitly.

Alguém tem alguma idéia do que estou perdendo ou qual é o próximo passo? Eu estou andando em círculos sobre isso.

    
por Leoric80 20.01.2015 / 01:58

1 resposta

0

O problema é que grub-install instala um pedaço baseado em bios (ou seja, em modo real) no setor de inicialização. Sim, este é o antigo "modo real" da era PC / XT / AT, a maioria das máquinas * 86 estão iniciando neste modo até agora.

O BIOS não conhece nada dos seus dispositivos. Na BIOS, os dispositivos de bloco têm um identificador de byte hexa sinlge: os disquetes tinham 0x00, 0x01, ... e os discos rígidos têm 0x80, 0x81, 0x82, ... (CDROM, pendrives são desconhecidos para o bios, mas em na maioria dos casos, há algum tipo de emulação que lhes dá a aparência de discos rígidos).

Quando grub-install é chamado, ele precisa dizer para este código de inicialização de modo real, a partir do qual os dispositivos devem carregar os próximos estágios do gerenciador de inicialização. Este é o grub, que você logo sabe.

No devices.map , você diz o instalador do grub, como ele deve instalar o carregador de boot do bios, assim você fornece um mapeamento entre seus dispositivos de bloco e seus números de bios (logo no tempo de inicialização!). Deve estar em algum lugar em /boot/grub ou em /boot/grub2 ou similar.

Depois de instalar o grub no seu dispositivo de loopback, é altamente recomendável reverter seu devices.map ao seu estado original.

Se você sabe que o dispositivo de loopback no qual você instalará o grub, será o primeiro disco rígido durante o primeiro estágio da inicialização, você pode simplesmente fornecer o identificador de bios 0x80.

P.: É a única maneira de dizer o BIOS, o que saber com o seu dispositivo de loopback. Na era do desenvolvimento do bios, os dispositivos de loopback eram coisas muito, muito esotéricas, conhecidas apenas por grandes máquinas.

P.s.2 .: Existe uma ferramenta chamada kpartx , que pode encontrar as partições de qualquer arquivo ou dispositivo, e mapeá-las para os dispositivos de bloco do mapeador de dispositivos. Eu joguei muito com losetup .. ---offset solutions como você, pelo menos um pequeno googling para isso eu sugiro que seja strong.

    
por 20.01.2015 / 11:40