### Termux: как создать Linux‑окружение на Android без root
Многие пользователи Android хотели бы писать и запускать полноценные Linux‑программы прямо на смартфоне без root-прав — и Termux делает это возможным.
#### Собственное изолированное пространство
При установке Termux создаёт в файловой системе Android **собственную изолированную область** (песочницу, *sandbox*), которая полностью принадлежит приложению. Технически она располагается по пути:
```
/data/data/com.termux/files/
```
Внутри этой директории Termux организует структуру, напоминающую стандартную файловую систему Linux:
* `/usr` — для установленных пакетов и утилит;
* `/home` (или `$HOME`) — домашняя директория пользователя;
* `/tmp` — временные файлы;
* `/bin`, `/sbin`, `/lib` и т. д. — стандартные каталоги Linux.
Эта песочница — **полностью независимая зона**. Она:
* недоступна для других приложений без специальных разрешений;
* управляется только самим Termux;
* имеет собственные права доступа, настроенные так, чтобы внутри можно было создавать и запускать исполняемые файлы.
#### Компиляция и запуск программ
В пределах этой песочницы Termux позволяет:
1. **Устанавливать инструменты разработки** — например, компилятор `clang` или интерпретатор `python`, используя встроенный пакетный менеджер `pkg`:
```bash
pkg install clang python
```
2. **Компилировать код** прямо на устройстве. Допустим, у вас есть файл `hello.c`. Вы можете скомпилировать его в исполняемый ELF‑файл командой:
```bash
clang hello.c -o hello
```
В результате получится бинарный файл `hello` в формате ELF.
3. **Давать файлу права на исполнение** с помощью стандартной команды `chmod`:
```bash
chmod +x hello
```
4. **Запускать получившуюся программу** напрямую:
```bash
./hello
```
#### Как это работает на уровне системы
Ключевой момент: Termux **не эмулирует ядро Linux** и не запускает виртуальную машину. Вместо этого он использует следующие механизмы:
* **Ядро Android** — по сути, это ядро Linux с рядом дополнений. Оно поддерживает формат ELF и может выполнять те же системные вызовы, что и «обычный» Linux.
* **Совместимая архитектура процессора**. Если программа скомпилирована под ARM, ARM64, x86 или x86_64 (в зависимости от процессора вашего устройства), ядро Android может выполнить её код напрямую — так же, как если бы это была стандартная Android‑программа (APK).
* **Динамический линкер и библиотеки**. Termux поставляет собственные версии библиотек (часто адаптированные для Android, например, Bionic вместо glibc) и настраивает пути поиска (`LD_LIBRARY_PATH`), чтобы динамический линкер мог найти всё необходимое для запуска ELF‑файла.
* **Права доступа внутри песочницы**. Android разрешает приложению выполнять код в своих собственных директориях. Поскольку Termux владеет всей своей песочницей, он может устанавливать флаг исполняемости (`+x`) и запускать бинарные файлы без каких‑либо дополнительных привилегий.
---
#### Почему не нужен root
Для описанных действий **права суперпользователя (root) не требуются**, потому что:
* все операции происходят в пределах директории приложения (`/data/data/com.termux/`);
* Termux не пытается модифицировать системные разделы Android (например, `/system`);
* запуск ELF‑файлов выполняется штатными механизмами ядра, доступными любому приложению.
Root‑доступ может понадобиться лишь в отдельных случаях — например, если вы захотите:
* запустить сервис на привилегированном порту (< 1024);
* получить доступ к системным логам;
* смонтировать дополнительные файловые системы;
* изменить системные настройки.
Но для базовой работы с компиляцией и запуском программ он **не нужен**.
---
#### Краткий итог
Termux создаёт на Android **полноценное Linux‑подобное окружение внутри собственной песочницы**. Благодаря совместимости ядра Android с форматом ELF и правильной настройке путей к библиотекам, приложение позволяет:
* устанавливать инструменты разработки;
* компилировать программы прямо на устройстве;
* запускать получившиеся исполняемые файлы — напрямую на ядре Android, без виртуализации и без root‑прав.
Это делает Termux мощным инструментом для разработчиков, системных администраторов и энтузиастов, желающих использовать Linux‑инструменты на мобильном устройстве.
---
### Другие песочницы
Приложения PyDroid (для Python), CxxDroid (для C/C++) и LuaDroid (для Lua) и другие, им подобные, реализуют схожую концепцию изолированного окружения на Android — но с фокусом на конкретный язык программирования.
#### Структура песочницы
Каждое приложение создаёт **собственную изолированную область** в файловой системе Android. Технически она располагается в директории данных приложения:
* PyDroid: `/data/data/ru.iiec.pydroid3/files/`
* CxxDroid: `/data/data/...cxxdroid.../files/` (точный путь зависит от версии)
* LuaDroid: `/data/data/...luadroid.../files/`
Внутри этой песочницы формируется структура, напоминающая рабочее окружение для соответствующего языка:
* каталоги для установленных библиотек и пакетов;
* директория для пользовательских скриптов и проектов;
* временные файлы;
* конфигурационные файлы среды.
**Ключевые свойства песочницы:**
* полная изоляция от других приложений (без специальных разрешений доступ невозможен);
* управление только через родительское приложение;
* собственные права доступа, позволяющие запускать код внутри области.
#### Доступ через Terminal
Во всех трёх приложениях есть пункт меню **«Terminal»** — это встроенный эмулятор терминала с ограниченной командной оболочкой. Чтобы его открыть:
1. Запустите приложение (PyDroid, CxxDroid или LuaDroid).
2. Откройте главное меню (иконка с тремя линиями в углу экрана).
3. Выберите пункт **Terminal**.
Что доступно в терминале:
* навигация по файловой системе песочницы (`cd`, `ls`);
* создание и редактирование файлов (`touch`, `nano` и т. д.);
* запуск интерпретаторов напрямую (`python`, `clang`, `lua`);
* установка пакетов через менеджеры зависимостей (`pip` в PyDroid, менеджер пакетов CxxDroid);
* выполнение shell‑подобных команд, поддерживаемых средой.
#### Особенности для каждого приложения
**PyDroid 3 (Python)**
* терминал даёт доступ к интерпретатору Python;
* можно устанавливать пакеты через `pip install имя_пакета`;
* поддерживаются библиотеки для data science (numpy, matplotlib и др.);
* есть режим REPL для интерактивной работы;
* интеграция с графическими библиотеками (Tkinter, Kivy).
Пример работы в терминале PyDroid:
```bash
cd ~/my_scripts
python my_script.py
pip install requests
python -c "import numpy; print(numpy.zeros(3))"
```
**CxxDroid (C/C++)**
* терминал запускает оболочку с доступом к компилятору Clang;
* поддерживает стандартные библиотеки C/C++ и популярные пакеты (Boost, SQLite);
* в премиум‑версии доступны графические библиотеки (SDL2, SFML);
* есть режим интерпретатора CERN Cling для интерактивной разработки;
* система кэширования ускоряет сборку проектов.
Пример работы в терминале CxxDroid:
```bash
cd ~/projects
clang++ -o hello hello.cpp
./hello
```
**LuaDroid (Lua)**
* терминал предоставляет доступ к интерпретатору Lua;
* позволяет запускать скрипты напрямую: `lua my_script.lua`;
* поддерживает установку модулей через менеджер пакетов Lua;
* даёт возможность тестировать код в интерактивном режиме (`lua` без аргументов);
* интегрирован с базовыми библиотеками Lua.
Пример работы в терминале LuaDroid:
```bash
cd ~/lua_scripts
lua -e "print('Hello from LuaDroid')"
lua my_app.lua
```
#### Как это работает на уровне системы
1. **Запуск терминала**
При выборе пункта «Terminal» приложение запускает встроенный эмулятор командной строки. Он:
* подключается к изолированной файловой системе приложения;
* инициализирует переменные окружения (пути к библиотекам, интерпретаторам);
* запускает shell‑подобную оболочку (часто упрощённую, не полноценную bash).
2. **Выполнение кода**
* интерпретатор (Python, Clang, Lua) запускается в песочнице;
* код выполняется на ядре Android напрямую — без виртуализации;
* системные вызовы обрабатываются ядром Linux (Android);
* библиотеки загружаются из локальных каталогов приложения.
3. **Права доступа**
* приложение имеет право исполнять код в своей директории (`/data/data/...`);
* песочница не требует root‑прав — все операции разрешены в рамках sandbox;
* доступ к системным разделам Android заблокирован.
---
#### Сравнение с Termux
| Параметр | Termux | PyDroid/CxxDroid/LuaDroid |
|--------|--------|-------------------------------|
| Фокус | Общее Linux‑окружение | Специализированная среда для одного языка |
| Терминал | Полноценная bash‑оболочка | Упрощённый shell с доступом к языковым инструментам |
| Установка пакетов | `pkg install` (широкий выбор) | Менеджеры пакетов конкретного языка (`pip`, встроенный менеджер CxxDroid, LuaRocks) |
| Компиляция | Поддержка множества языков (gcc, clang и др.) | Оптимизация под конкретный язык (Python, C/C++, Lua) |
| Графика | Требуется настройка (VNC, X11) | Частичная интеграция с GUI‑библиотеками (в зависимости от приложения) |
| Сложность | Выше (нужны знания Linux) | Ниже (упрощённый интерфейс, фокус на коде) |
---
#### Краткий итог
PyDroid, CxxDroid и LuaDroid создают **изолированные песочницы** с доступом через встроенный терминал. Это позволяет:
* писать и запускать код прямо на смартфоне;
* устанавливать библиотеки и пакеты через терминал;
* работать в привычной командной строке без root‑прав;
* использовать инструменты, оптимизированные под конкретный язык.
В отличие от Termux, эти приложения делают акцент на **простоте и специализации** — они подходят для изучения и разработки на одном языке, тогда как Termux даёт универсальную Linux‑среду.
| Помогли сайту Праздники |
