Estou tentando configurar o Xen para trabalhar com UEFI e minha instalação do Arch Linux ( 3.18.2 ) como Dom0, mas não conseguiram inicializar. Digno de nota é o fato de que ele irá inicializar completamente bem, caso contrário, apenas não sob Xen.
Especificamente, meu computador congela completamente e eu tenho que redefini-lo sem mensagens de erro relevantes aparecendo até onde posso dizer. Depois de muito esforço (e descobrindo debug=postmount
), descobri que está congelando logo após systemd
ser invocado por switch_root
.
O problema real é que eu não consegui obter systemd para cuspir quaisquer logs ou informações antes que o computador congele. Eu tentei vários kernel, bem como opções de log específicas do systemd, mas logo após sair desse shell de pós-montagem eu recebo talvez meio piscar de cursor, sem logs, antes que a tela congele.
Minha configuração atual é gummiboot iniciando o Xen EFI usando dois pequenos arquivos de configuração, incluídos abaixo, caso eles sejam relevante:
$esp/loader/conf/xen.conf
:
title Xen
efi xen-4.5.0.efi
$esp/xen.cfg
(mesmo diretório que xen-4.5.0.efi
):
[global]
default=xen
[xen]
options=console=none dom0_mem=2048M,max=2048M dom0_max_vcpus=1 loglvl=all noreboot
kernel=vmlinuz-linux root=/dev/sda3 rw systemd.unit=emergency.service systemd.log_level=debug
ramdisk=initramfs-linux.img
Coisas a serem observadas:
- Tentei fazer isso com o pacote AUR Xen 4.4.1-3, bem como fazer o download e compilar o Xen 4.5.0 a partir do código-fonte, mas as duas versões congelam no mesmo ponto do processo de inicialização.
- Eu tive que recompilar binutils para
x86_64-pep
support para gerar o EFI, mas apenas substituímos isso. Eu não precisaria substituir o GCC também? Observe também que a página wiki do Arch para Xen menciona a necessidade de uma versão desatualizada do binutils, mas ela e a versão up-to -date versão de ambos não conseguem inicializar da mesma maneira.
- Tentei ativar / desativar todos os systemd.services relacionados a xen também, mas como parece que o systemd está travando antes de carregar qualquer serviço.
- Infelizmente, nem
systemd.crash_shell=true
nem systemd.unit=emergency.service
conseguem me deixar cair em um shell depois que o systemd é invocado.
-
init=/bin/sh
funciona bem tanto quanto eu posso dizer, então é definitivamente systemd
e não switch_root
em si que é o problema.
- A execução do systemd a partir do shell (via
init=/bin/sh
e exec /usr/lib/systemd/systemd
) falha da mesma maneira, e fazer systemd --system --test --log-level=debug
não parece surtar muito. Isso quer dizer que ele saberá que está virtualizado no Xen e em um sistema x86_64, mas não produzirá nada mais do que 5 linhas no total. Em seguida, ele falha no teste com alguns erros relacionados a ironicamente ... ainda não tendo o systemd em execução.
Estou realmente esperando (e temendo) que haja algum parâmetro de kernel simples ou opção Xen Dom0 que eu preciso passar para corrigir isso, mas qualquer insight ou sugestão seria apreciado.