Problema:
Thiago Bomfim: Uma solução, é usar modo LEGACY, que não tem problema com o XEN. Como nossa ilha tem discos de 4TB, preferi insistir um pouco para achar a solução para UEFI+XEN.
Antes da solução, sempre que carregava o kernel com xen no modo UEFI, a máquina reiniciava.
Eliseu Torres: Devido a uma incompatibilidade do UEFI+XEN, o Xen não detectará todo
Solução:
No Ubuntu e no Debian o GRUB2 já possuí o módulo multiboot2, necessário para carregar o XEN na versão >=4.9 com EFI (vide [1]).
O primeiro passo é aplicar um patch para usar o modulo multiboot na versão indicada, no caso a versão 2 (vide patch em [2])
Conteúdo do arquivo:
diff --git a /util/grub .d /20_linux_xen . in b /util/grub .d /20_linux_xen . in
index c48af94..7aae59f 100644
--- a /util/grub .d /20_linux_xen . in
+++ b /util/grub .d /20_linux_xen . in
@@ -85,6 +85,10 @@ linux_entry ()
type = "$4"
args= "$5"
xen_args= "$6"
+ ver= ""
+ if $($grub_file --is-x86-multiboot2 ${xen_dirname}/${xen_basename}); then
+ ver= "2"
+ fi
if [ -z "$boot_device_id" ]; then
boot_device_id= "$(grub_get_device_id " ${GRUB_DEVICE} ")"
fi
@@ -122,16 +126,16 @@ linux_entry ()
else
xen_rm_opts= "no-real-mode edd=off"
fi
- multiboot ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
+ multiboot${ver} ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
echo '$(echo "$lmessage" | grub_quote)'
- module ${rel_dirname}/${ basename } placeholder root=${linux_root_device_thisversion} ro ${args}
+ module${ver} ${rel_dirname}/${ basename } placeholder root=${linux_root_device_thisversion} ro ${args}
EOF
if test -n "${initrd}" ; then
message= "$(gettext_printf " Loading initial ramdisk ... ")"
sed "s/^/$submenu_indentation/" << EOF
echo '$(echo "$message" | grub_quote)'
- module --nounzip ${rel_dirname}/${initrd}
+ module${ver} --nounzip ${rel_dirname}/${initrd}
EOF
fi
sed "s/^/$submenu_indentation/" << EOF
|
Para aplicar o patch, execute primeiro o comando patch no modo de teste (com a opção '--dry-run')
patch --dry-run -p 1 /etc/grub .d /20_linux_xen /root/xen .patch
|
Caso não tenha acontecido nenhum erro, aplique em definitivo.
patch -p 1 /etc/grub .d /20_linux_xen /root/xen .patch
|
Agora é necessário atualizar o grup para que as modificações tenham efeito.
Basta, por fim, reiniciar o servidor para testar o funcionamento.
[1] https://wiki.xenproject.org/wiki/Xen_EFI
[2] https://lists.xen.org/archives/html/xen-devel/2017-03/txtCeHTNmz1hZ.txt