1 pontos por coderred 2026-04-09 | Ainda não há comentários. | Compartilhar no WhatsApp

Olá.

Enquanto eu tocava um projeto para subir e usar um espaço de usuário Ubuntu arm64 no Android, o maior gargalo era, como esperado, o overhead de ptrace do proot. Principalmente em cargas de trabalho como Node.js e Chromium, o custo de context switch gerado a cada syscall era bem perceptível.

Por isso, estou desenvolvendo o proroot, que segue uma direção parecida com a do proot, mas funciona sem ptrace. O objetivo é fornecer conversão de caminhos e isolamento do ambiente de execução sem root, ao mesmo tempo processando a interceptação de syscalls dentro do próprio processo para reduzir o overhead.

No momento, a implementação combina LD_PRELOAD com patching de binários, e testei os itens abaixo em ambiente arm64.

  • Node.js 24 / npm
  • Python 3.12
  • Git 2.43
  • curl, jq, OpenSSL
  • Chromium headless_shell 131 (Playwright)

A implementação funciona, em linhas gerais, da seguinte forma.

  • interceptação de PLT para funções da glibc (openat, stat, execve, dlopen etc.)
  • após escanear o ELF no momento do carregamento, faz patch dos pontos de syscall para chamadas via trampoline
  • ajustes no signal handler para lidar com quirks do seccomp no Android e compatibilidade com o Chrome

A forma de uso foi mantida o mais parecida possível com a do proot, então por enquanto dá para usar diretamente flags de CLI como -r, -w e --link2symlink.

Ainda é algo exclusivo para arm64 e, antes de abrir todo o código-fonte, preciso de mais testes e estabilização, então por enquanto a distribuição está sendo feita apenas em formato binário. Em vez de publicar primeiro um código ainda meio desorganizado, concluí que faz mais sentido validar um pouco mais a compatibilidade e a estabilidade em cargas de trabalho reais e depois organizar tudo para publicar.

Se alguém já passou por preocupações parecidas por causa da performance do proot no Android, agradeço opiniões ou feedback.

Ainda não há comentários.

Ainda não há comentários.