<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Paçoca</title>
    <description>The latest articles on DEV Community by Paçoca (@opassoca).</description>
    <link>https://dev.to/opassoca</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3932048%2F7e0ad8d7-5083-44dc-9f8f-90812e5cc4cb.jpg</url>
      <title>DEV Community: Paçoca</title>
      <link>https://dev.to/opassoca</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/opassoca"/>
    <language>en</language>
    <item>
      <title>Running Native glibc (Debian) Binaries on Android 15 Without PRoot</title>
      <dc:creator>Paçoca</dc:creator>
      <pubDate>Thu, 14 May 2026 23:43:24 +0000</pubDate>
      <link>https://dev.to/opassoca/running-native-glibc-debian-binaries-on-android-15-without-proot-1hmo</link>
      <guid>https://dev.to/opassoca/running-native-glibc-debian-binaries-on-android-15-without-proot-1hmo</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;🔧 &lt;strong&gt;TL;DR:&lt;/strong&gt; Android 15 broke PRoot with stricter seccomp filters. After ~10 hours of debugging, I found a working solution using &lt;code&gt;patchelf&lt;/code&gt; + &lt;code&gt;LD_PRELOAD=&lt;/code&gt; to run native Linux (Debian/glibc) binaries directly on Termux!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
  🎯 What will you achieve? (Click to expand)
  &lt;p&gt;By following this guide, you will be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Run &lt;strong&gt;GCC, Python, Bun, Git&lt;/strong&gt; and 300+ more Debian packages natively&lt;/li&gt;
&lt;li&gt;✅ Compile code directly on your Android phone&lt;/li&gt;
&lt;li&gt;✅ Use Linux development tools without cloud dependencies&lt;/li&gt;
&lt;li&gt;✅ Get a true Linux experience on mobile&lt;/li&gt;
&lt;/ul&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Android 15 significantly tightened its seccomp security filters. Running any Debian/glibc binary via &lt;code&gt;proot-distro&lt;/code&gt; now fails with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bad system call (SIGSYS)
set_robust_list: Function not implemented
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Important:&lt;/strong&gt; This isn't a configuration issue. The kernel literally blocks the syscalls that PRoot needs to emulate a Linux environment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every guide said &lt;em&gt;"just use PRoot"&lt;/em&gt; → so I spent &lt;strong&gt;~10 hours&lt;/strong&gt; finding what actually works.&lt;/p&gt;

&lt;p&gt;
  🤔 Why should you care about this? (Click to expand)
  &lt;p&gt;If you want to run Linux development tools on your Android device without relying on cloud services or complex setups, this guide is for you!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This solution works because we bypass PRoot entirely&lt;/strong&gt; and run binaries natively using &lt;code&gt;patchelf&lt;/code&gt; to modify the ELF binary's interpreter path.&lt;/p&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding Seccomp
&lt;/h2&gt;

&lt;p&gt;
  🔒 What is Seccomp? (Click to learn)
  &lt;p&gt;&lt;strong&gt;Seccomp&lt;/strong&gt; (Secure Computing Mode) is a Linux kernel security feature that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Filters system calls&lt;/strong&gt; (syscalls) a process can make&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restricts access&lt;/strong&gt; to sensitive kernel operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prevents exploitation&lt;/strong&gt; by limiting what programs can do&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it like a &lt;strong&gt;firewall for programs&lt;/strong&gt; - it decides which "doors" a program can use.&lt;/p&gt;

&lt;p&gt;📖 &lt;a href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux_atomic_host/7/html/container_security_guide/linux_capabilities_and_seccomp" rel="noopener noreferrer"&gt;Learn more about seccomp (Red Hat Documentation)&lt;/a&gt;&lt;/p&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution — Three Tiers
&lt;/h2&gt;

&lt;p&gt;I developed a &lt;strong&gt;three-tier approach&lt;/strong&gt; depending on your needs:&lt;/p&gt;

&lt;p&gt;
  📋 Click to see all solution tiers
  &lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Root Required&lt;/th&gt;
