Ich habe proroot ohne `ptrace` entwickelt, um den proot-Flaschenhals auf Android arm64 zu verringern
(github.com/coderredlab)Hallo.
Während ich an einem Projekt gearbeitet habe, bei dem ein Ubuntu-arm64-Userspace auf Android betrieben wird, war der größte Flaschenhals erwartungsgemäß der ptrace-Overhead von proot. Besonders bei Workloads wie Node.js oder Chromium machte sich die durch jeden Syscall entstehende Context-Switch-Kosten deutlich bemerkbar.
Deshalb entwickle ich mit proroot etwas, das eine ähnliche Zielsetzung wie proot hat, aber ohne ptrace arbeitet. Das Ziel ist, ohne Root Pfadumsetzung und Isolierung der Ausführungsumgebung bereitzustellen und dabei die Syscall-Interception innerhalb des Prozesses zu verarbeiten, um den Overhead zu reduzieren.
Aktuell ist es als Kombination aus LD_PRELOAD und Binary-Patching umgesetzt, und in einer arm64-Umgebung habe ich die folgenden Punkte getestet.
- Node.js 24 / npm
- Python 3.12
- Git 2.43
- curl, jq, OpenSSL
- Chromium
headless_shell131 (Playwright)
Die Implementierung funktioniert grob nach folgendem Prinzip.
- PLT-Interception für glibc-Funktionen (
openat,stat,execve,dlopenusw.) - Scannen von ELF-Dateien beim Laden und anschließendes Patchen der Syscall-Stellen auf Trampoline-Aufrufe
- Ergänzungen am Signal-Handler für Android-seccomp-Eigenheiten und Chrome-Kompatibilität
Die Nutzung ist so weit wie möglich an proot angelehnt, daher können derzeit CLI-Flags wie -r, -w und --link2symlink unverändert verwendet werden.
Noch ist es ausschließlich für arm64 gedacht, und vor der vollständigen Veröffentlichung des Sourcecodes sind noch etwas mehr Tests und Stabilisierung nötig, daher verteile ich es vorerst nur in Binärform. Statt halbfertig aufgeräumten Code vorab zu veröffentlichen, halte ich es für besser, Kompatibilität und Stabilität zunächst mit realen Workloads weiter zu verifizieren und es danach aufbereitet zu veröffentlichen.
Falls jemand auf Android wegen der proot-Performance ähnliche Überlegungen hatte, freue ich mich über Meinungen oder Feedback.
Noch keine Kommentare.