Linux на Android? Легко!

Устанавливаем Linux на Android

Недавно я столкнулся с тем, что возможностей мобильных редакторов не хватает для написания конспектов с математическими формулами и удобного редактирования документов LibreOffice, а носить ноутбук с собой довольно сложно, так как он весит больше 2кг. Было решено найти способ установить Linux на Android, чтобы получить возможность всегда носить эту систему с собой, дополнив её различными продвинутыми редакторами.

Что нам понадобится

  1. Linux Deploy от meefik — программа для установки и управления дистрибутивами Linux на Android.
  2. XServer XSDL — графическая подсистема для устанавливаемого дистрибутива.
  3. Root-доступ к системе.
  4. Безлимитный доступ к интернету или хотя-бы пара гигабайт трафика.

Устанавливаем Linux на Android

Главное преимущество программы Linux Deploy в том, что нам понадобится только задать параметры установки, а все остальное установщик сделает сам.

Сразу после запуска Linux Deploy мы видим меню управления профилями. Каждый профиль в данном случае — это отдельная система. Создадим новый профиль нажатием кнопки +, задав название профиля в появившемся диалоговом окне. Я выбрал название Ubuntu_Xfce для однозначной идентификации профиля.

Выбор профиля

Выбрав созданный профиль, вернемся на главный экран нажатием кнопки "назад" (не совсем очевидный момент, но и не напрягает).

Главное окно

В горизонтальной ориентации экрана панель управления находится сверху (привык пользоваться лопатофоном именно так). В панели три нужных нам кнопки: Старт (запускает систему), Стоп (собственно, останавливает систему) и кнопка настройки системы.

Для начала, нам нужно задать параметры установки. Для этого нажмем соответствующую кнопку (третью).

Меню настройки системы