&lt;th&gt;Native Level&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;LD_PRELOAD=&lt;/code&gt; + direct binary&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;Simple binaries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;su -c&lt;/code&gt; wrapper with env vars&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;Complex binaries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Smart APT wrapper&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;td&gt;Package management&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Tier 1 — Most Native (No Root)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# After patchelf on binary:&lt;/span&gt;
&lt;span class="nv"&gt;LD_PRELOAD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; /path/to/glibc-binary &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;True native execution&lt;/li&gt;
&lt;li&gt;The ELF binary loads glibc directly&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;LD_PRELOAD=&lt;/code&gt; prevents Termux from injecting its Bionic lib&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Tier 2 — Production Stable (Root Required)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;su &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"LD_PRELOAD= LD_LIBRARY_PATH=&lt;/span&gt;&lt;span class="se"&gt;\$&lt;/span&gt;&lt;span class="s2"&gt;GLIBC/lib/aarch64-linux-gnu:&lt;/span&gt;&lt;span class="se"&gt;\$&lt;/span&gt;&lt;span class="s2"&gt;GLIBC/usr/lib/aarch64-linux-gnu &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
       &lt;/span&gt;&lt;span class="se"&gt;\$&lt;/span&gt;&lt;span class="s2"&gt;GLIBC/usr/bin/binary &lt;/span&gt;&lt;span class="se"&gt;\"\\\$&lt;/span&gt;&lt;span class="s2"&gt;@&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;More compatible for complex binaries&lt;/li&gt;
&lt;li&gt;Handles deep transitive dependencies&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Tier 3 — "Just Works" (Smart APT)
&lt;/h3&gt;

&lt;p&gt;Transparent apt install that tries Termux repos first, falls back to Debian, and auto-patches new binaries.&lt;/p&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  Root Cause — Why PRoot Fails
&lt;/h2&gt;

&lt;p&gt;
  🐛 The Three Problems (Click to expand)
  &lt;h3&gt;
  
  
  Problem 1: Seccomp Blocking
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Android 15 seccomp blocks set_robust_list called by glibc at startup → SIGSYS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;📖 &lt;a href="https://man7.org/linux/man-pages/man2/set_robust_list.2.html" rel="noopener noreferrer"&gt;What is set_robust_list?&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Problem 2: Termux LD_PRELOAD Conflict
&lt;/h3&gt;

&lt;p&gt;Termux injects &lt;code&gt;libtermux-exec-ld-preload.so&lt;/code&gt; into every process. This Bionic library looks for &lt;code&gt;libc.so&lt;/code&gt; → which doesn't exist in glibc → &lt;strong&gt;crash&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Problem 3: Root-Created Symlink Permissions
&lt;/h3&gt;

&lt;p&gt;Symlinks created by &lt;code&gt;apt&lt;/code&gt; inside chroot (running as root) inherit security attributes that make them inaccessible to the Termux user UID.&lt;/p&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  Device Information
&lt;/h2&gt;

&lt;p&gt;
  📱 My Device Setup (Click to see details)
  &lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Samsung Variants Explained:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exynos (Europe/Asia):&lt;/strong&gt; Uses Samsung's own processor — our device!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snapdragon (USA/LATAM/China):&lt;/strong&gt; Uses Qualcomm processor — different kernel/firmware&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Spec&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.gsmarena.com/samsung_galaxy_s10e-9537.php" rel="noopener noreferrer"&gt;Samsung Galaxy S10e (SM-G970F)&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Variant&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Exynos 9820&lt;/strong&gt; (International - EMEA)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Processor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://en.wikipedia.org/wiki/Exynos" rel="noopener noreferrer"&gt;Exynos 9820&lt;/a&gt; - 8nm Octa-core&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/AArch64" rel="noopener noreferrer"&gt;ARM64 (AArch64)&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Android&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ROM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/ExtremeXT/ExtremeROM" rel="noopener noreferrer"&gt;ExtremeROM Nexus&lt;/a&gt; by &lt;a href="https://github.com/ExtremeXT" rel="noopener noreferrer"&gt;ExtremeXT&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Root&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://kernelsu.org/" rel="noopener noreferrer"&gt;KernelSU&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Terminal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://f-droid.org/en/packages/com.termux/" rel="noopener noreferrer"&gt;Termux (F-Droid)&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;
  ✅ Requirements Checklist (Click to expand)
  &lt;p&gt;Before we begin, make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;Rooted device&lt;/strong&gt; with &lt;a href="https://kernelsu.org/" rel="noopener noreferrer"&gt;KernelSU&lt;/a&gt; or &lt;a href="https://topjohnwu.github.io/Magisk/" rel="noopener noreferrer"&gt;Magisk&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;&lt;a href="https://f-droid.org/en/packages/com.termux/" rel="noopener noreferrer"&gt;Termux&lt;/a&gt;&lt;/strong&gt; from &lt;strong&gt;F-Droid&lt;/strong&gt; (NOT Play Store)&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;&lt;a href="https://github.com/NixOS/patchelf" rel="noopener noreferrer"&gt;patchelf&lt;/a&gt;&lt;/strong&gt; installed: &lt;code&gt;pkg install patchelf&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Why F-Droid?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;More permissive update cycle&lt;/li&gt;
