kexec travando ao inicializar um kernel sem initramfs (ARM)

2

Primeiro, alguns detalhes sobre a configuração:

  • Linux-3.14.1
  • chip ARM am335x
  • Bootloader U-Boot

O que estou tentando alcançar:

  1. O U-Boot carrega um kernel que contém um initramfs (chame esse kernel 1).
  2. O U-Boot executa este kernel.
  3. O Kernel 1 carrega o kernel 2, que não contém initramfs incorporados. Ele usa uma raiz NFS.
  4. O kernel 1 executa o kernel 2.

O problema:

O kernel 1 não consegue executar o kernel 2; esta é a última coisa que vejo:

[    8.819174] Starting new kernel [    8.822539] Bye!

Pontos principais:

  • O kernel 1 e o kernel 2 têm a mesma configuração além das configurações relacionadas ao initramfs. Ambos têm o kexec ativado.
  • O
  • Kernel 1 pode kexec outro kernel 1, e isso pode ser iniciado com êxito.
  • O kernel 2 pode ser inicializado diretamente a partir do U-Boot com sucesso.
  • Os Kernel 1 e 2 usam a mesma árvore de dispositivos.

Possíveis problemas:

  • Eu posso ter as opções de linha de comando do kernel erradas para a raiz NFS; no entanto, estes foram principalmente copiados do que funcionou com o U-Boot.
  • Acho que se houvesse um problema com o sistema de arquivos raiz, eu veria pelo menos algo no console.

Outras reflexões:

  • Talvez seja algo a ver com grande diferença nos tamanhos de kernel (k1 = 4523344, k2 = 2859240).

Qualquer ajuda é muito apreciada.

    
por Phil Williams 10.06.2015 / 02:45

1 resposta

1

O problema foi que o kexec foi compilado sem o zlib, portanto não pôde manipular um kernel uImage. Um kernel "Image" bruto inicializou bem.

    
por 10.06.2015 / 06:03