- Сборка Android под Ubuntu Linux
- Решение
- Установка дистрибутивов Linux рядом с Android
- Устанавливаем дистрибутив Linux на Android
- Шаг 1: Получение root-прав
- Шаг 2: Установка Linux Deploy
- Шаг 3: Настройка Linux Deploy
- Шаг 4: Установка и запуск Linux
- Устанавливаем рабочий стол Linux на Android
- Терминалы Linux
- Linux на Android
- Выбор системы
- Приложение UserLAnd
- Дистрибутивы в UserLAnd
- Краткое руководство к UserLAnd
Сборка Android под Ubuntu Linux
Эта заметка является косвенным продолжением моей первой публикации Сборка Android под Mac OS X и имеет аналогичную цель — решение проблем сборки относительно старых версий Android 4.0.x.
Коротко вводная. В одном из проектов я занимаюсь доработками оригинального кода Android для создания прошивки под специфичную железку. Версия для сборки была выбрана уже относительно старая — AOSP 4.0.4, но на ней базируется стабильная ветка кода от производителя железки. Первоначально я работал на MacOS, но для этого проекта решил переключиться на Linux для удобства разработки. Итак волею судеб я перешел с MacOS на более менее свежий Ubuntu Linux 12.04.3, рекомендованную на данный момент версию Linux для сборки Android.
Основной сложностью в новом окружении осталась старая проблема — старые версии AOSP не отслеживаются и новые правки в сборочную систему не вносятся. Поэтому если сборка master’а особой сложности не представляет, то сборка предыдущих версий Android под более свежие версии Ubuntu требует исправления ряда проблем.
В моем случае рабочее окружение выглядит так:
- AOSP 4.0.4 r1.1
- Ubuntu Linux 12.04.3 x64
- GNU Make 3.81 и другие рекомендованные утилиты
Все основные моменты и сложности сборки AOSP хорошо описаны в официальной документации. Как и для MacOS, в случае с Ubuntu, для сборки AOSP 4.0.x версий предлагается использовать более старые версии базовой ОС. В частности в разделе «Known Issues» для решения проблемы «Build error with 4.0.x and earlier on Ubuntu 11.10» предлагается использовать старый релиз Ubuntu 10.04, что не очень хочется делать, если предполагается заниматься в ОС и другими задачами, кроме сборки AOSP.
Решение
Установка производилась на практически чистую Ubuntu, за исключением нескольких прикладных программ. Первичная настройка окружения производилась в соответствии с официальным описанием.
Ниже я привожу тексты ошибок из консоли и методы исправления. В зависимости от версии AOSP и вашего окружения они могут проявляться все или частично. Большинство решений можно найти в интернете, я привожу лишь краткое описание необходимых действий.
Ошибка 0
Или вовсе и не ошибка, а необходимость установить для сборки проприетарные пакеты Oracle Java, которые с некоторых пор не входят в поставку Ubuntu.
Исправление
Для сборки Android нам необходим JDK 6ой версии, соответственно для этого прописываемыем репозиторий Oracle с нужными пакетами и устанавливаем требуемый:
Аналогично можно установить последний JDK 7ой версии, если это требуется для других целей:
Ошибка 1
При установке необходимых пакетов не устанавливается пакет libgl1-mesa-glx:i386 в котором паходится нужная нам библиоткеа libGL x86. Не устанавливается со следующей причиной:
Вместе с ним для установки указан пакет libgl1-mesa-dev в котором содержится libGL, но x64 версия, что нам не подходит для сборки AOSP.
Если попробовать сборку с libgl1-mesa-dev для x64 архитектуры, то при линковке получим ошибку:
Исправление
Вместо пакетов libgl1-mesa-glx:i386 и libgl1-mesa-dev установить пакет libgl1-mesa-dev:i386:
Более подробное описание содержимого пакета можно найти в описании Ubuntu, видно что он содержит и нужный libgl1-mesa-glx.
Также при установке пакета будет создан и симлинк в директории /usr/lib/i386-linux-gnu/, поэтому дополнительно его создавать не нужно, как указано в руководстве командой:
Ошибка 2
Используемая в системе версия компилятора gcc (4.6.x) имеет проблему с переопределением символа _FORTIFY_SOURCE, о чем так же написано в официальных «Known Issues». Как решение предлагается откатиться на Ubuntu 10.04, что очевидно не самый лучший вариант. Текст предупреждения и ошибки будет такой:
Исправление
Эту проблему можно решить установив gcc-4.4 и необходимые библиотеки:
Подробнее про настройку 2х версий gcc и использование gcc-4.4 как приоритетной версии можно прочитать в этом блоге. Для наших же целей достаточно установить нужные пакеты и запускать сборку командой с указанием версии компилятора:
После приведенных выше операций Android соберется как мы и хотели, но постфактум можно столкнуться еще с парой неприятностей.
Ошибка 3
При запуске эмулятора с указанным параметром «-gpu on» для включения аппаратного ускорения отрисовки вы получите слежующее сообщение и черный экран в эмуляторе:
В обычном режиме эмулятор запускается нормально, но разобраться было интересно и к тому же выяснилось что после перезагрузки компьютера вентиляторы продолжают работать на максимуме и не глушатся. Мягко говоря очень не приятный эффект, при таком шуме работать крайне не удобно.
Исправление
Путем проверки пакетов выяснилось что при установке одного из них был удален проприетарный графический драйвер от NVidia и как следствие система забыла как регулировать скорость вращения вентилятора, а также где искать нужную библиотеку. Вредоносным пакетом оказался libncurses5-dev:i386, обратите внимание что при его установке будет следующий запрос:
Соответственно решением проблемы будет просто переустановка проприетарного драйвера в консоли или через панель управления.
Ошибка 4
Возникает при запуске эмулятора без указания файла ядра системы. В предыдущей статье я забыл указать этот момент, в этой исправляюсь чтобы описание было до конца полным. Итак при запуске эмулятора AOSP 4.0.4 мы получим сообщение:
Проблема возникла из-за того что в более свежих версиях AOSP prebuilts перенесли в другую директорию и это исправление попало в сборочные скрипты для старых версий, а вот местоположение не изменили.
Исправление
Указать при запуске эмулятора расположение ядра, путь относительно корня сборки:
Источник
Установка дистрибутивов Linux рядом с Android
Бесплатные дистрибутивы, основанные на ядре Linux, могут быть установлены не только на компьютеры, но и доступны на мобильных устройствах. Помимо этого, создаются специальные версии операционных систем, где интерфейс и инструменты переделаны под смартфоны и планшеты. Обычно желание установить бесплатный дистрибутив появляется у обладателей телефонов под управлением Android. Инсталлируемая таким образом Линукс будет находиться рядом с основной ОС, а юзер сам выберет систему для загрузки. Далее мы хотим продемонстрировать выполнение этой процедуры на примере одной из самых популярных программ.
Устанавливаем дистрибутив Linux на Android
В осуществлении поставленной задачи нет ничего сложного, ведь требуется только наличие достаточного количества свободного места во внутренней памяти устройства и активное подключение к интернету. Единственное, с чем могут возникнуть трудности — получение root-прав, но при помощи полноценных инструкций эта цель тоже будет выполнена быстро и без проблем.
Приведенные далее руководства не подойдут для установки дистрибутивов Kali Linux, поскольку будет использовано несовместимое программное обеспечение. Развернутые инструкции по этой теме вы найдете в отдельном материале по ссылке ниже.
Шаг 1: Получение root-прав
Используемое далее программное обеспечение для выполнения инсталляции потребует рут-права. По умолчанию они не предоставляются на Android, их нужно получать через специальные сторонние средства. Тогда перед юзером открываются безграничные возможности в управлении ОС. Данный шаг самый сложный, поэтому с ним следует разобраться в первую очередь, чтобы продолжить дальнейшую операцию. Детальные руководства по методу получения root-прав на мобильном устройстве вы найдете в отдельной нашей статье, перейдя по следующей ссылке.
Шаг 2: Установка Linux Deploy
После удачного получения прав суперпользователя можно приступать к непосредственной установке Linux. Скачивание большинства популярных дистрибутивов доступно при помощи приложения Linux Deploy, которое выполнит все необходимые действия. Его нужно лишь установить и настроить. Первая задача выполняется так:
- Откройте Google Play Market и перейдите на страницу приложения.
Начните установку, щелкнув на соответствующую кнопку.
Шаг 3: Настройка Linux Deploy
Теперь у вас на смартфоне имеются права суперпользователя и необходимое программное обеспечение, а значит все готово для дальнейшей установки. Осталось только выбрать путь и версию дистрибутива, что осуществляется непосредственно в Linux Deploy.
- Запустите приложение и ознакомьтесь с представленной инструкцией. В ней описываются общие правила установки Linux.
Здесь перейдите в раздел «Профили».
Создайте новый профиль и задайте ему имя. Доступно создание неограниченного количества учетных записей. Каждой из них присваиваются индивидуальные настройки, то есть можно инсталлировать несколько дистрибутивов рядом.
Вернитесь в главное меню и переместитесь к категории с настройками операционной системы.
Выберите дистрибутив и его версию на свое усмотрение.
На время отложите Linux Deploy и запустите удобный файловый менеджер или стандартный Проводник. Там в любом месте создайте папку, назвав ее именем ОС. Туда и будут установлены все файлы.
Задайте ей произвольное название, чтобы запомнить место хранения данных. Запишите или скопируйте путь к этой директории.
Вернитесь в приложение и в пункте «Путь установки» задайте расположение нужной папки.
Шаг 4: Установка и запуск Linux
Перед запуском инсталляции повторно убедитесь в том, что все параметры были заданы верно, ведь неправильные настройки иногда приводят к отказу работы устройства, а решается это только сбросом конфигурации до заводского состояния. После этого нажмите на кнопку «Старт».
Соглашайтесь с действиями при отображении системных уведомлений. Затем будет произведена перезагрузка Android. Повторное нажатие на «Старт» запустит гостевую операционную систему.
Выше вы разобрались с инсталляцией Linux в качестве гостевой ОС на девайс под управлением Андроид. Как видите, ничего в этом сложного нет, главное — получить права суперпользователя и выполнить правильную конфигурацию приложения. Все файлы оно загрузит из открытых источников и установит их самостоятельно.
Помимо этой статьи, на сайте еще 12473 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник
Устанавливаем рабочий стол Linux на Android
Привет, Хабр! Представляю вашему вниманию перевод статьи из журнала APC.
В данной статье рассматривается полная установка операционной среды Linux вместе с графическим окружением рабочего стола на Android-устройствах.
Одной из ключевых технологий, которую применяют многие из систем Linux на Android, является pRoot. Это реализация утилиты chroot в пользовательском пространстве, которая пользуется большой популярностью в настольных системах и серверах Linux. Однако для инструмента chroot нужны полномочия пользователя root, которые не доступны по умолчанию на Android. pRoot же даёт это преимущество за счёт установления привязки к директории.
Терминалы Linux
Не во всех эмуляторах терминалов Linux для Android имеется набор утилит BusyBox, в отличие, например, от Termux. Причиной тому является то обстоятельство, что весь смысл подобных систем состоит в обеспечении «полной» установки всех компонентов ОС, в то время как BusyBox предназначена для того, чтобы свести всё множество общих утилит в один двоичный файл. В системах, где не установлена BusyBox, используется начальная загрузка для Linux, содержащая полные версии программ. «
Задайте логин и пароль для дистрибутива и VNC в UserLAnd.
Однако в этих системах присутствует дополнительная технология, которая не требует наличия Termux. В этой статье будет рассматриваться полнокомплектная инсталляция дистрибутива Linux, а также рабочего стола GUI. Но прежде необходимо выбрать способ установки графической системы.
Linux на Android
Как было упомянуто ранее, программные пакеты, которые мы будем устанавливать, запускаются в пользовательском пространстве.
Это означает, что у них есть только разрешение для текущего пользователя, который в случае ОС Android всегда является обычным пользователем, т.е. не имеет полномочий администратора. Однако для того, чтобы установить рабочий стол Linux, нам понадобится установить графический сервер, например, X или Wayland. Если бы мы делали это в операционной среде Linux, то он запустился бы с полномочиями обычного пользователя, не имея при этом доступа к графическому уровню ОС Android. И потому мы должны смотреть в сторону установки сервера «стандартным» андроидовским способом, чтобы у него был доступ к железу и способность поддерживать графическую среду.
Умные ребята из сообщества разработчиков предложили два решения этой проблемы. Первое заключается в том, чтобы использовать собственные версии Linux (как правило, это сервер X). После того, как те начнут работу в фоновом режиме, у вас появится доступ к данному фоновому процессу через VNC. Если же на вашем устройстве Android уже имеется программа VNC viewer для удаленного взаимодействия с другими компьютерами, просто используйте её, чтобы получить удалённый доступ к локальному узлу. Это простое в исполнении решение, однако некоторые пользователи сообщают о том, испытывают затруднения с работой программы.
Второй вариант – установить сервер, предназначенный специально для устройств на базе Android. Некоторые серверы доступны на Play Store в платной и бесплатной версиях. Перед установкой необходимо проверить, поддерживается ли выбранный вариант или по крайней мере работает ли с тем программным пакетом Linuх для Android, который вы собираетесь установить. Мы отдали предпочтение системе X-Server, и потому использовали программный пакет XServer XSDL (ссылка). В статье будет описываться процесс установки данного сервера, хотя он может немного отличаться, если у вас установлено другое приложение или же используете VNC.
Выбор системы
Как в случае с X-Servers, в Play Store существует несколько приложений по установке дистрибутивов системы Linux. Здесь также, как и с Termux, мы сконцентрируемся на вариантах, которые не требуют полномочий суперпользователя, что в свою очередь предполагает определённую степень риска. Эти приложения предоставляют весь необходимый для большинства пользователей функционал, сохраняя при этом ваши данные в безопасности. Ниже представлены примеры таких приложений в Play Store:
— UserLAnd: весьма популярный выбор пользователей. Приложение включает в себя набор распространенных дистрибутивов: Debian, Ubuntu, Arch и Kali. Любопытно, что несмотря на отсутствие вариантов на базе RPM, UserLAnd включает Alpine Linux для устройств с меньшим объёмом памяти.
— AnLinux: данное приложение помогает в установке одного или нескольких списков дистрибутивов большого объёма и может включать в себя Ubuntu/Debian, Fedora/ CentOS, openSUSE и даже Kali. Там также можно выбрать низкозатратные десктопные варианты: Xfce4, MATE, LXQtand LXDE. Для работы требуется установленный Termux, а операционная система Android должна быть от 5.0 и выше.
— Andronix очень похож на AnLinux. Возможно, имеет лучший дизайн, чем предыдущее приложение, однако поддерживает меньшее число дистрибутивов.
— GNURoot WheezyX: этот проект стартовал как вариант Linux на Android и разрабатывался для программ c открытым исходным кодом. Как подсказывает название, он фокусируется на дистрибутивах Debian, в то время как ‘X‘ на конце означает, что приложение ориентировано на графический рабочий стол. И несмотря на то, что создатели остановили разработку проекта ради UserLAnd, GNURoot WheezyX всё ещё доступен на Play Store, если у кого-то есть в нём нужда.
Авторы данной статьи будут использовать приложение UserLAnd для установки рабочего стола Linux на Android, и тому есть несколько причин. Во-первых, приложение имеет открытый исходный код (хотя AnLinux тоже его имеет). Во-вторых, оно предлагает хороший набор дистрибутивов (хотя в него и не включены Fedora или CentOS), также с помощью него можно установить дистрибутивы с минимальными системными требованиями, которые не займут много места в памяти смартфона. Но главное преимущество UserLAnd в том, что оно имеет инструменты поддержки для установки отдельных приложений вместо целых дистрибутивов. Мы выясним, что конкретно это значит для нас, позже. А сейчас давайте установим UserLAnd на ваше устройство.
Приложение UserLAnd
Скачайте приложение из Google Play или F-Droid (ссылка) на ОС Android. Оно устанавливается как и любое другое приложение – ничего особенного здесь делать не надо. После этого запустите его из панели приложений.
Первое, что вы увидите там – это список дистрибутивов. В конце можно найти пару десктопных вариантов: LXDE and Xfce4. Замыкает его приложение Firefox, пара игр и несколько офисных утилит: GIMP, Inkscape и LibreOffice. Это вкладка называется «Приложения». Предназначена она для установки приложений.
После того, как вы установите что-нибудь, на вкладке «Session» появится соответствующая запись об этом. Здесь можно начать или остановить текущую сессию, а также посмотреть запущенные процессы.
“Filesystems” – последняя вкладка, которая показывает уже завершённые установки. Стоит отметить, что после того, как вы удалите любой элемент из Filesystems, сведения о нём будут стёрты из вкладки Session, что, однако, не доказывает обратного. Это значит, что вы сможете создать новую сессию на базе текущей файловой системы. Понять, как работает эта взаимосвязь, намного проще, если увидеть это в действии, и потому мы начнём с установки приложения в системной среде UserLAnd.
Перед тем, как установить дистрибутив на смартфоне, необходимо предоставить UserLAnd доступ к хранилищу.
Дистрибутивы в UserLAnd
Выберите один из дистрибутивов, расположенных на экране Apps, для установки на устройство. В качестве примера мы будем использовать Ubuntu. При нажатии на значок появляется диалоговое окно, где спрашивается имя пользователя, пароль и пароль VNC. Затем выберите способ, посредством которого вы получите доступ к дистрибутиву. Начнётся загрузка, в ходе которой будет задействован базовый образ выбранного дистрибутива. Распаковка файла будет осуществляться в директории UserLAnd.
По окончании загрузки вернитесь к эмулятору терминала xterm. Можете ввести служебную команду, чтобы узнать, какую версию Linux вы установили:
Следующий шаг заключается в том, чтобы инсталлировать рабочий стол, используя служебную команду Ubuntu:
Последний шаг состоит в том, чтобы убедиться, что ваше новое окружение рабочего стола готово к запуску. Чтобы сделать это, нужно отредактировать файл .xinitrcfile, в котором в настоящее время имеется всего одна строка /usr/ bin/twm. Её необходимо изменить на /usr/bin/startlxde. Теперь выйдите из сессии XSDL (убедитесь, что нажали кнопку STOP в области уведомлений), удерживайте кнопку «Ubuntu listing» на вкладке Sessions, затем нажмите «Stop Sessions» и повторно запустите сессии. Через несколько секунд должна появиться системная среда LXDE. В ней можно делать то же самое, что и на обычном рабочем столе. Она просто может быть немного меньше и работать чуть медленнее: чтобы нажать кнопку на устройстве, вам придётся ждать дольше, чем если бы вы это делали с клавиатурой и мышью. Давайте посмотрим, как конкретно мы можем усовершенствовать системную среду Linux на смартфоне.
Краткое руководство к UserLAnd
При внимательном изучении содержимого рабочего стола можно обнаружить точное воссоздание дексктопной версии. Если вы используете UserLAnd на устройстве с клавиатурой и мышью (подключённых через Bluetooth-соединение или каким-либо иным образом), вам будет легко приспособиться к использованию системной среды Linux в таком формате. За исключением небольшого отставания, которое происходит за счёт того, что курсор X-Windows синхронизируется с курсором устройства на Android, всё работает плавно.
Возможно, первое, что вы захотите сделать, это отрегулировать установленную по умолчанию систему шрифтов, поскольку размер шрифтов рабочего стола слишком велик для экрана телефона. Перейдите в главное меню, затем выберите «Настройки» → «Настройка внешнего вида и виджетов» → «Виджет». Здесь можно поменять размер шрифта по умолчанию на более подходящий вариант для вашего телефона.
Возможно, дальше вы захотите установить свои любимые программы в системную среду Linux. Как сказано выше, служебные команды в этом случае не будут работать, так что смело используйте поистине незаменимый инструмент, который установлен в системной среде UserLAnd, под названием ASAP:
Дистрибутивы в приложении представлены в виде сессий. Вы можете начать и закрыть их.
После установки дистрибутива можно добавить среду рабочего стола со стандартными командами.
Вероятно, вам также понадобятся альтернативные способы установления соединения для своего дистрибутива. Тот факт, что вы изначально установили XSDL, не означает, что он должно быть неизменным всё время. Вы можете создать ещё одну учётную запись на вкладке Session и выбрать другой сервер. Только убедитесь, что указали его в одной и то же файловой системе. UserLAnd попытается направить вас на нужное приложение, чтобы установить новый тип соединения: либо XSDL, ConnectBot для SSH, или bVNC.
Однако настойчивость, с которой приложение автоматически направляет вас в Play Store при попытке переподключения, может раздражать. Чтобы прекратить это, достаточно сменить сервер посредством установки специального приложения. Для установки SSH выберите старый проверенный VX ConnectBot. Просто войдите в порт 2022 на рабочей станции под вашим именем и паролем. Для того, чтобы подключиться к серверу VNC достаточно установить коммерческое, но во многих отношениях продвинутое приложение Jump Desktop, и набрать адрес 127.0.0.1:5951.
Надеемся, вы помните пароль VNC, который задали, когда создавали файловую систему.
Получить доступ к текущей сессии UserLAnd также можно используя похожие инструменты на другом компьютере в вашей сети. Достаточно подключить SSH к работающему сеансу (с типом соединения SSH, естественно) посредством терминала Linux, например, Konsole, или подключиться к сеансу VNC с помощью KRDC. Просто замените локальные адреса на экране компьютера IP-адресами вашего Андроида.
В сочетании с парой переносных приложений эта установка даст вам удобную портативную систему Linux, к которой можно подключиться с помощью любого компьютера, доступного вам в данный момент.
Источник