&lt;li&gt;Full access to &lt;code&gt;proot-distro&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Better compatibility with custom ROMs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📖 &lt;a href="https://f-droid.org/en/" rel="noopener noreferrer"&gt;Learn more about F-Droid&lt;/a&gt;&lt;/p&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  Installation Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Install Debian rootfs
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install required packages&lt;/span&gt;
pkg &lt;span class="nb"&gt;install &lt;/span&gt;proot-distro rsync &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="c"&gt;# Install Debian&lt;/span&gt;
proot-distro &lt;span class="nb"&gt;install &lt;/span&gt;debian

&lt;span class="c"&gt;# Define paths&lt;/span&gt;
&lt;span class="nv"&gt;ROOTFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;&lt;span class="s2"&gt;/var/lib/proot-distro/installed-rootfs/debian"&lt;/span&gt;
&lt;span class="nv"&gt;GLIBC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/glibc-root"&lt;/span&gt;

&lt;span class="c"&gt;# Install base packages&lt;/span&gt;
proot-distro login debian &lt;span class="nt"&gt;--&lt;/span&gt; bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"
  apt-get update &amp;amp;&amp;amp;
  apt-get install -y gcc g++ make python3 bun curl unzip zip ca-certificates
"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📖 &lt;a href="https://github.com/termux/proot-distro" rel="noopener noreferrer"&gt;What is proot-distro?&lt;/a&gt; | &lt;a href="https://rsync.samba.org/" rel="noopener noreferrer"&gt;What is rsync?&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Extract rootfs to native location
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
rsync &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$ROOTFS&lt;/span&gt;&lt;span class="s2"&gt;/"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;
  ⚠️ Critical: Fix Symlinks (Click to expand)
  &lt;p&gt;Root-created symlinks inherit security context that blocks Termux UID access. This fix is &lt;strong&gt;mandatory&lt;/strong&gt;!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;#!/usr/bin/env python3
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Fix symlinks for Termux UID compatibility&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;

&lt;span class="n"&gt;rootfs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expanduser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;~/glibc-root&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;dirpath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dirs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;walk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rootfs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dirpath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;islink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
            &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readlink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;except&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;su&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-c&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;readlink &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                    &lt;span class="n"&gt;capture_output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
                &lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;unlink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;except&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;su&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-c&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rm -f &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;capture_output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;symlink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;✓ Symlinks repaired.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;br&gt;
&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Fix the dynamic linker
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;GLIBC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/glibc-root"&lt;/span&gt;
&lt;span class="nv"&gt;LOADER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1"&lt;/span&gt;

&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/lib64"&lt;/span&gt;
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-sf&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$LOADER&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/lib64/ld-linux-aarch64.so.1"&lt;/span&gt;
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-sf&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$LOADER&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/lib/ld-linux-aarch64.so.1"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📖 &lt;a href="https://linux.die.net/man/8/ld-linux.so" rel="noopener noreferrer"&gt;Learn about ld-linux.so&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4: Mass patchelf — make all binaries self-contained
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;GLIBC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/glibc-root"&lt;/span&gt;
&lt;span class="nv"&gt;LOADER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1"&lt;/span&gt;
&lt;span class="nv"&gt;RPATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/lib/aarch64-linux-gnu:&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/usr/lib/aarch64-linux-gnu"&lt;/span&gt;
&lt;span class="nv"&gt;OUT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;&lt;span class="s2"&gt;/bin"&lt;/span&gt;

