Estou movendo meu projeto do CentOS 6 para o CentOS 7 e preciso lidar com as mudanças nos requisitos de inicialização introduzidos pelo CentOS 7, particularmente a atualização do grub para o grub2. A essência do problema é esta:
No meu trabalho baseado no CentOS 6, eu tinha meu disco rígido dividido em várias partições e cada uma hospedava uma VM, instalada com o virt-install. Eu usei uma imagem do CentOS 6 pré-criada que eu untar'ed diretamente em uma partição que estava hospedando uma VM, permitindo-me usar a opção --import de virt-install. Cada partição da VM foi particionada em partições de boot, swap e root-fs. Eu criei manualmente arquivos device.map grub.conf e executei os comandos requeridos do grub install para tornar a VM inicializável.
No CentOS 7, as coisas mudaram um pouco. Quando o grub2 é instalado em uma unidade GPT, ele requer uma partição "bios_grub" adicional. Portanto, agora minhas partições de VM são subdivididas em quatro partições, em vez das três que eu tinha no CentOS 6.6. Se, por exemplo, eu estivesse instalando uma VM em / dev / sda4, o parted mostraria algo assim:
# parted -s /dev/sda4 print
Model: Unknown (unknown)
Disk /dev/sda4: 75.2GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB primary bios_grub
2 2097kB 136MB 134MB ext3 primary boot
3 136MB 153MB 16.8MB linux-swap(v1) primary
4 153MB 75.2GB 75.0GB ext4 primary
O problema é que não consigo obter as VMs que eu crio para inicializar. Bem, as VMs começam, mas elas são interrompidas imediatamente. Não há nenhum erro e virsh mostra que eles estão rodando, mas a transferência da BIOS para o grub não ocorre. Os comandos que executo para instalar o grub são os seguintes (novamente, supondo que a VM esteja sendo instalada em / dev / sda4):
# chroot /mnt/rootfs/grub2-install --force /dev/sda4
Installing for i386-pc platform.
Installation finished. No error reported.
# chroot /mnt/rootfs grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.img
done
e o comando de criação de VMs se parece com isto:
# virt-install --connect=qemu:///system --network bridge=br0,mac=RANDOM,model=virtio --name=vm1 --disk path=/dev/sda4,bus=virtio --force --vcpus=1 --ram=1024 --check-cpu --accelerate --hvm --nographics --noreboot --import
Starting install...
Creating domain...
Domain creation completed. You can restart your domain by running:
virsh --connect qemu:///system start vm1
Infelizmente, como eu disse, a VM é iniciada, mas é interrompida imediatamente. O BIOS não faz a transição para o arranque do CentOS. A mesma abordagem básica funciona para o CentOS 6, então presumo que esteja faltando alguma etapa importante aqui, provavelmente relacionada ao modo como estou instalando o grub2. Se alguém tiver experiência nesta área e tiver algum conselho, agradeceria algumas sugestões.
Peter