Приложение для автоматизации процессов установки и запуска GNU/Linux-окружения на устройствах под управлением Android

УДК 004.453

приложение для автоматизации ПРОЦЕССОВ установки и запуска gnu/linux-окружения на устройствах под управлением android

А. А. Скшидлевский,

канд. техн. наук

Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики

Проводится обзор основных функций разработанного программного обеспечения для автоматизации установки GNU/Linux-дистрибутивов и запуска Linux-приложений на устройствах под управлением Android. Даны примеры его возможного использования, сравнение с аналогами. Описываются принципы работы программного обеспечения. Приведены оценка производительности и статистика по апробации.

Ключевые слова — мобильные устройства, операционные системы, программное обеспечение, Android, Linux.

Введение

За последние годы платформа Android получила немалое распространение: это мобильные телефоны, планшеты, электронные книги, медиаплееры, игровые приставки, телевизоры, встраиваемые системы. Платформа Android имеет открытый исходный код и построена на ядре Linux, однако не поддерживает запуск приложений других операционных систем. Тем не менее, в ярде Linux заложены механизмы, позволяющие при определенных условиях запускать GNU/Linux-приложения на устройствах под управлением Android [1]. Идея запуска Linux-приложений появилась из-за желания иметь привычный инструментарий для системного администрирования прямо на мобильном устройстве, а существующие аналоги не удовлетворяли всем требованиям. Так появилось приложение Linux Deploy — для простой установки и запуска GNU/Linux-окружения на устройствах под управлением Android. Можно выделить основные задачи, которые были поставлены перед разработкой приложения:

— разработать простой, но эффективный интерфейс для установки, настройки и дальнейшего использования GNU/Linux-окружения;

— обеспечить параллельную работу Linux- и Android-приложений;

— реализовать весь доступный функционал Linux-приложений мобильных устройств (как консольных, так и графических);

— обеспечить поддержку наиболее распространенных Linux-дистрибутивов;

— реализовать различные варианты установки окружения и обеспечить поддержку как старых, так и новых ARM-процессоров.

Представленное приложение достаточно специфично, однако можно выделить основные направления его возможного применения: запуск специализированных приложений на встраиваемых системах, использование в проектах «Сделай сам», доступ к инструментарию GNU/Linux с мобильных устройств для технических специалистов, обучение или развлечение (например, была запущена игра «Герои 3»).

В настоящее время наличествуют схожие приложения зарубежных разработчиков, но все они имеют ряд ограничений, достаточно сложны в применении, имеют закрытый исходный код, распространяются платно и не поддерживают русский язык. В табл. 1 приведено сравнение с аналогами по основным характеристикам.

Приложение Complete Linux Installer активно развивается, однако все еще не соответствует некоторым необходимым критериям. Принципиальное отличие этого приложения заключается в том, что образ каждого дистрибутива подготавливается вручную и не всегда своевременно об-

Таблица 1. Сравнение с аналогами

Характеристика Linux Deploy Linux Installer Complete Linux Installer

Поддерживаемые дистрибутивы Linux Debian, Ubuntu, Arch Linux, Fedora, openSUSE, Kali Linux, Gentoo

Установка по сети из официального репозитория Да Да Нет

Поддержка ARMv7 Да Нет Нет

Тип установки Файл,раздел, директория Файл Файл

Интерфейс управления Консоль, SSH, VNC, X Window System Консоль, SSH, VNC Консоль, SSH, VNC

Поддерживаемые языки Русский,английский Английский Английский

Тип лицензии Открытая, GPLv3 Коммерческая Коммерческая

новляется. В то же время Linux Deploy позволяет устанавливать дистрибутив через Интернет из официального репозитория, что дает возможность всегда получать последние версии программного обеспечения.

Принцип работы

Принцип работы приложения заключается в использовании механизма ядра Linux, называемого chroot. Данный механизм позволяет запускать приложения в изолированном пространстве, корнем которого на уровне файловой системы будет являться выбранный каталог. В корне файловой системы Android располагаются файлы самой платформы и каталоги, в которые ядро Linux проецирует свои компоненты: каталоги /dev, /proc, /sys и каталог монтирования карт па-

мяти /mnt. Приложение создает собственный каталог /data/local/linux, в котором размещает основные команды, сценарии установки Linux и файлы конфигурации (каталоги /bin, /deploy, /etc). На рис. 1 показана файловая структура, создаваемая приложением в операционной системе Android. Далее в каталоге /mnt создается образ новой GNU/Linux-системы, устанавливаются необходимые пакеты, а также монтируются системные корневые каталоги /dev, /proc, /sys и /mnt. После этого осуществляется вызов команды chroot, с помощью которой запускаются необходимые Linux-приложения внутри подготовленного окружения. Доступ к управлению такими приложениями можно получить из локальной консоли Android либо по сети с использованием протоколов SSH и VNC. Также поддерживается возможность запуска сторонних приложений че-