&lt;span class="k"&gt;for &lt;/span&gt;bin &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/usr/bin/"&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/bin/"&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$bin&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nt"&gt;-x&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$bin&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="k"&gt;continue
    &lt;/span&gt;&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;basename&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$bin&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="nt"&gt;-glibc&lt;/span&gt;
    &lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$bin&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$OUT&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    patchelf &lt;span class="nt"&gt;--set-interpreter&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$LOADER&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
             &lt;span class="nt"&gt;--set-rpath&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$RPATH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
             &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$OUT&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$OUT&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;done

&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"✓ Patched &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nv"&gt;$OUT&lt;/span&gt;/&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="nt"&gt;-glibc&lt;/span&gt; 2&amp;gt;/dev/null | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; binaries"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📖 &lt;a href="https://github.com/NixOS/patchelf" rel="noopener noreferrer"&gt;What is patchelf?&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5: Fix ownership
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;su &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"chown -R &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/glibc-root"&lt;/span&gt;
su &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"find &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/glibc-root -type d -exec chmod 755 {} &lt;/span&gt;&lt;span class="se"&gt;\;&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 6: Create the Smart APT wrapper
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; ~/apt-debian &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;SCRIPT&lt;/span&gt;&lt;span class="sh"&gt;'
#!/data/data/com.termux/files/usr/bin/bash
# apt-debian v3 — installs from Debian and auto-patchelfs

GLIBC="&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="sh"&gt;/glibc-root"
LOADER="&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="sh"&gt;/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1"
RPATH="&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="sh"&gt;/lib/aarch64-linux-gnu:&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="sh"&gt;/usr/lib/aarch64-linux-gnu"

case "&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="sh"&gt;" in
  install)
    shift
    BEFORE=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;find &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/usr/bin"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/bin"&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-executable&lt;/span&gt; 2&amp;gt;/dev/null | &lt;span class="nb"&gt;sort&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;
    su -c "cp /system/etc/resolv.conf &lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="sh"&gt;/etc/resolv.conf 2&amp;gt;/dev/null || &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="sh"&gt;
           echo 'nameserver 8.8.8.8' &amp;gt; &lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="sh"&gt;/etc/resolv.conf"
    su -c "chroot &lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="sh"&gt; /usr/bin/apt-get install -y &lt;/span&gt;&lt;span class="nv"&gt;$*&lt;/span&gt;&lt;span class="sh"&gt;"
    AFTER=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;find &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/usr/bin"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="s2"&gt;/bin"&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-executable&lt;/span&gt; 2&amp;gt;/dev/null | &lt;span class="nb"&gt;sort&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;
    NEW=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;comm&lt;/span&gt; &lt;span class="nt"&gt;-13&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$BEFORE&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$AFTER&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;

    for bin in &lt;/span&gt;&lt;span class="nv"&gt;$NEW&lt;/span&gt;&lt;span class="sh"&gt;; do
      name="&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;basename&lt;/span&gt; &lt;span class="nv"&gt;$bin&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;-glibc"
      cp "&lt;/span&gt;&lt;span class="nv"&gt;$bin&lt;/span&gt;&lt;span class="sh"&gt;" "&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;&lt;span class="sh"&gt;/bin/&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="sh"&gt;"
      patchelf --set-interpreter "&lt;/span&gt;&lt;span class="nv"&gt;$LOADER&lt;/span&gt;&lt;span class="sh"&gt;" --set-rpath "&lt;/span&gt;&lt;span class="nv"&gt;$RPATH&lt;/span&gt;&lt;span class="sh"&gt;" "&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;&lt;span class="sh"&gt;/bin/&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="sh"&gt;" 2&amp;gt;/dev/null
      chmod +x "&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;&lt;span class="sh"&gt;/bin/&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="sh"&gt;"
      echo "✓ &lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="sh"&gt; available"
    done
    ;;
  update)
    su -c "chroot &lt;/span&gt;&lt;span class="nv"&gt;$GLIBC&lt;/span&gt;&lt;span class="sh"&gt; /usr/bin/apt-get update"
    ;;
  *)
    echo "Usage: apt-debian {install|update} [packages]"
    ;;
