iToverDose/Software· 15 MAI 2026 · 00:07

Debian-Apps direkt auf Android 15 nutzen – ohne PRoot

Android 15 blockiert PRoot durch strengere seccomp-Filter. Dieser Workaround ermöglicht das direkte Ausführen von Debian-Binärdateien mit glibc auf Termux – ohne Umwege über Chroot oder Cloud-Dienste.

DEV Community3 min0 Kommentare

Seit Android 15 sind viele Linux-Binärdateien, die bisher mit PRoot liefen, plötzlich unbrauchbar. Der Grund: Der Kernel blockiert kritische Systemaufrufe wie set_robust_list, die PRoot für die Emulation eines Linux-Kernels benötigt. Doch es gibt eine Lösung: Mit patchelf und LD_PRELOAD= lassen sich Debian-Binärdateien direkt ausführen – ohne Root-Zugriff und ohne komplexe Umgebungen.

Warum PRoot unter Android 15 scheitert

PRoot basiert auf der Emulation von Kernelfunktionen durch Systemaufrufe. Doch Android 15 hat den seccomp-Mechanismus verschärft und blockiert nun Funktionen, die für die Ausführung von glibc-Bibliotheken essenziell sind. Das Ergebnis: Binärdateien stürzen mit der Fehlermeldung Bad system call (SIGSYS) ab.

  • Seccomp als Sicherheitsmechanismus: Das Systemfilter erlaubt nur ausgewählte Systemaufrufe und verhindert so Angriffe auf den Kernel.
  • Termux-Interferenz: Die Umgebung injiziert standardmäßig libtermux-exec-ld-preload.so, die mit glibc-Bibliotheken kollidiert.
  • Symlink-Probleme: Von Root erstellte Symlinks in der Debian-Umgebung sind für den Termux-Nutzer nicht zugänglich.

Drei Wege, Debian-Binärdateien auf Android zu nutzen

Je nach Anwendungsfall gibt es unterschiedliche Lösungsansätze – von einfachen Binärdateien bis hin zu komplexen Paketverwaltungen.

Tier 1: Native Ausführung ohne Root

Dieser Ansatz nutzt patchelf, um den Interpreterpfad der Binärdatei auf die glibc-Bibliothek umzuleiten. Anschließend wird die Datei mit LD_PRELOAD= geladen, um Termux-Einmischungen zu verhindern.

patchelf --set-interpreter /home/user/glibc-root/lib/ld-linux-aarch64.so.1 \
  /home/user/glibc-root/usr/bin/python3

LD_PRELOAD=/home/user/glibc-root/lib/x86_64-linux-gnu/libc.so.6 \
  /home/user/glibc-root/usr/bin/python3 --version

Vorteile:

  • Echte native Ausführung ohne Emulation.
  • Kein Root-Zugriff erforderlich.
  • Ideal für einfache Binärdateien wie gcc, python oder git.

Tier 2: Stabilere Lösung mit Root-Rechten

Bei komplexen Abhängigkeiten oder Paketverwaltungen empfiehlt sich ein Wrapper-Skript, das die glibc-Umgebung mit Root-Rechten lädt.

su -c "LD_PRELOAD=/home/user/glibc-root/lib/x86_64-linux-gnu/libc.so.6 \
  LD_LIBRARY_PATH=/home/user/glibc-root/lib/aarch64-linux-gnu:\
  /home/user/glibc-root/usr/lib/aarch64-linux-gnu \
  /home/user/glibc-root/usr/bin/gcc --version"

Vorteile:

  • Höhere Kompatibilität durch korrekte Abhängigkeitsauflösung.
  • Geeignet für Paketmanager wie apt.

Tier 3: Automatisierte Paketverwaltung mit APT

Ein Wrapper-Skript für apt übernimmt die Installation von Debian-Paketen und passt Binärdateien automatisch an die glibc-Umgebung an. Falls verfügbar, werden zunächst Termux-Pakete genutzt, bevor auf Debian zurückgegriffen wird.

Schritt-für-Schritt-Anleitung für die Einrichtung

Bevor es losgeht, stellen Sie sicher, dass Ihr Gerät die Voraussetzungen erfüllt.

