1 puntos por coderred 2026-04-09 | Aún no hay comentarios. | Compartir por WhatsApp

Hola.

Mientras avanzaba en un proyecto para levantar y usar un espacio de usuario Ubuntu arm64 en Android, el mayor cuello de botella seguía siendo el overhead de ptrace en proot. En cargas de trabajo como Node.js o Chromium en particular, el costo de los context switch que ocurren en cada syscall se sentía bastante fuerte.

Por eso estoy desarrollando proroot, que va en una dirección similar a proot pero funciona sin ptrace. El objetivo es ofrecer traducción de rutas y aislamiento del entorno de ejecución sin requerir root, mientras se reduce el overhead procesando la interceptación de syscalls dentro del propio proceso.

Por ahora lo estoy implementando combinando LD_PRELOAD y parcheo de binarios, y en un entorno arm64 probé los siguientes elementos.

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

La implementación es, a grandes rasgos, así.

  • Intercepción PLT de funciones de glibc (openat, stat, execve, dlopen, etc.)
  • Después de escanear el ELF en el momento de carga, se parchean los puntos de syscall para llamar a un trampolín
  • Ajustes al signal handler para quirks de seccomp en Android y compatibilidad con Chrome

La forma de uso se está manteniendo lo más parecida posible a proot, así que por ahora se pueden usar tal cual flags de CLI como -r, -w y --link2symlink.

Todavía es solo para arm64, y antes de publicar todo el código fuente necesito un poco más de pruebas y estabilización, así que por el momento lo estoy distribuyendo únicamente en forma de binario. Consideré que era mejor validar un poco más la compatibilidad y la estabilidad en cargas de trabajo reales antes de ordenar el código y publicarlo, en lugar de mostrar primero código todavía a medio organizar.

Si alguien ya pasó por preocupaciones parecidas por el rendimiento de proot en Android, agradecería mucho sus opiniones o feedback.

Aún no hay comentarios.

Aún no hay comentarios.