esac
&lt;/span&gt;&lt;span class="no"&gt;SCRIPT

&lt;/span&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x ~/apt-debian
&lt;span class="nb"&gt;mv&lt;/span&gt; ~/apt-debian &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PREFIX&lt;/span&gt;&lt;span class="s2"&gt;/bin/apt-debian"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 7: Add to PATH
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export PATH="$HOME/.glibc-bin:$PATH"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.bashrc
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export GLIBC_ROOT="$HOME/glibc-root"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.bashrc
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Testing
&lt;/h2&gt;

&lt;p&gt;
  🧪 Verify Installation (Click to expand)
  &lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Test Command&lt;/th&gt;
&lt;th&gt;Expected Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LD_PRELOAD= gcc-glibc --version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gcc (Debian 14.2.0-6) 14.2.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bun --version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.x.x&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;apt-debian install htop &amp;amp;&amp;amp; htop&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Interactive process manager&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Quick Tests
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Test GCC&lt;/span&gt;
&lt;span class="nv"&gt;LD_PRELOAD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; gcc-glibc &lt;span class="nt"&gt;--version&lt;/span&gt;

&lt;span class="c"&gt;# Test Bun&lt;/span&gt;
bun &lt;span class="nt"&gt;--version&lt;/span&gt;

&lt;span class="c"&gt;# Test APT wrapper&lt;/span&gt;
apt-debian &lt;span class="nb"&gt;install &lt;/span&gt;htop &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; htop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;/p&gt;




&lt;h2&gt;
  
  
  Known Limitations
&lt;/h2&gt;

&lt;p&gt;
  ⚠️ Important Notes (Click to expand)
  &lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Requires Root&lt;/strong&gt; — The &lt;code&gt;su -c&lt;/code&gt; fallback needs KernelSU/Magisk root. Tier 1 works rootless but may fail on complex binaries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;LD_PRELOAD= Must Be Cleared&lt;/strong&gt; — Termux injects &lt;code&gt;libtermux-exec-ld-preload.so&lt;/code&gt; which crashes glibc. Always run with &lt;code&gt;LD_PRELOAD=&lt;/code&gt; if not using wrappers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Symlink Repair Is Mandatory&lt;/strong&gt; — apt creates symlinks as root; they inherit security context that blocks Termux UID access.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  Available Binaries
&lt;/h2&gt;

&lt;p&gt;
  📦 What Works Out of the Box (Click to expand)
  &lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Binary&lt;/th&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Official Site&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ &lt;strong&gt;GCC 14&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gcc-glibc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gcc.gnu.org/" rel="noopener noreferrer"&gt;gcc.gnu.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ &lt;strong&gt;Python 3.13&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;python3.13-glibc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;python.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ &lt;strong&gt;Bun&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bun&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bun.com/" rel="noopener noreferrer"&gt;bun.sh&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ &lt;strong&gt;Git&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git-glibc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;git-scm.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ &lt;strong&gt;htop&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;htop-glibc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://htop.dev/" rel="noopener noreferrer"&gt;htop.dev&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;300+ Debian aarch64 packages available via &lt;code&gt;apt-debian install&lt;/code&gt;!&lt;/strong&gt;&lt;/p&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding ELF and Dynamic Linker
&lt;/h2&gt;

&lt;p&gt;
  📚 Technical Background (Click to learn)
  &lt;h3&gt;
  
  
  What is ELF?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;ELF&lt;/strong&gt; (Executable and Linkable Format) is the standard binary format for executables on Linux systems. It tells the OS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to load the program into memory&lt;/li&gt;
