Linux x86_64Sistema & diversos#320
kexec_file_load
Como kexec_load, mas carrega a imagem do kernel a partir de descritores de arquivo, com verificação de assinatura.
Descrição
Versão mais segura de `kexec_load`: o kernel valida a assinatura criptográfica da imagem antes de aceitar carregá-la, importante em sistemas com Secure Boot/kernel lockdown habilitados.
Header:
linux/kexec.hman 2Desde o kernel 3.17Assinatura
long kexec_file_load(
int kernel_fd,
int initrd_fd,
unsigned long cmdline_len,
const char * cmdline_ptr,
unsigned long flags
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| kernel_fd | int | Descritor de arquivo da imagem do novo kernel. |
| initrd_fd | int | Descritor de arquivo do initrd/initramfs, ou -1. |
| cmdline_len | unsigned long | Tamanho da linha de comando do kernel. |
| cmdline_ptr | const char * | Linha de comando a passar ao novo kernel. |
| flags | unsigned long | KEXEC_FILE_UNLOAD, KEXEC_FILE_ON_CRASH, KEXEC_FILE_NO_INITRAMFS. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | kernel_fdint |
| rsi | argumento 2 | initrd_fdint |
| rdx | argumento 3 | cmdline_lenunsigned long |
| r10 | argumento 4 | cmdline_ptrconst char * |
| r8 | argumento 5 | flagsunsigned long |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EBADF(9)
- Descritor de arquivo inválido.
- EINVAL(22)
- Argumento inválido.
- ENOEXEC(8)
- Formato de executável inválido.
- EPERM(1)
- Operação não permitida (falta de privilégio).