В открывшемся окне видим список кнопок и параметров. Перечислю те, которые нам понадобятся:

  1. Действие

    1. Установить — кнопка, запускающая установку. Нам понадобится только после того, как мы все настроим.
    2. Переконфигурировать — кнопка, перенастраивающая систему. Полезна, когда нужно что-то поменять в настройках установщика уже после установки системы.
  2. Развертывание
    1. Дистрибутив. На выбор доступно несколько дистрибутивов, однако лучше всего у меня заработала Ubuntu (пробовал только Debian-based).
    2. Версия дистрибутива. Для Ubuntu доступны основные релизы. Я ставил Trusty (14.04), потому что он LTS.
    3. Архитектура. Доступно 4 архитектуры: armel, armhf, arm64 и i386. По умолчанию уже должна быть выбрана архитектура, поддерживаемая процессором. Если выбрать i386, то система будет запускаться в qemu, однако это поддерживается не каждым ядром Android.
    4. Тип установки. Систему можно установить на виртуальный диск (в файл), отдельный раздел на SD-карте или вообще в какую-нибудь директорию. Самым простым и стабильным способом является установка в Файл, который можно спокойно разместить на SD-карте.
    5. Путь установки. В случае с установкой в файл определяет путь к образу диска. По умолчанию образ разполагается в корне SD-карты и называется linux.img, однако можно выбрать и другой путь.
    6. Размер образа (МБ). Определяет размер образа при установке в файл. Основной минус установки  файл в том, что этот файл будет иметь фиксированный размер, не смотря на то, сколько занимает сама система. По идее, можно оставить значение по умолчанию, однако мне было недостаточно даже 4 ГБ для установки одного из редакторов, поэтому я выбрал 8 ГБ. Но тут есть один момент: часто SD-карты имеют файловую систему FAT, из-за чего на них нельзя создать файлы больше 4 ГБ. В этом случае я пользовался внутренней памятью телефона (сохранял в раздел /data), однако не у всех телефонов достаточно внутренней памяти для этого.
    7. Локализация. Доступно две локализации (en_US и ru_RU).
    8. Окружение рабочего стола. Доступно 4 полноценных графических оболочки: LXDE (легко и некрасиво), Xfce (чуть тяжелее и красивее), GNOME (не установился почему-то) и KDE (тяжело и красиво). Я остановился на Xfce, потому что использую его почти везде.
    9. Выбрать компоненты для установки. Так как у нас установлен отдельный X-сервер, нам понадобятся окружение рабочего стола и SSH сервер.
  3. Запуск
    1. SSH — запускать SSH сервер при старте системы
    2. GUI — запуск графической среды
    3. Графическая подсистема. Доступно три различных графических подсистемы: VNC (нужен отдельный VNC клиент, очень неудобный для меня способ, так как некорректно работает с клавиатурой), X Server (запуск графической оболочки прямо на X Server'е, хорошо работает с клавиатурой и мышью), Framebuffer (идеальный вариант, работает напрямую с оборудованием и видеокартой, однако у меня так и не заработал из-за ядра Android). В качестве компромисса между этими вариантами был выбран X Server, который является удобным и универсальным.
    4. Монтирование — подключение директорий из Android прямо к системе.
    5. Точки монтирования. Тут можно указать список директорий, которые будут подключены к системе. Найти их можно будет в директории /mnt. По умолчанию в списке уже присутствует SD-карта.

После того, как все параметры указаны, можно начинать установку системы нажатием кнопки "Установить". В ходе установки будут загружены основные компоненты системы, а также графическая оболочка системы. Это может быть затратно при подключении к мобильному интернету, поэтому желательно производить установку только через Wi-Fi.

Запускаем Linux

После завершения установки можно приступать к запуску системы. Сначала нужно запустить XServer XSDL, чтобы система могла вывести графику на экран.

Splash-скрин XServer XSDLСразу после запуска XServer XSDL в течение нескольких секунд можно открыть меню настроек нажатием кнопки сверху. Однако это меню нам не понадобится, так как в нем не настраивается разрешение экрана.

Разрешение XServer XSDLДалее XServer переключается на новый экран, нажав на который мы можем установить разрешение экрана и размер шрифта.

Выбор разрешения экрана XServer XSDLМой телефон имеет разрешение экрана 1920x1080 при диагонали 5.5", однако с таким разрешением экрана все элементы графического интерфейса становятся слишком маленькими. В итоге я остановился на разрешении 1280x720 и размере шрифта X0.7.

После этого XServer сообщает о готовности принимать соединения, переключившись на следующий экран:

XServer XSDL готов принимать соединения

Теперь нужно переключиться на Linux Deploy, не закрывая XServer, и нажать кнопку "Старт". После появления в выводе консоли сообщения "<<< end: start", можно переключиться обратно на XServer.

Первый запуск Xfce

Выберем "Использовать настройки по умолчанию", чтобы создать стандартные панели Xfce.

Графическая оболочка Xfce

Теперь система готова к настройке.

Некоторые настройки системы

Установка эмулятора терминала и дополнительных программ Xfce

Как и во всех Debian-based дистрибутивах, в установленной системе присутствует менеждер пакетов APT, то есть все программы устанавливаются точно так же, как и на полноценном компьютере.

Однако в нашей системе еще нет эмулятора терминала и вообще система пустая. Поэтому нам нужно подключиться к системе по SSH и установить хотя-бы эмулятор терминала. Для этого нам подойдет любой SSH-клиент, а данные для входа будут такими:

  1. Логин: android
  2. Пароль: changeme
  3. Адрес: 127.0.0.1 (если подключение происходит прямо с телефона)

Получив доступ к телефону по SSH, мы можем стать root'ом (пароль не требуется):

sudo -i

А теперь установим стандартные программы Xfce, среди которых есть терминал:

apt-get install xfce4-goodies

После этого SSH нам уже не понадобится, так как можно будет воспользоваться эмулятором терминала.

Добавление русской раскладки и переключение раскладки по Alt+Shift

Добавить раскладку клавиатуры и настроить способ их переключения можно в настройках Xfce, однако данный способ не всегда работает стабильно. В моем случае добавление раскладки моментально вызывало падение XServer'а, а после этого система уже не запускалась.

Гораздо более стабильным и легким способом является настройка через setxkbmap:

setxkbmap -layout us,ru -option grp:alt_shift_toggle

После выполнения этой команды в эмуляторе терминала, должно заработать переключение раскладки по Alt+Shift. Это можно проверить, подключив беспроводную клавиатуру или обычную через USB-OTG.

Чтобы эта команда выполнялась при каждом запуске системы, добавим её в автозагрузку в "Меню приложений" > "Настройки" > "Сеансы и запуск"> "Автозапуск приложений" > "Add". В открывшемся окне нужно заполнить два поля:

  1. Имя — любое, например "setxkbmap"
  2. Команда: setxkbmap -layout us,ru -option grp:alt_shift_toggle

Правильная остановка Linux

Для того, чтобы случайно не повредить установленную систему, нужно завершать её работу в следующем порядке:

  1. Закрываем все программы для предотвращения потери несохраненных данных.
  2. Завершаем сеанс Xfce через "Меню приложений" > "Выйти".
  3. Закрываем XServer XSDL.
  4. Нажимаем кнопку "Стоп" в Linux Deploy
  5. Закрываем Linux Deploy через "Меню" > "Выход"

Вот видео запуска и остановки установленной системы:

Решение проблем

  1. Ошибка "invoke-rc.d: unknown initscript, /etc/init.d/systemd-logind not found." при установке пакета.
    Решение: Скрипт установщика ищет файл /etc/init.d/systemd-logind, однако такого файла не существует. Просто создадим его следующей командой:

    sudo touch /etc/init.d/systemd-logind

    После этого нужно перезапустить установку пакета, чтобы все пакеты настроились правильно.

Заключение

Установив Linux на Android-смартфон, я получил карманный компьютер, который работает от аккумулятора гораздо дольше, чем любой ноутбук, и, при этом, по возможностям практически не уступает полноценному компьютеру.

Некоторым ограничителем возможностей системы является то, что архитектура процессора в телефоне все-таки не стандартная, что приводит к некоторым сложностям с малораспространенными программами (особенно проприетарными). Однако в репозитории Ubuntu практически все пакеты имеют версию для архитектуры arm, так что это не является большой проблемой.

Если у вас возникнут проблемы, пишите в комментарии, попробую помочь.

Спасибо за внимание :3