Systemd trava no Xen Dom0 imediatamente após switch_root no processo de inicialização

1

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.

    
por cartographer 17.01.2015 / 02:06

1 resposta

1

O problema no meu caso acabou sendo resolvido passando o sinalizador no-efi-rs (sem serviços de tempo de execução EFI) para as opções de inicialização do Xen em xen.cfg .

Se o seu processo de inicialização puder chegar ao estágio /sbin/init , abaixo está uma configuração útil para o Xen:

[global]
default=xen

[xen]
options=loglvl=all guest_loglvl=all conring_size=10M console_to_ring=true noreboot
kernel=vmlinuz-linux root=/dev/whatever rw init=/bin/sh log_buf_len=10M loglevel=9 
ramdisk=initramfs-linux.img

Depois de entrar no shell, você pode executar

# mount xenfs so that the next command actually works
mount -t xenfs xenfs /proc/xen
# display the Xen log, pipe it to a file if you want to save it for later
xl dmesg
    
por 17.01.2015 / 19:07