O kernel de captura pode ser usado como um kernel normal depois de um kexec?

1

Eu li sobre as instalações do kexec / kdump, sabemos que o kernel travado / em pânico é disponibilizado via / proc / vmcore.

Ouvi falar que as pessoas usam a inicialização baseada em kexec para ignorar os estágios de inicialização EFI / BIOS / FW para acelerar suas atividades de correção de SO em máquinas de produção. Isso implica que essas máquinas continuam usando os kernels de captura pelo restante de seu tempo de processamento / funcionamento.

Não consegui encontrar uma menção clara da capacidade do kernel de captura de recuperar as áreas de memória antigas que foram preservadas para obter um kdump. O kernel de captura pode descartar aqueles conteúdos de memória preservados depois que o dump foi salvo?

É verdade que o kernel de captura estaria rodando a partir de um local de memória "não-padrão" devido a ser um kernel "relocável", mas pode utilizar / liberar toda a memória restante e continuar sendo usado como o kernel principal para usos de produção?

    
por Junaid Shahid 28.02.2018 / 13:01

1 resposta

1

Existe uma grande diferença entre um kernel kexec padrão e o kernel panic.

Um kernel kexec "normal" receberá o mapa de memória física completo do kernel antigo (por exemplo, o mapa E820 em máquinas x86 ou árvore de dispositivos no IBM POWER), assim ele inicializa todas as suas estruturas de gerenciamento de memória para toda a RAM. / p>

Por outro lado, o kernel panic receberá um mapa modificado, que inclui apenas a área reservada com o parâmetro crashkernel= no primeiro kernel. O mapa RAM do kernel original é passado separadamente nos cabeçalhos do núcleo ELF (cf. elfcorehdr= kernel parameter), e o kernel panic pode acessá-lo somente através do arquivo especial / proc / vmcore.

Teoricamente, a RAM remanescente pode ser conectada a quente em algum momento, mas isso não é implementado e a AFAIK nem mesmo está trabalhando para que isso aconteça.

    
por 06.12.2018 / 09:05