&lt;li&gt;Where to find the code and data&lt;/li&gt;
&lt;li&gt;What libraries are needed&lt;/li&gt;
&lt;li&gt;How to execute the program&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📖 &lt;a href="https://en.wikipedia.org/wiki/Executable_and_Linkable_Format" rel="noopener noreferrer"&gt;Learn more about ELF&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  What is the Dynamic Linker?
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;dynamic linker&lt;/strong&gt; (&lt;code&gt;ld-linux.so&lt;/code&gt;) is the first thing that executes when you run any Linux program. It:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Loads&lt;/strong&gt; the program into memory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finds&lt;/strong&gt; required libraries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolves&lt;/strong&gt; symbols&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prepares&lt;/strong&gt; the program to run&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;📖 &lt;a href="https://man7.org/linux/man-pages/man8/ld.so.8.html" rel="noopener noreferrer"&gt;Dynamic linker documentation&lt;/a&gt;&lt;/p&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  Samsung Firmware Flashing Reference
&lt;/h2&gt;

&lt;p&gt;
  📱 If You Need to Flash Firmware (Click to expand)
  &lt;h3&gt;
  
  
  Tool Comparison
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Odin&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Windows PC only&lt;/td&gt;
&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Odin_(firmware_flashing_software)" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Heimdall&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Linux/macOS&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/benjamin-dobell/heimdall" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; / &lt;a href="https://glassechidna.com.au/heimdall/" rel="noopener noreferrer"&gt;Official&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Eros&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Android (No PC!)&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/Gabriel2392/ErosFlashTool" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; / &lt;a href="https://xdaforums.com/t/app-7-0-no-root-eros-samsung-odin-flash-tool-for-android.4695204/" rel="noopener noreferrer"&gt;XDA&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Galaxy S10e (SM-G970F) Resources
&lt;/h3&gt;

&lt;p&gt;📖 &lt;a href="https://xdaforums.com/f/samsung-galaxy-s10e-roms-kernels-recoveries-o.8767/" rel="noopener noreferrer"&gt;XDA Forum - Galaxy S10e ROMs, Kernels &amp;amp; Recoveries&lt;/a&gt;&lt;/p&gt;



&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Reference&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Terminal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://termux.dev/en/" rel="noopener noreferrer"&gt;Termux&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/termux/termux-app" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ROM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ExtremeXT/ExtremeROM" rel="noopener noreferrer"&gt;ExtremeROM Nexus&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Android 15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Root&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://kernelsu.org/" rel="noopener noreferrer"&gt;KernelSU&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Exynos 9820&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Distribution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.debian.org/" rel="noopener noreferrer"&gt;Debian&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;glibc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compatibility Layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/NixOS/patchelf" rel="noopener noreferrer"&gt;patchelf&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;ELF modification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Execution Method&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;LD_PRELOAD=&lt;/code&gt; bypass&lt;/td&gt;
&lt;td&gt;Native execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.gsmarena.com/samsung_galaxy_s10e-9537.php" rel="noopener noreferrer"&gt;Samsung Galaxy S10e (SM-G970F) - Exynos 9820&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;ARM64/AArch64&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Resources &amp;amp; References
&lt;/h2&gt;

