Eu encontrei a resposta para este tempo de volta. pygrub espera que a partição de boot seja o número 1. Eu tive que renumerar minhas partições com parted.
Então, estou tentando converter alguns domUs para usar o modo PV.
xe-edit-bootloader -u ... -p 2
Encontra o menu.lst
sem problemas.
As partições grub, boot e root são 1, 2 e 3, respectivamente. Eu marquei boot
e root
como inicializável, apenas para garantir.
Aqui está o erro que recebo:
$ xe vm-start uuid=ad275e7d-b8c2-673f-6ced-7cfc94eef415
Error code: Traceback (most recent call last):
Error parameters: File "/usr/bin/pygrub", line 808, in ?, fs = fsimage.open(file, part_offs[0], bootfsoptions), IOError: [Errno 95] Operation not supported,
Veja alguns parâmetros relevantes:
HVM-boot-policy ( RW):
HVM-boot-params (MRW): order: dc
HVM-shadow-multiplier ( RW): 1.000
PV-kernel ( RW):
PV-ramdisk ( RW):
PV-args ( RW): console=hvc0 xencons=hvc root=/dev/xvda2 decrypt_initrd decrypt
PV-legacy-args ( RW):
PV-bootloader ( RW): pygrub
PV-bootloader-args ( RW):
ATUALIZAÇÃO: Então, se não estiver claro, não tenho ideia do que estou fazendo. Eu estou apenas esfaqueando no escuro neste momento. Ao despejar as variáveis nessa linha de pygrub
, parece que está olhando para a primeira partição. A variável part_offs[0]
era um inteiro igual ao bloco inicial da primeira partição.
Então, claramente, não estou configurando pygrub
corretamente. Eu não encontrei documentação completa o suficiente sobre isso. Tudo é postagens no fórum com instruções que funcionaram para uma das principais distros. Ou, em muitos casos, as informações estão desatualizadas.
Se sua VM de destino for um sistema BSD, o pygrub não poderá ler o FFSv2. Você precisará do seu sistema de arquivos raiz para ser FFSv1 - o que é mais fácil dizer do que fazer.
Você precisa especialmente compilar seu kernel para suporte a PV. Você está certo de que o pygrub tentará analisar o grub, mas isso não é suficiente. Se você me disser quais distros você está tentando converter, posso ajudá-lo a encontrar um guia