Voltar à lista
Linux x86_64Sistema & diversos#246

kexec_load

Carrega uma imagem de kernel na memória para ser executada imediatamente via kexec, pulando o firmware/bootloader.

Descrição

Permite 'reiniciar' diretamente para um novo kernel sem passar pelo POST da BIOS/UEFI — usado para boot rápido e para capturar dumps de crash (kdump) usando um segundo kernel dedicado.

Header: linux/kexec.hman 2

Nota

Exige CAP_SYS_BOOT; frequentemente restrita ainda mais por 'kernel lockdown' em sistemas com Secure Boot.

Assinatura

long kexec_load(
    unsigned long entry,
    unsigned long nr_segments,
    struct kexec_segment * segments,
    unsigned long flags
);

Parâmetros

ParâmetroTipoDescrição
entryunsigned longEndereço de entrada do novo kernel.
nr_segmentsunsigned longNúmero de segmentos de memória em `segments`.
segmentsstruct kexec_segment *Descreve onde cada parte da imagem do kernel deve ser carregada.
flagsunsigned longKEXEC_ON_CRASH, KEXEC_PRESERVE_CONTEXT, etc.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1entryunsigned long
rsiargumento 2nr_segmentsunsigned long
rdxargumento 3segmentsstruct kexec_segment *
r10argumento 4flagsunsigned long

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EBUSY(16)
Dispositivo ou recurso ocupado.
EINVAL(22)
Argumento inválido.
ENOMEM(12)
Memória insuficiente para completar a operação.
EPERM(1)
Operação não permitida (falta de privilégio).

Relacionadas