Рис. 1. Файловая структура Linux Deploy в операционной системе Android

рез сетевой протокол X Window System либо через X-сервер, который выводит изображение напрямую через фрейм-буфер устройства, что позволяет отображать графику без промежуточных слоев типа VNC.

Для поддержки каждого дистрибутива разработаны специальные инсталлятор и конфигуратор. В своей работе они используют утилиту BusyBox [2]. Инсталлятор занимается загрузкой, распаковкой и установкой пакетов из официального репозитория выбранного дистрибутива. Конфигуратор позволяет автоматически выполнить все необходимые настройки выбранного дистрибутива перед его запуском. Для каждой установки GNU/Linux-дистрибутива создается отдельный профиль, благодаря чему можно в последующем переключаться между установленными дистрибутивами.

Основные функции и возможности приложения

Можно выделить основные функции приложения:

— автоматическая установка GNU/Linux-окружения выбранного дистрибутива одной кнопкой (на данный момент поддерживается 7 дистрибутивов);

— автоматическая настройка окружения и перенастройка сторонних образов GNU/Linux (можно использовать образы дистрибутивов, которых нет в списке поддерживаемых, а также использовать rootfs-архивы);

— запуск Linux-приложений внутри выбранного окружения;

— предоставление доступа к приложениям и графической среде GNU/Linux;

— остановка и полное удаление приложения и GNU/Linux-системы с Android-устройства (не производит необратимых изменений на устройстве).

Также следует отметить основные возможности приложения:

— одновременная работа Android и Linux-приложений;

— Linux-приложения работают с максимально возможной скоростью, поскольку приложение не является эмулятором;

— доступ к ресурсам Android из Linux-приложений;

— поддержка дистрибутивов Debian, Ubuntu, Arch Linux, Fedora, openSUSE, Kali Linux, Gentoo;

— поддержка сборок GNU/Linux с оптимизацией под разные версии ARM процессоров, включая ARMv7;

— поддержка окружений рабочего стола LXDE, Xfce, GNOME, KDE;

— поддержка установки в файл (образ), на раздел карты памяти, в директорию;

— поддержка файловых систем ext2, ext3, ext4;

— поддержка управления через локальную консоль, SSH, VNC, X Window System (включая фрейм-буфер);

— профилирование — хранение и управление настройками нескольких дистрибутивов;

— поддержка русского и английского языков интерфейса и локализации дистрибутивов.

Интерфейс приложения Linux Deploy показан на рис. 2. Рассмотрим настройки приложения [3].

Профили. Параметры каждой установки хранятся в отдельном именованном профиле. Количество профилей не ограничено. Можно свободно переключаться между профилями, работая поочередно с различными дистрибутивами. Профили можно экспортировать и импортировать в виде xml-файлов.

Параметры установки дистрибутива. Каждый профиль содержит в себе настройки одного дистрибутива. Сюда входит название дистрибутива, версия и архитектура (версии ARM). Если посчитать все поддерживаемые дистрибутивы, их версии и архитектуры, то на данный момент Linux Deploy поддерживает 38 различных вариантов установки GNU/Linux. Далее указывается адрес репозитория в Интернете, откуда будет выполняться установка.

Необходимо предварительно выбрать тип установки из поддерживаемых в настоящее время трех вариантов: файл, раздел и директория. При установке в файл задается размер файла образа и желаемая файловая система, которая будет создана внутри образа. В этом режиме создается файл образа и монтируется в системе, куда в

Рис. 2. Интерфейс приложения Linux Deploy

последующем выполняется установка дистрибутива. При установке на раздел вместо пути к файлу указывается блочное устройство — раздел карты памяти. На указанном разделе будет создана файловая система, раздел смонтируется и на него выполнится установка. Директория в качестве типа установки может быть выбрана только в том случае, если она находится на разделе с файловой системой ext2, ext3 или ext4, который смонтирован без опций noexec или nodev.

Перед установкой также необходимо указать имя нового пользователя в системе, адрес DNS-сервера, язык локализации и окружение рабочего стола. Пароль для пользователя по умолчанию задается «changeme». На данный момент поддерживаются следующие окружения рабочего стола: XTerm, LXDE, Xfce, GNOME и KDE. Установка может включать одно из перечисленных окружений либо вообще не включать графические компоненты, если это не требуется. Во время установки распаковываются все необходимые пакеты для выбранного окружения и выполняется настройка его запуска. Есть возможность настроить вручную запуск любой другой среды помимо указанных, если это необходимо. На рис. 3 представлен снимок экрана с устройства Android, на котором отображается окружение рабочего стола LXDE, работа с рабочим столом осуществляется через VNC-клиент.

Стоит отметить, что большая часть всех параметров может быть оставлена без изменения, что позволяет приложению автоматически выбрать наиболее подходящие.

Кроме полной установки можно выполнить пе-реконфигурирование существующего дистрибутива, тем самым адаптировать любой сторонний образ для работы через программу Linux Deploy.

