#1 Linux on Android - Подготовка и установка linux (ROOT)

Предисловие

По некоторым личным причинам многие люди ограничены во времени, проводимом за компьютером и не могут уделять достаточно времени для практики в программировании. 
Если Вы так же, как и я, хотите погрузиться программирование и изучение linux/python/чего-то еще, но не имеете достаточно времени или возможности, то вы вероятно в нужном месте)
Современный человек без мобильного телефона уже редкость. Мощности телефонов сопоставимы уже с полноценными компьютерами и почему бы не использовать эту "силу" в интересном деле?... 
Я расскажу как установить linux на смартфон, настроить среду разработки(IDE), как запускать и управлять всем этим делом. 
Если вы заинтересовались, то я начинаю...

 

Установка необходимого ПО

Для начала скажу, что почти все описанное ПО имеется в стандартном Google Play маркете, но согласно политике Гугла, некоторый функционал обрезают как "опасный". Так ли это, я не знаю точно, натыкался на такую информацию в сети.

Я буду использовать открытое програмное обеспечение. Мой способ подойдет и для стандартных телефонов с Google сервисами и Хуавеями без гугла и даже любителям кастомных "чистых" андроидов с root правами (это я).

Первое что мы ставим это маркет для открытого(и не очень) ПО. F-droid - это аналог GPlay и других маркетов приложений.
Идем по ссылке на офф. сайт, качаем и устанавливаем последнюю доступную версию.

После установки, открываем f-droid и дожидаемся обновления репозиториев.
Список доступного ПО порядочный, но нужного нам, нет. Чтоб оно появилось, нужно добавить дополнительный репозиторий, откуда f-droid сможет ставить программы.
Для этого идем сюда и долгим "тапом" на строке с url в шапке копируем ссылку.

Далее идем в f-droid, идем в <Настройки> -> <Репозитории>, жмем "+" вверху и откроется окно с данными добавляемого репозитория.

Если Ваш андроид не очень "борящийся за конфеденциальность" и приложениям доступно чтение буфера обмена, то в открышееся окно f-droid сам поддтянет данные скопированной ранее ссылки.
В противном случае нужно будет заполнить поля вручную данными из ссылки.

Жмем "Добавить" и следим за обновлением репозиториев в шторке.
Теперь нам будет доступен весь список необходимого ПО.

Первым делом через f-droid ставим Termux.
Termux - это расширенный эмулятор терминала Linux в котором уже имеется большое количество програми из коробки и постоянно пополняющийся репозиторий консольных(и не только) утилит.
В нем так же имеется python и в принципе можно прогать напрямую в Termux, но есть ньюансы... Кому интересно, можете поискать информацию об этом в интернете.
Мы же будем использовать в основном в качестве терминала, осуществляя подключение по ssh к целевой системе.

Второй инструмент, который нам понадобиться, это LinuxDeploy. Это небольшая графическая утилита, помогающая установить linux систему в окружение chrootLINUXDEPLOY НЕОБХОДИМЫ  ROOT  ПРАВА НА ТЕЛЕФОНЕ ДЛЯ РАБОТЫ.
Если Ваш телефон имеет рут права, смело продолжайте.
Однако если рута нет, не стоит отчаиваться, есть варианты и без него. У Termux есть своя утилита Proot, устанавливающая линукс внутри своего окружения. Но мои эксперементы показали некую заторможенность такого решения, ввиду дополнительной програмной прослойки. Кто желает использовать этот способ, обратитесь к моей статье или офф. документации на сайте Termux. 

Установка Linux

Мы же продолжим и откроем свежеустановленный LinuxDeploy

Первым делом идем в настройки устанавливаемой системы(значек в нижнем правом углу) и выставляем необходимые настройки:

  • Дистрибутив - Версия устанавливаемой ОС. Я пробовал разные из предложенных и остановиля на Arch, так как версии доступного ПО в нем наиболее свежие.
  • Архитектура - тут у каждой версии ОС разные виды архитектур. При выборе Arch выбирайте aarch64. Подойдет для большенства современных телефонов в 90% случаев. 
  • Тип и место установки - выбираем место установки по своему желанию(файл, папка, раздел, оперативная память подойдет для тестов конфигурации и системы) Учтите если выбираете установку в файл, то нужно указать размер файла, желательно побольше(от 4 Гб и выше с запасом). Если установка в папку или раздел, нужно на карте памяти создать раздел ext4 и испльзовать его. Установить в папку во внутренней памяти телефона не получиться скорее всего. 
  • Имя и пароль пользователя - создаст пользователя с указанными данными. Под ним мы будем входить в систему.
  • Привилегированные пользователи - Если вы изменили имя "android" стандартного пользователя на свое, то тут так же нужно это изменить. Данные строки добавят вашего пользователя в системные группы.
  • Локализация - изменит системную локаль на выбранную. Если поставите ru_RU.UTF-8, то все программы, где доступен перевод будут общаться с вами на русском языке
  • Разрешаем запуск SSH сервера, чтоб подключаться к linux извне.

Для начала установки достаточно. Сохраняем конфиг.

Проверяем, что подключены к wifi или скорость мобильного интернета достаточная для скачивания без прерываний.

ВНИМАНИЕ!
Политики управления питанием Android, при выключении питания или включенном режиме энергосбережения может приостонавливать сторонние приложения или ограничивать им доступ к сети, для экономии заряда. По этому при выключении экрана или включении энергосбережения в процессе установки может привести к сбою процесса установки! Чтобы этого избежать в LinuxDeploy есть специальные настройки предотвращающие это. В верхнем левом углу жмем три полоски и уходим в настройки. Проверяем, чтоб функция "Не отключать экран" была активирована. Теперь, пока приложение открыто, оно не даст телефону выключить экран и уйти в спячку.
Можете приступать к установке  linux на ваш телефон.

Установка
 

Идем в пункт "Установка", через три точки в верхнем правом углу, жмем "Ок для начало установки.

По окончании установки, запустите свежеустановленную систему кнопочкой "Старт", внизу экрана. Приложение примонтирует необходимые папки в chroot окружение, запустит ssh сервер о чем сообщит в логе работы на главном экране.
Замечено что LinuxDeploy не идеален и иногда бывают сбои (у меня они есть) в инициализации ssh со статусом "Fail". Не знаю с чем это связано(только догадки), но решаеться простой остановкой и перезапуском окружения.

Все, у нас установлена и запущена полноценная ОС Linux. Можно закрывать LinuxDeploy, запущенная система будет работать в фоне до выключения или перезагрузки телефона.

Вход

Тeперь откроем Termux и выполним команды обновления

pkg update && pkg upgrade

 Нажимаем "y" при вопросе ставить ли обновления и ожидаем завершения выполнения. В процессе будут задаваться вопросы, везде жмем <Enter>, для установки программ с конфигами по умолчанию.

Теперь можем залогиниться введя

ssh user@localhost

где <user> меням на тот, что указали в LinuxDeploy.

Терминал запросит подтверждение "отпечатка", пишем "yes".

Готово, Вы в системе

PS. Были случаи, что люди не могли залогиниться в Arch систему, из-за неработающего ssh сервера после установки. Кто сталкнется(что мало вероятно) можете попробовать эту статью.

To be continued...