Linux x86_64Sistema de arquivos#155
pivot_root
Troca o sistema de arquivos raiz do sistema (ou do namespace de mount atual) por outro já montado.
Descrição
Passo central na inicialização de containers e initramfs: move a raiz atual para um diretório dentro da nova raiz (permitindo desmontá-la depois) e torna o novo sistema de arquivos a raiz "/".
man 2
Nota
Exige CAP_SYS_ADMIN no namespace de mount relevante — normalmente usada dentro de um novo mount namespace (CLONE_NEWNS).
Assinatura
int pivot_root(const char * new_root, const char * put_old);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| new_root | const char * | Caminho do novo sistema de arquivos raiz (deve ser um ponto de montagem). |
| put_old | const char * | Diretório dentro de `new_root` onde a raiz antiga será colocada. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | new_rootconst char * |
| rsi | argumento 2 | put_oldconst char * |
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.
- ENOTDIR(20)
- Não é um diretório.
- EPERM(1)
- Operação não permitida (falta de privilégio).