1 poin oleh coderred 2026-04-09 | Belum ada komentar. | Bagikan ke WhatsApp

Halo.

Saat mengerjakan proyek yang menjalankan ruang pengguna Ubuntu arm64 di Android, bottleneck terbesar memang adalah overhead ptrace pada proot. Terutama pada workload seperti Node.js atau Chromium, biaya context switch yang terjadi pada setiap syscall terasa cukup besar.

Karena itu, saya sedang mencoba membuat proroot yang memiliki arah serupa dengan proot tetapi berjalan tanpa ptrace. Tujuannya adalah menyediakan translasi path dan isolasi lingkungan eksekusi tanpa root, sambil mengurangi overhead dengan menangani syscall interception di dalam proses.

Saat ini implementasinya menggunakan kombinasi LD_PRELOAD dan patching biner, dan pada lingkungan arm64 saya telah menguji item-item berikut.

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

Implementasinya secara garis besar menggunakan cara berikut.

  • PLT interception terhadap fungsi glibc (openat, stat, execve, dlopen, dll.)
  • Setelah memindai ELF pada saat load, titik syscall dipatch agar memanggil trampoline
  • Penyesuaian signal handler untuk Android seccomp quirks dan kompatibilitas Chrome

Cara penggunaannya dibuat semirip mungkin dengan proot, sehingga saat ini flag CLI seperti -r, -w, --link2symlink bisa digunakan apa adanya.

Untuk sekarang masih khusus arm64, dan sebelum seluruh source dibuka saya merasa masih perlu sedikit lebih banyak pengujian dan stabilisasi, jadi untuk sementara didistribusikan hanya dalam bentuk biner. Saya menilai lebih baik memverifikasi kompatibilitas dan stabilitas pada workload nyata terlebih dahulu lalu merapikan dan merilisnya, daripada membuka kode yang masih setengah belum tertata.

Jika ada yang pernah memikirkan hal serupa karena performa proot di Android, saya akan sangat menghargai pendapat atau masukannya.

Belum ada komentar.

Belum ada komentar.