Linux Deploy
============

Copyright (C) 2012-2018  Антон Скшидлевский, [GPLv3](http://opensource.org/licenses/gpl-3.0.html)

Это приложение с открытым исходным кодом, предназначенное для автоматизации процесса установки, конфигурирования и запуска GNU/Linux дистрибутивов на платформе Android внутри контейнера chroot. Приложение создает образ диска на карте памяти или ином носителе, монтирует его и устанавливает туда выбранный Linux-дистрибутив. Поддерживается установка в файл, прямо на раздел карты памяти, в директорию с файловой системой ext2/ext3/ext4 и в оперативную память. Приложения из Linux-дистрибутива запускаются в chroot окружении, работают параллельно с основной системой и сопоставимы с ней по скорости. Все вносимые изменения на устройстве обратимы, т.е. приложение и созданные им компоненты можно полностью удалить. Установка Linux-дистрибутива осуществляется по сети с официальных зеркал в интернете. Поскольку работа Linux Deploy базируется на системном вызове ядра Linux, то в роли "гостевых" систем могут выступать только дистрибутивы Linux. Через интерфейс программы можно управлять процессом установки Linux-дистрибутива, а после установки можно запускать и останавливать сервисы установленной системы (есть поддержка запуска собственных сценариев). Процесс установки отображается в виде текстовых отчетов в главном окне приложения. Во время установки программа сама настраивает рабочее окружение, которое включает в себя базовую систему, сервер SSH, сервер VNC и графическую среду на выбор. Также через интерфейс программы можно управлять параметрами серверов SSH и VNC. Установка Linux-дистрибутива занимает около 30 минут. Рекомендованный минимальный размер образа диска без графического интерфейса - 512 МБ, а с графическим интерфейсом - 1024 МБ (для LXDE). После начальной установки пароль для доступа по SSH и VNC пароль генерируется автоматически, который можно сменить через параметры приложения, либо стандартными средствами дистрибутива.

#### Характеристики:

* Поддерживаемые дистрибутивы: Debian, Ubuntu, Kali Linux, Arch Linux, Fedora, CentOS, Gentoo, Slackware, RootFS (tgz, tbz2, txz)
* Тип установки: файл образа, директория, раздел диска, оперативная память
* Поддерживаемые файловые системы: ext2, ext3, ext4
* Поддерживаемые архитектуры: ARM, ARM64, x86, x86_64, режим эмуляции (ARM ~ x86)
* Интерфейс управления: CLI, SSH, VNC, X11, фрейм-буфер
* Окружение рабочего стола: XTerm, LXDE, Xfce, MATE, другое (ручная настройка)
* Поддерживаемые языки: мультиязычный интерфейс

#### Установка

Вы можете установить это приложение из:
* GitHub: <https://github.com/meefik/linuxdeploy/releases>
* Google Play: <https://play.google.com/store/apps/details?id=ru.meefik.linuxdeploy>

#### Известные проблемы и их решение

> Не запускается обновление окружения или установка, в режиме отладки появляются ошибки "Permission denied", "Socket operation on non-socket" или другие.

Установить совместимый [BusyBox](https://github.com/meefik/busybox/releases) в /system/xbin, добавить в "Настройки -> PATH" ("Settings -> PATH variable") путь /system/xbin, выполнить обновление окружения "Настройки -> Обновить окружение" ("Settings -> Update ENV"). Перед обновлением окружения желательно перезагрузить устройство. Затем в параметрах контейнера выбрать "Параметры -> Файловая система -> Автоопределение" ("Properties -> File system -> Auto") и "Параметры -> Размер образа (МБ) -> 2000" ("Propetries -> Image size (MB) -> 2000"), т.к. busybox mke2fs не поддерживает параметр "-t" для указания типа файловой системы и не поддерживает образы больше 2 ГБ. После этого можно запускать новую установку "Меню - Установить" ("Menu -> Install").

> Не видит карту памяти, при установке в режиме отладки появляется ошибка "Read-only file system", создание образа на карте памяти заканчивается ошибкой.

Такое может случиться, если в системе используется разделение пространства имен утилитой SuperSU. В этом случае карта памяти смонтирована под каким-то пользователем, а при переходе в root смонтированные устройства уже не видны. В утилите SuperSU есть опция, которая может помочь решить данную проблему. Для этого нужно снять флаг "SuperSU -> Настройки -> Создать поименное разделение пространств".

> Ошибка при установке приложения через Google Play: "Неизвестный код ошибки во время установки приложения 24".

Нужно удалить с устройства остаточные файлы приложения, если оно уже было до этого установлено. Для этого нужно удалить каталог: /data/data/ru.meefik.linuxdeploy

#### Производительность

Скорость чтения/записи SD карты (10 класс) на Android (Samsung Galaxy S II) для файловых систем vfat, ext2, ext4:
* **vfat**: скорость чтения 14.1 МБ/с; скорость записи 12.0 МБ/с
* **ext2**: скорость чтения 14.9 МБ/с; скорость записи 3.9 МБ/с
* **ext4**: скорость чтения 14.9 МБ/с; скорость записи 16.6 МБ/с
* **ext2 (loop)**: скорость чтения 17.0 МБ/с; скорость записи 7.4 МБ/с
* **ext4 (loop)**: скорость чтения 17.2 МБ/с; скорость записи 8.8 МБ/с

Время установки и занимаемое место на диске (Debian wheezy/armhf на Samsung Galaxy S II):
* **Без графики** ~ 0:12 / 260 МБ
* **XTerm** ~ 0:14 / 290 МБ
* **LXDE** ~ 0:19 / 450 МБ
* **XFCE** ~ 0:20 / 495 МБ
* **GNOME** ~ 0:55 / 1.3 ГБ
* **KDE** ~ 1:20 / 1.3 ГБ

#### Исходный код

Linux Deploy App: <https://github.com/meefik/linuxdeploy>

Linux Deploy CLI: <https://github.com/meefik/linuxdeploy-cli>

#### Поддержать проект

Электронные деньги: <http://meefik.github.io/donate>

Google Play: <https://play.google.com/store/apps/details?id=ru.meefik.donate>