Параметры запуска. Под запуском дистрибутива понимается запуск некоторых приложений и служб внутри chroot-окружения. Запуск и остановка сервисов осуществляются одной кнопкой. Поддерживается запуск SSH-сервера, VNC-сервера, X Windows System в режиме клиента либо сервера через фрейм-буфер. Для каждого запускаемого сервиса предусмотрены свои настройки. Также можно осуществлять запуск любых других пользовательских скриптов.

Особый интерес представляет возможность запуска графической среды через внешний X-сервер. В этом случае запуск осуществляется по сети. X-сервер должен быть запущен на компьютере, а изображение с устройства передается на X-сервер. Подобно технологии тонких клиентов, на стороне X-сервера (клиенте) строится изображение, а само приложение выполняется на устройстве (сервере). В отличие от VNC, где изображение передается в виде потока сжатых кар-

Рис. 3. Пример запуска дистрибутива Debian и доступа к нему по VNC из Android

Таблица 2. Скорость чтения/записи chroot-окружения

внутри

Файловая система Скорость чтения, МБ/с Скорость записи, МБ/с

vfat 14,1 12,О

ext2 14,9 3,9

ext4 14,9 16,6

ext2 (loop) 17,О 7,4

ext4 (loop) 17,2 8,8

Таблица 3. Время установки и занимаемый объем дистрибутива

Графическая среда Время установки, мин Занимаемый объем, МБ

Без графики 12 26О

XTerm 14 29О

LXDE 19 45О

Xfce 2О 495

GNOME 55 13ОО

KDE 8О 13ОО

тинок, здесь передаются отдельные компоненты графического интерфейса, сборка которых осуществляется на стороне X-сервера.

Другой интересной возможностью запуска графической среды на устройстве является запуск X-сервера в режиме фрейм-буфера. Данный режим дает указание X-серверу перенаправлять изображение напрямую на видеоустройство, а также использовать прямой доступ к устройствам ввода. В этом случае появляется выигрыш в производительности за счет прямого доступа к аппаратным ресурсам устройства. Однако тут есть обратная сторона. К сожалению, графическая подсистема Android и GNU/Linux не могут работать одновременно. Чтобы иметь возможность запустить графические приложения GNU/Linux в этом режиме, Linux Deploy приостанавливает работу Android на время, пока выполняются Linux-приложения. После завершения графического сеанса работа Android корректно возобновляется без необходимости перезагружать устройство. Другим ограничением использования данного режима является проблема совместимости Xorg с аппаратными ресурсами устройства в некоторых случаях.

Консольный интерфейс. Установку и запуск GNU/Linux-дистрибутивов с использованием Linux Deploy можно произвести не только через графический интерфейс, но и из консоли Android, локально или удаленно. Для этого есть специальная команда «linuxdeploy», с помощью которой осуществляется полное управление дистрибутивом.

Производительность. Было проведено исследование производительности GNU/Linux-системы,

внутри chroot-окружения. В табл. 2 указана скорость чтения/записи внутри chroot-окружения, а в табл. 3 — время установки и занимаемый объем дистрибутива при установке через Linux Deploy. Результаты приведены для Debian 7.О wheezy/ armhf на Samsung Galaxy S II (і91ОО).

Заключение

Разработанный инструмент — приложение Linux Deploy — могут использовать в своей работе системные администраторы, программисты и обычные пользователи, которые хотят расширить функционал платформы Android за счет возможности запуска великого многообразия программного обеспечения GNU/Linux.

Исходные коды приложения опубликованы на github.com (https://github.com/meefik/ linuxdeploy), форум с поддержкой от заинтересованных пользователей открыт на сайте 4pda.ru (http://4pda.ru/forum/index. php?showtopic = 378О43), а само приложение можно установить из Google Play. На данный момент можно привести следующую статистику:

— более 5О ООО установок в Google Play (1О ООО активных пользователей);

— 91 % положительных отзывов (45О отзывов, средняя оценка 4,6);

— работоспособность подтверждена на более чем 1ОО устройствах;

— более 25 ООО просмотров демонстрационного ролика (83О ч суммарного просмотра);

— заинтересованность проектом и публикация материалов на популярных интернет-порталах (habrahabr.ru, 4pda.ru, linux.org.ru, opennet. ru, xda-developers.com и другие) пользователями приложения.

Литература

1. Рубанов В. В. Современная инфраструктура для обеспечения совместимости linux-платформ и приложений // Тр. Института системного программирования РАН. М., 2009. С. 129-141.

2. Бражук А. Утилита BusyBox: универсальный инструмент управления встраиваемыми Linux-системами // Компоненты и технологии. 2012. № 5(130). С. 160-162.

3. Калиниченко Ю. В., Калиниченко В. А. Проектирование приложений для Android // Сб. науч. тр. Sworld по материалам междунар. науч.-практ. конф. Одесса: Куприенко Сергей Васильевич, 2012. Т. 3. № 1. С. 17-19.