Menu

Index:Problemas de particionamentoSolução UEFI+XEN

Problemas no particionamento

Thiago Bomfim (UFBA): O único "porém" foi que nossa ilha tem discos de 4TB. Daí precisei criar a partição EFI (1 e 2 na foto) para que o GRUB pudesse ser instalado. Pelo procedimento, seria uma partição ext4 para o /boot sobre o LVM e sobre o RAID, mas isso não funciona com UEFI.

 

Operador da Adriano Henrique (UFPE): Semelhante ao ocorrido e diferente do tutorial aqui na ilha UFPE também foi necessário instalar o grub2 em uma partição não LVM, segue em anexo a minha configuração de disco, estou utilizando RAID 10 via hardware.


SOLUÇÃO UEFI+XEN

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.


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:

/root/xen.patch


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
     # TRANSLATORS: ramdisk isn't identifier. Should be translated.
     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.

update-grub2

 

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