Voraussetzungen

  • Root-Zugriff über KernelSU oder Magisk.
  • Termux aus der F-Droid-Quelle (nicht aus dem Play Store).
  • patchelf installiert: pkg install patchelf.
  • Proot-Distro für die Debian-Installation: pkg install proot-distro.

Warum F-Droid? Die Version aus F-Droid bietet bessere Kompatibilität mit benutzerdefinierten ROMs und ermöglicht den Zugriff auf proot-distro ohne Einschränkungen.

Debian-Installation und Konfiguration

  1. Debian-RootFS installieren:
pkg install proot-distro rsync -y
proot-distro install debian
  1. Debian-Pakete wie GCC oder Python installieren:
proot-distro login debian -- bash -c "apt-get update && apt-get install -y gcc python3 curl"
  1. RootFS nach `~/glibc-root` kopieren:
GLIBC="$HOME/glibc-root"
mkdir -p "$GLIBC"
rsync -a "$PREFIX/var/lib/proot-distro/installed-rootfs/debian/" "$GLIBC/"
  1. Symlinks reparieren:

Ein Skript korrigiert die Berechtigungen der von Root erstellten Symlinks:

#!/usr/bin/env python3
import os
import stat

def fix_symlinks(rootfs):
    for dirpath, _, filenames in os.walk(rootfs):
        for filename in filenames:
            filepath = os.path.join(dirpath, filename)
            if os.path.islink(filepath):
                target = os.readlink(filepath)
                if not os.path.isabs(target):
                    new_target = os.path.join(os.path.dirname(filepath), target)
                    os.remove(filepath)
                    os.symlink(new_target, filepath)
                os.lchmod(filepath, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)

if __name__ == "__main__":
    fix_symlinks(os.path.expanduser("~/glibc-root"))
  1. Binärdateien anpassen und testen:
patchelf --set-interpreter ~/glibc-root/lib/ld-linux-aarch64.so.1 \
  ~/glibc-root/usr/bin/python3

LD_PRELOAD=~/glibc-root/lib/aarch64-linux-gnu/libc.so.6 \
  ~/glibc-root/usr/bin/python3 --version

Praktische Anwendungsfälle

Mit dieser Methode lassen sich zahlreiche Linux-Entwicklungswerkzeuge direkt auf dem Android-Gerät nutzen:

  • Kompilieren von C/C++-Code mit gcc oder clang.
  • Ausführen von Skriptsprachen wie Python, Perl oder Node.js.
  • Verwendung von Versionsverwaltungstools wie git oder mercurial.
  • Nutzung von Paketmanagern wie apt für die Installation zusätzlicher Software.

Ausblick: Langfristige Lösungen und Alternativen

Während diese Methode eine sofortige Lösung bietet, arbeiten Entwickler bereits an langfristigen Ansätzen:

  • Anpassung von PRoot für die neuen seccomp-Filter.
  • Native glibc-Unterstützung in Termux für bessere Kompatibilität.
  • Android-Linux-Subsysteme wie Waydroid oder UserLAnd für eine vollständigere Linux-Erfahrung.

Wer regelmäßig mit Linux-Entwicklungstools auf mobilen Geräten arbeitet, sollte diese Methode in sein Arsenal aufnehmen. Sie ermöglicht Produktivität unterwegs – ohne Abhängigkeit von Cloud-Diensten oder externen Servern.

Der Schlüssel zum Erfolg liegt in der korrekten Einrichtung der glibc-Umgebung und der Anpassung der Binärdateien. Mit etwas Geduld lassen sich so auch komplexe Abhängigkeiten zuverlässig auflösen.

KI-Zusammenfassung

Android 15'in getirdiği seccomp kısıtlamaları nedeniyle PRoot kullanılarak Debian uygulamaları çalıştırılamıyor. İşte `patchelf` ve `LD_PRELOAD` ile geliştirdiğimiz yeni yöntemle, uygulamaları doğrudan Termux üzerinde native olarak çalıştırmayı öğrenin.

Kommentare

00
KOMMENTAR SCHREIBEN
ID #L6CPPD

0 / 1200 ZEICHEN

Menschen-Check

9 + 8 = ?

Erscheint nach redaktioneller Prüfung

Moderation · Spam-Schutz aktiv

Noch keine Kommentare. Sei der erste.