&lt;h3&gt;
  
  
  📱 Device &amp;amp; Hardware
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Samsung Galaxy S10e (SM-G970F) - Exynos&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.gsmarena.com/samsung_galaxy_s10e-9537.php" rel="noopener noreferrer"&gt;GSMArena&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exynos 9820 Processor&lt;/td&gt;
&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Exynos" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AArch64/ARM64 Architecture&lt;/td&gt;
&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/AArch64" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XDA Forum - Galaxy S10e&lt;/td&gt;
&lt;td&gt;&lt;a href="https://xdaforums.com/f/samsung-galaxy-s10e-roms-kernels-recoveries-o.8767/" rel="noopener noreferrer"&gt;XDA Forums&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  🔧 Development Tools
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Official Site&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Termux&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://termux.dev/en/" rel="noopener noreferrer"&gt;termux.dev&lt;/a&gt; / &lt;a href="https://f-droid.org/en/packages/com.termux/" rel="noopener noreferrer"&gt;F-Droid&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;patchelf&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/NixOS/patchelf" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;proot-distro&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/termux/proot-distro" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F-Droid&lt;/td&gt;
&lt;td&gt;&lt;a href="https://f-droid.org/en/" rel="noopener noreferrer"&gt;f-droid.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bun&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bun.com/" rel="noopener noreferrer"&gt;bun.sh&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GCC&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gcc.gnu.org/" rel="noopener noreferrer"&gt;gcc.gnu.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;python.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git&lt;/td&gt;
&lt;td&gt;&lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;git-scm.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;htop&lt;/td&gt;
&lt;td&gt;&lt;a href="https://htop.dev/" rel="noopener noreferrer"&gt;htop.dev&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  📚 Linux Concepts
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ELF Format&lt;/td&gt;
&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Executable_and_Linkable_Format" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seccomp&lt;/td&gt;
&lt;td&gt;&lt;a href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux_atomic_host/7/html/container_security_guide/linux_capabilities_and_seccomp" rel="noopener noreferrer"&gt;Red Hat Docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dynamic Linker&lt;/td&gt;
&lt;td&gt;&lt;a href="https://man7.org/linux/man-pages/man8/ld.so.8.html" rel="noopener noreferrer"&gt;man7.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rsync&lt;/td&gt;
&lt;td&gt;&lt;a href="https://rsync.samba.org/" rel="noopener noreferrer"&gt;rsync.samba.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  🔐 Root &amp;amp; ROM
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;KernelSU&lt;/td&gt;
&lt;td&gt;&lt;a href="https://kernelsu.org/" rel="noopener noreferrer"&gt;kernelsu.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Magisk&lt;/td&gt;
&lt;td&gt;&lt;a href="https://topjohnwu.github.io/Magisk/" rel="noopener noreferrer"&gt;topjohnwu.github.io/Magisk&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ExtremeROM Nexus&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ExtremeXT/ExtremeROM" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  🔧 Firmware Tools
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Odin&lt;/td&gt;
&lt;td&gt;&lt;a href="https://en.wikipedia.org/wiki/Odin_(firmware_flashing_software)" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heimdall&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/benjamin-dobell/heimdall" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eros&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/Gabriel2392/ErosFlashTool" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;
  ❤️ Special Thanks (Click to expand)
  &lt;p&gt;This article was made possible with the help of several amazing tools and communities:&lt;/p&gt;
&lt;h3&gt;
  
  
  AI Assistants
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Gemini&lt;/strong&gt; (Google AI)&lt;/td&gt;
&lt;td&gt;Used in terminal for debugging&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gemini.google.com/" rel="noopener noreferrer"&gt;gemini.google.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Claude&lt;/strong&gt; (Anthropic)&lt;/td&gt;
&lt;td&gt;Solved complex technical challenges&lt;/td&gt;
&lt;td&gt;&lt;a href="https://claude.ai/" rel="noopener noreferrer"&gt;claude.ai&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MiniMax Agent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Formatted and corrected the article&lt;/td&gt;
&lt;td&gt;&lt;a href="https://agent.minimax.io/" rel="noopener noreferrer"&gt;agent.minimax.io&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  ROM &amp;amp; Root Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ExtremeROM Nexus&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Custom ROM by &lt;a href="https://github.com/ExtremeXT" rel="noopener noreferrer"&gt;ExtremeXT&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/ExtremeXT/ExtremeROM" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KernelSU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Root solution&lt;/td&gt;
&lt;td&gt;&lt;a href="https://kernelsu.org/" rel="noopener noreferrer"&gt;kernelsu.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Termux
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Termux&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The amazing terminal emulator that makes all of this possible&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://termux.dev/en/" rel="noopener noreferrer"&gt;termux.dev&lt;/a&gt; / &lt;a href="https://github.com/termux/termux-app" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;🔧 &lt;strong&gt;Developed entirely on Termux&lt;/strong&gt; — Samsung Galaxy S10e (SM-G970F) · Exynos 9820 · Android 15 · ExtremeXT · KernelSU&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;If this article helped you, give it a 💚 and share with others!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Questions? Feel free to ask in the comments!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>terminal</category>
      <category>compiling</category>
      <category>termux</category>
    </item>
  </channel>
</rss>
