ternux /ডকস/আর্কিটেকচার
জটিলতা যোগ করা সহজ, সরানো ব্যয়বহুল। যতটুকু সত্যি থাকবে, ঠিক ততটুকুই বানান।
— Sobuj Miah

আর্কিটেকচার

ternux-এর public technical model। Private Pro deployment implementation প্রকাশ না করে boundary ও failure mode বোঝানো হয়েছে।


Stack

┌─────────────────────────────────────────────────────┐
│ Android                                             │
│                                                     │
│  Termux:X11 app ◀──── X11 display ────┐             │
│                                       │             │
│  Termux host                          │             │
│  ├─ display ও audio service           │             │
│  ├─ PRoot supervisor                  │             │
│  └─ optional VirGL service            │             │
│               │                       │             │
│               └─ PRoot Debian ────────┘             │
│                  ├─ Xfce4 desktop                   │
│                  ├─ Debian application              │
│                  └─ Mesa / Zink / VirGL             │
│                                                     │
│  Adreno kernel GPU interface ◀── Turnip path        │
└─────────────────────────────────────────────────────┘

Android

Android kernel, hardware driver, app sandbox, power policy ও process limit নিয়ন্ত্রণ করে। ternux Android replace করে না, bootloader unlock করে না এবং root নেয় না। এতে deployment নিরাপদ থাকে, তবে Android যে hardware capability দেয় না, PRoot-ও তা দিতে পারে না।

Termux

Termux host-side Linux environment। এটি PRoot container ও container-এর বাইরে থাকা service coordinate করে। তাই Termux বন্ধ বা suspend হলে Termux:X11 visible থাকলেও desktop session শেষ হতে পারে।

PRoot Debian

PRoot privileged chroot ছাড়া Debian userland দেয়। এটি userspace-এ path ও কিছু system call rewrite করে। অধিকাংশ normal arm64 Debian app চলে, কিন্তু systemd, kernel module, privileged mount ও direct hardware control native Debian-এর সমান নয়।

Termux:X11

Termux:X11 Android display application। এটি X11 session render করে; নিজে Debian desktop নয়। Black বা empty view মানে app সুস্থ থেকেও host service, socket বা Xfce4 session অসুস্থ হতে পারে।


Graphics route

Supported Adreno-তে Zink + Turnip

OpenGL application
       │
       ▼
     Zink          OpenGL → Vulkan translation
       │
       ▼
 Vulkan loader
       │
       ▼
    Turnip         Adreno-র Mesa Vulkan driver
       │
       ▼
 Android / kernel GPU interface

এটি preferred route। প্রতিটি desktop app-এর Android-native build ছাড়াই OpenGL application hardware-backed Vulkan path পায়। Driver, loader ও device visibility—তিনটিকেই একমত হতে হয়; একটি layer missing হলেও desktop খুলতে পারে, কিন্তু CPU-তে render করবে।

অন্য GPU-তে VirGL

OpenGL application
       │
       ▼
 virpipe / VirGL
       │
       ▼
 host-side VirGL service
       │
       ▼
 Android graphics stack

Mali, Xclipse, PowerVR ও Turnip প্রযোজ্য নয় এমন hardware-এর compatibility route হলো VirGL। এটি ধীর হওয়াই স্বাভাবিক। VirGL বেছে নেওয়া failed Adreno setup নয়; non-Adreno hardware Turnip ব্যবহার করতে পারবে—এমন দাবি করাই ভুল।


Audio ও file boundary

Audio Debian application ও Termux-side audio service-এর মধ্যে loopback-only bridge দিয়ে PRoot boundary পার হয়। Loopback binding জরুরি: default হিসেবে mobile workstation-এর unauthenticated audio বা model service local network-এ খোলা থাকা উচিত নয়।

Debian home, Termux home ও Android shared storage আলাদা location। Android app-এর hand-off point হলো shared storage; source code ও irreplaceable project Git বা remote storage-এও রাখা উচিত।


Verified deployment phase

Private Pro implementation নয়টি acceptance boundary ঘিরে সাজানো:

  1. Device ও application preflight
  2. Host-side Termux foundation
  3. Debian/Xfce4 workspace
  4. GPU-route selection
  5. Display, audio, locale ও storage integration
  6. Reliable launch, stop ও recovery control
  7. Android background-process safeguard
  8. Renderer ও service acceptance test
  9. Report, workload selection, baseline ও backup handover

কী verify করা হচ্ছে বোঝাতে sequence-টি public। Exact command, installer module, private endpoint, rollback code ও version-bound operator runbook হলো Pro release material।


State, resume ও recovery

Mobile network বিচ্ছিন্ন হয়, Android process reclaim করে এবং multi-gigabyte download থেমে যায়। Professional deployment interruption-কে expected state হিসেবে দেখে।


Silent failure mode

Failure Desktop কেন খুলতে পারে Acceptance evidence
Vulkan loader/driver path অসম্পূর্ণ Mesa CPU rendering-এ fallback করতে পারে Renderer-এ llvmpipe থাকা চলবে না
Update graphics component বদলেছে Stock Mesa-ও desktop render করে Known-good baseline-এর সঙ্গে renderer ও toolkit report তুলনা
ভুল backend selected Compatible কিন্তু ধীর route কাজ করতে পারে GPU evidence ও selected route এক হতে হবে
Host-side VirGL service নেই Software fallback missing service লুকাতে পারে VirGL service ও renderer check দুটোই pass
Android process policy হস্তক্ষেপ Session প্রথমে চলে, পরে process হারায় যথেষ্ট দীর্ঘ stability check ও Android policy report

তাই visible Xfce4 desktop success-এর সংজ্ঞা নয়। Renderer string, service health ও clean second launch বেশি শক্ত evidence।


Workload-এর প্রভাব


Public ও private boundary

Public documentation compatibility, architecture, daily operation, success-এর evidence ও বাস্তব limitation বোঝাবে। Licence secret, live private endpoint, proprietary installer module বা সম্পূর্ণ version-bound deployment recipe এখানে থাকবে না।

Public repository-তে obscure path, noindex tag বা Jekyll exclude source-কে private করে না। Private Pro documentation access-controlled repository ও protected delivery channel-এ রাখতে হবে।


ternux — Copyright (c) 2026 Sobuj Miah (@soobujmiah) · MIT

GitHub-এ এই পাতাটি সম্পাদনা করুন → ↑ উপরে ফিরুন