Какой линукс для телефона. Тонкая подстройка всего и вся под себя. Сравниваем «Linux» и ядро Linux

Первый в России подробный обзор новой мобильной ОС

Недавно мы рассказывали вам об альтернативных операционных системах, представленных на выставке Mobile World Congress 2015. В том числе речь шла и об Ubuntu Touch. Из всех мобильных ОС эта - единственная, с которой нам до последнего времени не довелось познакомиться, поскольку попросту не было коммерческих аппаратов с ней на борту. Но вот, наконец, к нам в редакцию приехал заказанный еще в феврале смартфон BQ Aquaris E4.5 - первый смартфон на Ubuntu Touch. Так что теперь мы можем ликвидировать пробел и подробно изучить эту ОС (самому смартфону будет посвящен отдельный материал).

Для начала - краткая (но уже весьма драматичная) история Ubuntu Touch. Ubuntu - самый популярный на данный момент (и уже много лет подряд) Linux-дистрибутив для десктопов. Разрабатывает его компания Canonical, возглавляемая миллиардером (и, кстати, вторым в мире космическим туристом) Марком Шаттлвортом. Как и Microsoft, Canonical однажды спохватилась и поняла, что неплохо было бы заявить о себе и на мобильном рынке, не ограничиваясь десктопной ОС.

Но, в отличие от Microsoft, компания Canonical не настолько богата, чтобы вложить в это дело миллиарды долларов и купить мощных производителей смартфонов, вроде Nokia. Поэтому путь от первых сборок ОС до финального релиза на коммерческих устройствах оказался весьма тернист. В начале 2013 года ОС демонстрировалась на барселонской Mobile World Congress. В качестве демонстрационного устройства использовались планшет Google Nexus 10 и смартфон Google Nexus 4, на которых вместо Android была установлена мобильная ОС Ubuntu.

Кстати, во избежание дальнейших недоразумений оговоримся, что мы будем ее называть Ubuntu Touch. В разное время Canonical называла ее и Ubuntu Phone OS, и Ubuntu для смартфонов, и Ubuntu Touch... Последнее, на наш вгляд, самое верное название, так как отражает возможность работы ОС и на смартфонах, и на планшетах, но при этом показывает принципиальное отличие от десктопной Ubuntu (которую, например, тоже можно было бы установить на планшеты с процессором Intel x86).

После демонстрации Ubuntu Touch на MWC компания Canonical распространила раннюю сборку, которую энтузиасты могли самостоятельно попробовать установить на некоторые модели смартфонов и планшетов. Но амбиции самой Canonical были гораздо больше: компания хотела не просто создать еще один Linux-дистрибутив, но и выйти на рынок смартфонов с собственным продуктом. Да не просто смартфоном, а суперсмартфоном, который, обладая 4 ГБ оперативной памяти, мог при подключении к монитору превращаться в полноценный компьютер под управлением десктопной Ubuntu.

Модель получила название Ubuntu Edge, и на нее на IndieGoGo. Однако цель компания Canonical поставила совершеннно нереалистичную: 32 млн долларов - никто никогда столько не запрашивал через краудфандинговые сервисы. Несмотря на огромный энтузиазм Linux-сообщества и довольно крупные пожертвования ряда IT-организаций, поэтому все собранные деньги пришлось вернуть жертвователям, и проект Ubuntu Edge был отменен.

Эта неудача заставила Canonical изменить стратегию и взять курс на смартфоны сторонних производителей, причем бюджетного сегмента. На MWC 2014 можно было увидеть прототипы этих смартфонов. Тогда же был объявлен старт предзаказов на планшет Intermatrix U7. Увы, . Далее была еще одна попытка - энтузиасты попробовали собрать на IndieGoGo деньги на планшет UbuTab с двумя ОС - Ubuntu Touch и Android. Хотя средств просили во много раз меньше, чем Canonical на пресловутый Ubuntu Edge, но все равно не собрали. Правда, на сайте UbuTab планшет доступен для покупки, а поставки обещают начать в апреле. Однако вживую никто этого планшета пока, судя по всему, не видел. На той же MWC 2015 его не было (о стенде Ubuntu на этой выставке мы вам рассказывали).

В общем, первое и пока, похоже, единственное коммерческое устройство на этой ОС - BQ Aquaris E4.5. Его мы и используем для того, чтобы изучить операционную систему.

Интерфейс

Пожалуй, самая важная составляющая Ubuntu для рядового пользователя - это интерфейс, имеющий иную логику, нежели у Android или iOS. Во-первых, все взаимодействие с интерфейсом осуществляется с помощью свайпов (кнопки Home здесь в принципе нет); во-вторых, рабочий стол операционной системы содержит не иконки приложений, как в iOS и, отчасти, в Android, а набор динамически обновляемых виджетов; в-третьих, для быстрого доступа к ключевым или открытым программам используется вертикальная панель-меню слева, явно взятая из десктопной Ubuntu с интерфейсом Unity.

Для сравнения - скриншот десктопной Ubuntu (фрагмент).

Впрочем, рабочего стола, как некого пустого пространства, в Ubuntu Touch нет.

Ubuntu Touch поддерживает многозадачность. Для перехода между приложениями используется свайп с правой границы экрана налево. Из открывшейся после этого жеста 3D-галереи миниатюр можно убрать ненужные приложения (вертикальным свайпом).

Еще один жест - вертикальный свайп с верхней границы экрана - открывает панель уведомлений и быстрых настроек. В общем, как в Android. Набор быстрых настроек имеет некоторые нюансы, но в целом он стандартный.

Рабочий стол

Но - вернемся к рабочему столу, включающему семь экранов. Первый из них называется «Сегодня» и выполняет функцию агрегатора самого важного контента с остальных шести. Здесь мы видим дату, информацию о времени восхода и заката, погоду (на текущий день и на следующий), события календаря, недавние сообщения, вызовы, задачи, популярные темы в Twitter. Удивительно, что тонкой настройки экрана «Сегодня», равно как и других экранов, здесь нет. То есть, допустим, если я хочу получать информацию о погоде от другого поставщика, а не того, который используются по умолчанию, то ничего сделать нельзя.

Второй экран называется NearBy, что стоило бы перевести как «Рядом» (странно, что в русифицированной ОС экран называется по-английски). Переход между экранами, что логично, осуществляется горизонтальными свайпами.

Здесь мы опять-таки видим погоду (непонятно, зачем было размещать ее в самом верху на обоих экранах), ближайшие фотографии из Flickr, актуальные статьи Wikipedia (хотя полезность этого сомнительная - Википедия все-таки не новостной ресурс) и список ближайших концертов. Наверху же есть строчка «Что вы чувствуете» (явно навеянная фейсбучным «О чем вы думаете?»). Честно говоря, содержимое NearBy весьма сомнительное, хотя идея представить информацию, так или иначе связанную с местонахождением пользователя, перспективная.

Наконец, на третьем экране мы видим список установленных приложений.

Нельзя сказать, что формой и стилем иконки напоминают десктопную Ubuntu. Скорее, это какой-то детско-пародийный вариант иконок iOS и OS X двухлетней давности. Обратите внимание, например, на иконки «Браузер», «Музыка», «Контакты», «Калькулятор», «Настройки системы».

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

Четвертый экран представляет собой агрегатор новостей. Здесь мы видим рубрику «Заголовки» с большими картинками-превью (лента прокручивается горизонтально), далее идут «Новости внутри страны», «Международные новости», «Спорт», «Техника», «Финансы».

Выглядит весьма неплохо, и, наверное, это было бы удобно, если бы можно было настроить агрегатор новостей для работы с русскоязычными ресурсами. Пока же нет не только возможности настройки страны (что особенно странно выглядит в контексте наличия рубрики «Новости внутри страны»), но и возможности выбора альтернативных источников. Единственное, что можно сделать - это снять галочки с тех источников, которые здесь представлены, исключив, таким образом, из подборки какие-то СМИ.

Пятый экран - «Музыка». Здесь мы видим альбомы с 7digital, ближайшие концерты с Songkick, популярные композиции с Grooveshark и популярные музыкальные видео с YouTube.

Как и в случае с новостями, изменить список ресурсов нельзя. Но главная проблема даже не в этом, а в том, что вы не можете тут же прослушать треки или посмотреть видео. При нажатии на контент Grooveshark или YouTube вас просто перенаправляют на мобильные версии этих сайтов. Аналогичная история и с содержимым следующего экрана - «Видео». Здесь мы видим миниатюры роликов с YouTube и Vimeo, но по нажатию на них открывается браузер.

Правда, здесь же можно еще посмотреть видеоролики, снятые вами на камеру смартфона. А на следующем экране - «Фотографии» - вы увидите галерею фотографий, сделанных на ваш смартфон. Помимо этого мы здесь обнаруживаем предложения добавить учетные записи Instagram и Facebook, чтобы фотографии из них тоже отображались. И это была бы действительно полезная возможность. Была бы. Если бы оно работало. Добавляем аккаунты - и ничего не происходит. Epic fail. Спасибо хоть фотографии из Flickr можно посмотреть - но только те миниатюры, которые отображаются.

Добавим еще две ложки дегтя в рассказ об экранах. Во-первых, переходить от одного к другому можно только последовательно. То есть нельзя перейти от первого сразу к пятому, например. Будьте добры сделать четыре свайпа (а экраны еще и подтормаживают). Во-вторых, если вы с какого-то экрана перешли на интернет-страницу или в любое приложение, то назад на тот же экран вы уже не вернетесь - только на первый экран «Сегодня», откуда вам снова придется «свайпать» до попадания на нужную страницу.

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

Приложения

Теперь посмотрим, какие приложения есть на устройстве и в Магазине Ubuntu. Всего на смартфон предустановлено 25 приложений. Радует, что большинство из них можно удалить (в отличие, например, от ситуации с Android и iOS). Неудаляемые - только те, что имеют критическое значение для работы устройства и незаменимы. Например, это «Телефон», «Сообщения», «Контакты», «Браузер», «Настройки системы», «Внешние накопители»... При этом карты, приложение погоды, даже музыкальный плеер и просмотрщик фотографий можно деинсталлировать.

Для деинсталляции надо нажать на иконку, удерживая ее, после чего откроется страница магазина, где уже будет кнопка «Удалить». Странно, что не придумали нечто вроде крестика в iOS или альтернативных оболочках Android, но и этот вариант удобнее, чем в Android по умолчанию.

У основных приложений ОС в строке магазина, где отображается название разработчика, указано Ubuntu Core App Developers. Но далеко не все приложения Ubuntu Core App Developers есть в качестве предустановленных. Например, в магазине мы можем найти такие действительно необходимые вещи, как Terminal, Document Viewer, File Manager. Почему их нет в стандартной поставке (зато там есть какие-то совсем не первой необходимости вещи) - загадка.

Отметим еще одну любопытную деталь: в качестве мессенджера предлагается использовать Telegram Павла Дурова. Причем если искать в Магазине Viber или WhatsApp, мы все равно увидим Telegram. Но мало того. Telegram еще и довольно глубоко интегрирован в операционную систему: в частности, в панели уведомлений, выдвигающейся сверху, можно увидеть последние сообщения Telegram, а на экране блокировки - количество непросмотренных сообщений. Видимо, Шаттлворта привлекла философия этого мессенджера: никакой рекламы, никакой оплаты, максимальная защищенность.

В свою очередь, в качестве стандартного навигационного сервиса предлагается использовать Here Maps. Версия приложения указана как 2.0. Но самое забавное, что среди поддерживаемых этим сервисом платформ Ubuntu Touch не значится (даже в качестве экспериментальной). Хотя есть, например, Firefox OS. И судя по внешнему виду Here Maps, это не нативное приложение, а веб-приложение. О том, что это такое, мы еще поговорим далее.

Что касается остальных предустановленных приложений, то мы бы отметили, в первую очередь, их простоту и неказистость. Все они довольно примитивны и по функциональности, и по внешнему виду (что-то типа первых версий Android), зато интуитивно понятны. Но и здесь встречаются странности. Например, в музыкальном плеере есть загадочная кнопка «Добавить в...» (куда?). Кроме того, невозможно запустить приложение видеоплеера и уже из него выбрать видеофайл.

В целом, главная проблема набора предустановленных приложений - отсутствие многих необходимых вещей. Причем если какие-то из этих вещей можно найти в Магазине (Менеджер файлов, Терминал), а для каких-то существуют аналоги (Telegram вместо Viber и WhatsApp), то есть совершенно вопиющие пробелы: например, хотя у смартфона имеется фронтальная камера, видеообщение невозможно, ведь нет ни Skype, ни Hangouts, ни какой-либо иной альтернативы. Также нет почтового клиента. И даже Gmail здесь только в виде веб-приложения.

Веб-приложения

Помимо нативных приложений, написанных на Qt/QML, разработчики могут создавать веб-приложения на HTML5, работающие полностью в интернете. Фактически, это мобильные версии сайтов, «упакованные» в самостоятельную оболочку, благодаря чему они могут присутствовать в Магазине Ubuntu, в списке приложений и на панели быстрого запуска. Ну и адресная строка не будет занимать часть экрана.

Нечто подобное мы видели в Firefox OS , но там веб-приложения отделялись от нативных. В случае же с Ubuntu Touch все свалено в одну кучу. И если вы, например, ищете клиент для Instagram в Магазине, то не сможете сказать, какой из отображенных вариантов нативный, пока не зайдете в описание каждого из них. Излишне объяснять, почему веб-приложения хуже нативных: это и производительность, и неоптимизированный под конкретное устройство интерфейс, и, главное, необходимость интернет-соединения. Кроме того, вполне логично, что веб-приложения не могут нормально задействовать аппаратные возможности смартфона: например, веб-приложение Instagram не имеет доступа к камере (откуда бы ему взяться, если его нет в веб-версии Instagram?).

Проще говоря, вы с тем же успехом могли бы просто открыть мобильную версию сайта через браузер. На скриншотах выше мы видим мобильную версию Instagram, открытую через браузер (слева) и веб-приложение Instagram (неофициальный клиент) из Магазина Ubuntu. В Play Store и App Store такой халтуры, конечно, нет. При этом в Android и iOS вам ничто не мешает создать иконку быстрого запуска нужного веб-сайта на рабочем столе. Получается, фактически, то же веб-приложение, что на Ubuntu Touch. Но Canonical выгоднее «подмешивать» веб-приложения в общий набор приложений в магазине. А это сказывается на удобстве поиска.

Настройки и взаимодействие с другими ОС

Поскольку Ubuntu Touch - свободная ОС, то логично ожидать там максимум свободы для пользователя. Однако меню настроек и в целом возможности персонализации операционной системы выглядят очень скромно - куда скромнее, чем у менее свободного Android и совсем несвободной iOS.

Например, огорчает отсутствие настроек левой панели приложений. Почему нельзя в нее добавить те приложения, которые нужны мне, убрав остальные? Да и настройки отдельных параметров интерфейса оставляют желать лучшего. Например, вы можете изменить фон экрана блокировки, но не можете вынести на центральный круг информацию с тех приложений, которые вас интересуют больше всего. Из действительно интересного стоит отметить разве что возможность спрятать любые экраны рабочего стола.

Второе разочарование связано с невозможностью установки Android-приложений. Напомним, что такая функциональность есть и в Sailfish OS, и в BlackBerry 10.3. И пусть Android-приложения там работают неидеально, но все же эта возможность очень важна. Зато настоящим сюрпризом для нас стал тот факт, что настольная операционная система OS X при подсоединении к компьютеру смартфона с Ubuntu Touch воспринимает его как Android-аппарат и запускает Android File Transfer. Который оказывается полностью работоспособным: с его помощью можно переписывать файлы с компьютера на смартфон и обратно.

Никаких проблем не возникает и при подсоединении смартфона к Windows. ОС Microsoft взаимодействует с ним так же, как с обычным Android-аппаратом. Но это вполне ожидаемо. А вот от работы Ubuntu Touch совместно с десктопной Ubuntu мы все же ожидали чего-то большего. Например, какого-то софта, позволяющего полноценно работать с содержимым смартфона (типа BlackBerry Blend). Но Ubuntu 14.02.2 LTS тоже воспринимает смартфон на Ubuntu Touch как обычный съемный накопитель. Поэтому если вы «убунтовод» - не надейтесь на какое-то особое взаимодействие смартфонной и десктопной ОС.

Ну а в качестве плюса мы отметим, что, во-первых, со всеми тремя десктопными ОС смартфон взаимодействует без каких-либо драйверов и дополнительных программ, а во-вторых, Ubuntu Touch может работать напрямую с файлами, скопированными с компьютера. Например, вы можете закинуть музыкальный альбом в соответствующую папку - и он будет нормально воспроизводиться, и даже обложка будет отображаться. Никаких преград, как в iOS, здесь нет.

Предварительные выводы

Операционная система Ubuntu Touch находится в самом начале своего пути - по крайней мере, если считать только коммерческие аппараты. И в этом контексте она выглядит весьма многообещающе: отметим любопытный интерфейс, весьма удобное управление жестами, а также интуитивную понятность и самой ОС, и основных приложений. Но все-таки не стоит забывать, что публичная история Ubuntu Touch началась еще два года назад. И за спиной этой разработки стоит не маленький стартап Jolla, а серьезная компания Canonical с 10-летней историей. Если учесть эти вводные, то неизбежно закрадываются сомнения в будущем операционной системы. При всех интересных идеях на сегодняшний день это неконкурентоспособный продукт: нет многих критически важных приложений (почтовый клиент, Skype), зато есть множество недоработок и глюков, отсутствует поддержка Android-приложений, магазин приложений замусорен так называемыми «веб-приложениями», которые не могут считаться полноценной заменой нативным приложениям.

Вдобавок к этому, внешний вид операционной системы очень спорный. У Jolla дизайн был одним из козырей, Android в последние два года тоже сделал большой шаг вперед, Ubuntu Touch же остался где-то в эпохе Android 2.x, хотя некоторые элементы ОС выглядят весьма симпатично. Здесь можно вспомнить еще Firefox OS, у которой внешний вид даже более неказистый, да и особо интересных находок в сфере взаимодействия с ОС нет. Но Firefox OS ориентирована на бюджетный сегмент и операторские решения. И, судя по MWC 2015, определенные успехи у Firefox OS есть. Тогда как создатели Ubuntu Touch до сих пор не имеют четкого представления, как надо развивать ОС и на каком поле она могла бы потеснить существующих игроков.

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

Наконец, можно было бы сыграть на расширенном взаимодействии с десктопной Ubuntu - по крайней мере, это привлекло бы пользователей Ubuntu, коих немало. Но и этот путь, видимо, показался Canonical слишком сложным. В принципе, идея сделать единую операционную систему для разных классов устройств (ПК, мобильные устройства, ТВ...) перспективна. Но для пользователей это имеет смысл только тогда, когда при наличии двух и более составляющих экосистемы они получают некие уникальные возможности (вспомним, к примеру, функции Handoff и Continuity в OS X и iOS). У Ubuntu Touch ничего такого нет. А следовательно, в нынешнем своем виде операционная система может быть интересна только фанатам-энтузиастам. Будем надеяться, что их совместными с Canonical усилиями ОС все-таки перерастет свои детские болезни и станет еще одним игроком на рынке мобильных устройств.

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

Зачем?

На первый взгляд может показаться странным, что кто-то пытается запустить на мобильном устройстве операционную систему, в принципе не предназначенную для работы с экраном небольших размеров и без достаточно точного манипулятора (мышь) и клавиатуры. Однако не стоит делать поспешных выводов. Дистрибутив Linux может дать владельцу смартфона достаточно много преимуществ, среди которых набор старых проверенных инструментов, таких как утилиты командной строки, продвинутые редакторы, FTP- и SSH-серверы, сетевые инструменты и средства разработки приложений. Запустив Linux без графической оболочки на смартфоне с хардварной клавиатурой (Motorola Droid, к примеру), можно достаточно комфортно всем этим пользоваться прямо на ходу без необходимости покидать сам Android. Все инструменты доступны в любой момент, а смартфон продолжает оставаться смартфоном, позволяя принимать звонки и слушать интернет-радио.

Второй аргумент за установку Linux на смартфоне - это возможность использовать его в качестве переносной рабочей станции, которую можно подключить к любому ПК и тут же получить доступ к терминалу с помощью SSH/Telnet-клиента либо клиента VNC/RDesktop. Это по определению лучше, чем флешки с установленным Linux, так как нет необходимости, во-первых, перезагружать машину, а во-вторых, гонять туда-сюда данные; результаты твоей работы будут доступны сразу после того, как отключишь смартфон от компа.

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

Как?

Перенести Linux на Android действительно просто, и главную роль здесь играет ядро Linux. Любой Linux-дистрибутив представляет собой набор приложений и библиотек, работающих поверх ядра Linux, а так как Android сам основан на почти неизмененном ядре Linux, эти приложения и библиотеки можно без каких-либо проблем запустить внутри среды Android. Достаточно лишь подыскать дистрибутив, для которого существует порт на платформу ARM (не забываем, что 99% всех Android-девайсов работают на ARM), установить его с помощью ARM-эмулятора на виртуальный жесткий диск (то есть в файл), скинуть этот файл на SD-карту устройства, открыть терминал, смонтировать образ в качестве loopback-устройства и сделать chroot внутрь. Все! Это так же просто, как запуск FTP-сервера в chroot-окружении - простой и проверенный десятилетиями метод.

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

Проверка работы необходимых модулей

Имей в виду, что поддержка loopback-устройств и файловых систем ext2/ext3, необходимых для подключения образа, имеется далеко не во всех ядрах Linux, установленных на смартфонах под управлением Android. Проверить наличие поддержки можно с помощью команды lsmod | grep -e loop -e ext2.

Энтузиасты вышли из этой ситуации, используя простой метод «удаленного» подключения к рабочему столу с помощью любого доступного для Android VNC-клиента. Внутри chroot-окружения запускается X-сервер Xvnc, и все приложения работают под его управлением. Пользователю остается лишь установить VNC-клиент, вбить локальный адрес - и вуаля, на экране появляется полноценный рабочий стол.

Единственное узкое место при использовании удаленного рабочего стола - это производительность. Даже работая локально, VNC не может обеспечить должный ее уровень, которого бы хватило для плавной прокрутки или перемещения окон без лагов. Решить эту проблему пока не удалось, проекты разработки нативного X-сервера, который бы использовал графическую подсистему Android, еще очень сыры и не могут быть использованы для запуска полноценных графических сред. Впрочем, никто не запрещает их использовать; к примеру, X Server от Darkside Technologies Pty Ltd (goo.gl/ap3uD) вполне сгодится для запуска простого софта.

Изначально Linux для Android существовал только в виде образа с уже установленной системой, а также пояснительной инструкции, как этот образ подключить и использовать. Затем появились скрипты, которые автоматизировали процесс подключения образа и запуска Linux, но и они требовали некоторой работы головой. Наконец, в последнее время появились инсталляторы, доступные в Google Play (например, goo.gl/RSA1j), в некоторой степени автоматизирующие процесс запуска дистрибутива, хотя, по сути, это все то же руководство по установке, но интерактивное, с прямыми ссылками на скачивание образов и скриптов.

Альтернативные варианты

Выше я уже упомянул о том, что дистрибутив Linux вполне может быть загружен вместо Android, благодаря чему удастся задействовать Framebuffer для прямого доступа к видеоадаптеру и существенно ускорить работу графического интерфейса. Однако делать это на смартфоне практически бессмысленно - Linux непригоден в качестве основной системы на небольших экранах, к тому же принимать звонки и пользоваться интернетом будет невозможно. А вот на планшете Linux будет выглядеть вполне достойно.

Обычно на устройство, изначально работающее под управлением Android, так называемая нативная версия Linux-дистрибутива устанавливается следующим образом. На внутреннем NAND-накопителе планшета создается дополнительный раздел, на который копируется Linux-дистрибутив. Затем загрузчик U-Boot (он применяется в большинстве планшетов) настраивается таким образом, чтобы использовать этот раздел в качестве загрузочного. В результате планшет будет автоматически загружать Linux-систему после включения питания.

Чтобы оставить возможность загрузки Android, загрузчик U-Boot перенастраивают таким образом, чтобы раздел с Linux-системой был не основным, а выполнял функцию «раздела для восстановления» (Recovery Mode), доступного с помощью включения устройства с зажатой клавишей громкости (тот самый, который используется для перепрошивки устройства и выполнения различных восстановительных операций). Таким образом удается получить устройство с двойной загрузкой: Android по умолчанию и дистрибутив Linux при загрузке в режиме восстановления. Сам Recovery Mode при этом остается доступным только с помощью специальных инструментов.

В случае если NAND-памяти оказывается недостаточно для размещения полноценной Linux-системы, ее части (обычно раздел /usr) выносят в образ или раздел на SD-карте. Кстати, ext2-раздел на карте памяти также можно использовать для установки Linux, запускаемого в chroot-окружении.

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

Практическое занятие

Как я уже говорил, для запуска под управлением Android пригодны только дистрибутивы, портированные на архитектуру ARM. Прежде всего это Ubuntu и Debian, причем первый по понятным причинам пользуется гораздо большим интересом среди роботоводов. Также можно установить Gentoo и несколько специализированных дистрибутивов, например Backtrack. Рассмотрим самый типичный случай, то есть установку Ubuntu по стандартной схеме, без использования каких-либо автоматизированных инсталляторов и прочего.


Для начала нам нужен образ жесткого диска с установленным дистрибутивом. Его можно создать самому, воспользовавшись эмулятором QEMU, однако в связи с тем, что процедура установки абсолютно стандартна и типична, описывать ее я не буду, а просто направлю тебя по адресу goo.gl/9nvBi . Здесь лежит архив с образом, на который предустановлен Ubuntu 12.04 с графическим окружением LXDE (было бы неразумно запускать Unity/Gnome на телефоне/планшете). Архив следует распаковать и положить файл ubuntu.img на карту памяти.

Далее надо смонтировать образ и сделать chroot в окружение дистрибутива. Для этого нужны права root, прошивка с поддержкой блочных loopback-устройств и установленный busybox (ищем в Маркете по запросу «busybox installer», в CyanogenMod есть по умолчанию). Последовательность действий:

  1. Открываем эмулятор терминала в Android (если нет, можно установить из Маркета Terminal Emulator) . Либо подключаем смартфон/планшет к компу и получаем доступ к терминалу с помощью adb: $ cd путь-до-Android-SDK/platform-tools $ sudo ./adb shell

    Не забываем, что режим отладки в этом случае должен быть включен: «Настройки -> Для разработчиков -> Отладка Android».

  2. Получаем права root: $ su
  3. Создаем блочное loopback-устройство, подключаем к нему образ диска и монтируем его: # mknod /dev/block/loop255 b 7 255 # mount -o remount,rw / # mkdir /mnt/ubuntu # mount -o loop,noatime -t ext2 \ /sdcard/ubuntu.img /mnt/ubuntu

    Содержимое образа должно появиться в каталоге /sdcard/ubuntu. Проверь, чтобы это было так.

  4. Подключаем все необходимые для работы дистрибутива виртуальные ФС: # mount -t proc proc /mnt/ubuntu/proc # mount -t sysfs sysfs /mnt/ubuntu/sys # mount -o bind /dev /mnt/ubuntu/dev
  5. Настраиваем так, чтобы из chroot-окружения можно было получить полноценный доступ в Сеть: # sysctl -w net.ipv4.ip_forward=1 # echo "nameserver 8.8.8.8" > /mnt/ubuntu/etc/resolv.conf # echo "nameserver 8.8.4.4" >> /mnt/ubuntu/etc/resolv.conf # echo "127.0.0.1 localhost" > /mnt/ubuntu/etc/hosts
  6. Переходим в chroot-окружение: # chroot /mnt/ubuntu

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

Теперь нам необходимо установить и запустить X-сервер Xvnc, экспортирующий дисплей и устройства ввода с использованием протокола VNC. TightVNCserver уже есть в представленном образе и даже настроен, но, чтобы ты лучше понял процесс и смог решить возникшие проблемы, я подробно опишу процесс его установки и запуска.

  1. Обновляемся и устанавливаем TightVNCserver: # apt-get update # apt-get install tightvncserver
  2. Создаем файл /root/.vnc/xstartup и пишем в него следующее: #!/bin/sh xrdb $HOME/.Xresources xsetroot -solid grey export XKL_XMODMAP_DISABLE=1 icewm & lxsession

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

  3. Запускаем Xvnc с помощью враппера vncserver с правами root: # export USER=root # vncserver -geometry 1024x800

    В результате выполнения последней команды на экран будет выведен запрос на пароль для доступа к VNC-серверу, лучше указать что-нибудь простое вроде «123». Разрешение можно установить фактически любое, однако лучше, если оно будет совпадать с физическим разрешением экрана устройства.

  4. Устанавливаем на смартфон приложение AndroidVNC, запускаем его, указываем IP-адрес и порт 5901, подключаемся. На экране должен появиться рабочий стол LXDE.

Чтобы не заморачиваться с ручным вводом всех команд, можно использовать скрипт ubuntu.sh, расположенный здесь: goo.gl/xSpK4 . Просто положи его и образ ubuntu.img в каталог ubuntu на SD-карте и запусти скрипт командой sh ubuntu.sh, а через 5–10 секунд подключись к рабочему столу с помощью AndroidVNC. Имей в виду, что скрипт монтирует образ к каталогу /data/local/mnt.


Установка Gentoo на ext2-раздел

Итак, мы установили Ubuntu с помощью образа с файловой системой и шаманств с loopback-устройством и chroot-окружением. Сделать это оказалось несложно, а с применением скриптов так и вообще очень легко, но что, если пойти дальше и установить более хардкорный дистрибутив, и не с использованием образов, а на выделенный ext2-раздел на карте памяти? Так мы сможем решить проблему некоторых прошивок и ядер без поддержки loopback-устройств и к тому же сможем насладиться нормальным дистрибутивом, установленным по всем правилам.


Возьмем в качестве подопытной системы Gentoo. Чтобы установить его на ext2-раздел, нам понадобится карта памяти объемом не меньше 2 Гб и рутованный смартфон с установленным busybox. Последовательность действий следующая.

  1. Делаем бэкап данных с карты памяти и создаем на ней дополнительный раздел, объемом не меньше двух гигабайт . Сделать это можно с помощью любой программы для разбивки дисков, однако имей в виду, что если ты хочешь продолжать использовать SD-карту по прямому назначению, то создавать FAT32-раздел следует в начале карты, так, чтобы он стал первым, а дополнительный раздел для установки дистрибутива должен быть вторым.
  2. Форматируем разделы SD-карты: $ sudo mkfs.vfat /dev/sdc1 $ sudo mkfs.ext2 /dev/sdc2
  3. Берем телефон, заходим в «Настройки -> О телефоне» и смотрим, какой установлен процессор. Далее переходим на страницу goo.gl/PRfux и выкачиваем stage3 для нужной архитектуры, например stage3 для ARM v7 лежит в каталоге current-stage3-armv7a.
  4. Монтируем ext2-раздел карты памяти на компе и распаковываем в него содержимое полученного архива: $ sudo mount /dev/sdc2 /mnt $ sudo tar -xxpf stage3-*.bz2 -C /mnt

    Сразу редактируем конфиги и все, что нужно, по вкусу, включая правку /etc/resolv.conf по образцу из предыдущего раздела.

  5. Запускаем эмулятор терминала (или выполняем «adb shell»), монтируем все необходимое и переходим в chroot (почти так же, как в случае с Ubuntu): # mount -o remount,rw / # mkdir /mnt/gentoo # mount /dev/block/mmcblk0p2 /mnt/gentoo # mount -t proc proc /mnt/ubuntu/proc # mount -t sysfs sysfs /mnt/ubuntu/sys # mount -o bind /dev /mnt/ubuntu/dev # sysctl -w net.ipv4.ip_forward=1 # chroot /mnt/gentoo

Доступ к рабочему столу производится таким же способом, как в Ubuntu, за исключением того, что теперь прямо на телефоне придется собрать кучу софта:). Впрочем, можно настроить среду для кросс-компиляции на компе, но это уже тема для отдельной статьи.


Нативная установка

Запустив Ubuntu с использованием VNC-сервера, ты заметишь неторопливость его работы, которая связана с издержками протокола VNC на передачу картинки «по сети». Чтобы избежать этой проблемы, можно установить Ubuntu в качестве основной системы рядом с Android, так, чтобы она смогла использовать видеоадаптер напрямую. К сожалению, универсального способа сделать это не существует. Каждое устройство по-своему уникально, включая различные таблицы разделов NAND-памяти, на которую производится установка, различные устройства и драйверы для их работы.


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

  • Отдельный или основной NAND-раздел. Linux-дистрибутив может быть установлен как в заблаговременно созданный раздел в NAND-памяти, так и в основной загрузочный раздел. В первом случае разработчик прошивки обычно оставляет возможность загрузки Android с помощью специального скрипта либо через загрузку Linux-дистрибутива в режиме восстановления, во втором он будет установлен вместо Android и для возвращения возможности загрузки робота придется заново перепрошивать устройство.
  • Возможность двойной загрузки. Если Linux-дистрибутив будет установлен на отдельный раздел, разработчик может оставить возможность загрузки Android. Однако стоит сразу обратить внимание, как эта загрузка происходит: с помощью режима восстановления либо скрипта, запускаемого с обычного компа. Все-таки второй способ будет неудобен в дороге.
  • Поддержка оборудования. Оригинальное Linux-ядро Android-прошивки уже включает в себя все необходимые драйверы, которые могут понадобиться для работы полноценной Linux-системы, однако далеко не во всех Linux-прошивках все заведется само собой. Часто возникают проблемы с Wi-Fi-адаптером и сенсорным экраном, который неадекватно реагирует на прикосновения. Поэтому перед установкой прошивки стоит внимательно прочитать о возможных осложнениях.

В любом случае будь готов к тому, что во время установки Linux-дистрибутива все твои данные будут уничтожены. Без этого никак.

Что дальше

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

Здраствуйте у меня есть мини-PC ug 802, как я могу установить на него линукс? teltar

Это очень интересная для меня тема, друзья, поскольку я профессионально занимаюсь администрированием Linux-серверов. На серверах это интересно, но для меня уже буднично и обыденно. А вот установка дистрибутивов Linux на устройства с ARM-архитектурой — это интересней на порядок.

В чем разница между компьютером и смартфоном или планшетом?

На самом концептуально разница небольшая — и мобильные и десктопные устройства, или даже серверы сделаны по одним и тем же принципам. Однако, для мобильных устройств используют иную архитектуру процессора. CPU для десктопов разработаны на архитектурах x86 или amd64. А в большинстве мобильных устройств установлен процессор на ARM-архитектуре . Исторически, это связано с тем, что такие процессоры имеют значительно меньшее энергопотребление, что есть жизненная необходимость для мобильных устройств.

Какие ОС можно установить на мобильные устройства?

Так вот, все программы, в том числе и операционная система, должны быть разработаны специально под эту архитектуру, для того чтобы работать на этом оборудовании. Посему, обычные версии Linux, устанавлеваемые на десктопы или серверы здесь не подойдут. К счастью, есть множество дистрибутивов и версий для этой архитектуры. Начиная с пресловутой Android, которой оснащены большинство смартфонов и заканчивая экзотическими дистрибутивами, вроде специализированного Backtrack (ныне Kali Linux). Но больший интерес, конечно, представляют какие-то более известные дистрибутивы.

Что такое Android?

Андроид — это операционная система на основе Linux , разработанная корпорацией Google для мобильных устройств. Самая популярная в мире мобильная операционная система. Следует понимать, что на самом деле LInux — это лишь ядро операционной системы. А на основе его построено множество операционных систем и Андроид — лишь одна из них.

Ядро — базовый функционал, который позволяет использовать все устройства и опции аппаратной платформы — то есть драйвера и управление устройствами. Также в ядро включены некоторые базовые программы и утилиты командной строки. Дело в том, что в семействе Linux (именно в этом значении чаще всего подразумевается — семейство операционных систем на этом ядре, а не само ядро) — графическая оболочка это отдельная часть, свой уровень абстракции.

И минимальная конфигурация этих ОС — именно без графической оболочки, лишь текстовый интерфейс командной строки. Это позволяет встраивать эти ОС в самые необычные места. Например в сетевое оборудование, станки, компьютеры других сложных устройств, например в самолетах и автомобилях. Даже в вашей стиральной машине и микроволновке может быть установлено нечто подобное:)

Это android-девайс. Соответственно, в нём по-умолчанию должна быть установлена Android. Которая, фактически, и есть Linux. Но с некоторыми серьёзными ограничениями. Установка какого-нибудь другого Linux, может значительно расширить возможности мобильного устройства. Возможности использования становятся фактически безграничны. Ну представьте себе, использовать мобильник в качестве сервера! Множество инструментов становятся доступны. Если это планшет, подключив к нему периферийные устройства через OTG-кабель, можно использовать его как полноценный компьютер! Зачем? Это уже другой вопрос. Надеюсь, наш читатель поделится своими затеями в комментариях.

Как установить Linux на android-устройство?

Итак, установка.

Вариантов два — можно сделать полноценную установку, что называется — на «железо». Это фактически перепрошивка устройства. При этом, мы теряем нативный фунцкионал устройства, предусмотренный производителем. А это может быть совсем не тем, чего нам хотелось. К примеру, мини-компьютер UG 802, за который интересуется наш читатель — это устройство, предназначенное для расширения фунциональности телевизоров. Ибо его можно вставить прямо в HDMI-порт любого телевизора, превратив его в Smart.

К счастью, есть второй способ установки Linux — прямо внутри основной операционной системы устройства, в данном случае Android. Это позволяет запустить так называемое chroot-окружение внутри Android. При этом вы получите две родственных операционных системы, работающих параллельно на одном ядре — андроидовском. И между ними можно будет переключаться.

Такой подход удобен для смартфонов и планшетов, но может не подойти для UG 802. В случае с ним, может понадобиться перепрошивка нужной операционной системы. А это уже некоторый риск, что можно испортить устройство.

К сожалению, я не имею опыта подобных экспериментов. Но информации в сети по этому поводу достаточно. Изучайте, пробуйте устанавливать.

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

Кто такие хакеры?

Да-да, не удивляйтесь, это именно хакинг — нестандартное вмешательство в работу и устройство систем и программ, их изменение и расширение функциональности. Именно таково исконное значение этого слова. А хакер — это вовсе не взломщик и не писатель вирусов, как большинство людей привыкли думать. Это в первую очередь исследователь. Да, он ломает системы, вскрывает то, что не было задумано быть вскрытым, но делает это с целью познать, а не навредить.

https://xakep.ru/2012/10/22/android-tablet-linux-install/ — статья об установке Linux на смартфоны в старейшем журнале, который как раз является отражением сути хакерства.

https://habrahabr.ru/post/221543/ — хабр, не менее старый и даже более известный ресурс. А статья здесь свежее, и очень подробно описывает опыт установки Arch Linux поверх Android, в виде chroot-окружения.

https://geektimes.ru/post/44220/ — гиктаймс — сайт от создателей хабра, и на нем нашелся подробный мануал по установке Debian поверх Android на смартфон. Статья хоть и очень старая, но затрагивает фундаментальные вещи, которые необходимо понимать прежде чем приступать к такой операции. Это если и не поможет вам установить, но поможет набраться знаний, без которых невозможно дальнейшее развитие темы и решение проблемы. А изучив такие статьи, вы будете чувствовать себя уже более уверенно и сможете искать информацию по теме уже более точечно, на конкретные вопросы, которые нужно будет решать при установке.

К примеру, наверняка, на вышеупомянутых сайтах эти статьи по теме не единственные. Можно всегда попробовать поискать ещё статьи об этом на таких специализированных ресурсах. Я нашел и просмотрел пару топиков об установке linux на мобильные устройства на 4pda.ru вот так , например

На этом у меня всё на сегодня. Но всегда может статься, что мне захочется продолжения банкета данной темы:)

При возникновении проблем (а они возникнут с долей вероятности 99% :)) можете также задавать вопросы здесь, будем собирать информацию, решать проблемы вместе, мне это тоже очень интересно.

Linuxsoid! мой друг Юрий Герук

Вторая часть о том как установить Ubuntu на ваш Android смартфон или планшет на данной платформе.

Доброго времени суток пользователи сайта Linuxsoid! Вчера была опубликована статья, с установкой операционной системой Linux Ubuntu для смартфона или планшета, это был только первый способ как я смог это сделать. Хотелось еще раз сказать, что я не удалял систему Androd, а запустил вторую поверх другой. Я бы не стал дальше интересоваться или даже пытаться установить ее себе, пока мой друг Юрий Герук мне подал хорошую идею, по установке системы и только после этого мне стало интересно и я начал свою работу.

Предупреждение! Администрация сайта и автор материала не несет ни какой ответственности, если входе выполнении описанных манипуляций ваше устройство перестанет работать! Все что написано в инструкции, вы делаете на свой страх и риск. Возможно произойдут сбои, как это было и у меня я потом долго не мог включить свой смартфон. Спешить не куда, делаем все аккуратно читая данную инструкцию!

В первой части (Способ №1) я написал как установить систему через программу под названием Complete Linux Installer . Был рассказан полный порядок действий, при работе на данной программе, что скачивать как устанавливать и все прочие. Сегодня я хотел предоставить вашему вниманию второй способ (Способ № 2). Мы с вами будем производить установку Linux Ubuntu на устройство под управлением Androd через мобильное приложение под названием Linux Deploy . Приложение так же доступно для вас в бесплатном доступе на Google Play Market, где скачать его может абсолютно любой желающий пользователь.

В этом приложении вам не нужно производить регистрацию и активацию, после установки его к себе на устройство его будет необходимо запустить и снова закрыть. Что нам потребуется для запуска системы через Linux Deploy . ?

  1. Смартфон и компьютер с выходом интернет (желательно использовать Wi-Fi) чем лучше соединение, тем быстрее произойдет загрузка.
  2. USB кабель (для подключения вашего устройства к настольному компьютеру или ноутбуку)
  3. Аккумулятор желательно заряженный на 100%, но не меньше 50%
  • Приступаем к выполнению нашего задания! Чтобы не получилось очень длинно,я буду пропускать моменты, которые указывались в способе №1 . Первым и простым шагом для нас это будет получение рут прав себе на устройстве, в предыдущей статье я показывал подробно как это делается.
  • У кого Root права получены может приступать к следующему шагу, а именно включить на своем устройстве отладку по USB (в прошлой статье тоже написано как этого добиться). Берем в руки наш смартфон и переходим в официальный магазин Play Market, где нам предстоит скачать приложение с названием Linux Deploy . Если у вас настроен аккаунт то вы сможете перейти по ссылке с названием программы и установить приложение используя компьютер. После установки открываем приложение и смотрим далее!
  • Как видим на скриншоте выше, нам показана программа с простым и не сложным интерфейсом. При первом запуске программа показывает нам небольшую справку, перечень того чтобы начать пользоваться этой программой. После выполнения этих требований приступаем к настройке. Чтобы настроить нашу программу необходимо перевести ее на Русский язык (делаем у кого автоматом не перевелась программа) Ставим Русский язык и галочку напротив пункта не отключать экран.

Смотрим как показано на рисунке ниже:

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

  • Создаем новый профиль для нашей новой учетной записи Linux. Для этого необходимо вернуться на главный экран программы, да именно на тот, в котором изображена справка дальнейших действий и нажимаем на шапку программы (где нарисован пингвин). После этого вас автоматически перекинет в новое окно, где от вас требуется нажать на плюсик и создать профиль. Как подражатель примера я создал профиль с названием Linuxsoid.com . Вы можете назвать его как угодно!
  • Когда написали имя профиля нажимаем кнопку ОК. После этого просто выбираем нужный профиль.
  • После этого всего я сворачиваю лавочку и иду спать а вы как хотите дальше сами, конечно же я пошутил! Сворачиваем приложение и возвращаемся в Play Market и качаем Es- проводник (у кого стоит скачивать повторно не надо да и у вас не получиться:-D) . Открываем проводник и создаем папочку под названием Ubuntu. После того как создадите папку, нужно узнать путь к ней. У меня это будет карта памяти как у вас я не знаю.
  • При создании нажимаем на желтый плюсик, после того у вас появиться всплывающие окно, где выпираем создание папки и плавно перетекает в наименовании папки (лучше писать на английском языке, не стоит испытывать судьбу своего смартфона, одно скажу к хорошему это не приведет проверенно на собственном опыте). По окончанию нажимаю на лог истории и смотрю путь к нашей с вами папки. У меня получилось так: /sdcard/ubuntu/.

Первоначальная настройки программа прошла успешно? Тогда переходим к скачиванию и установки дистрибутива к себе на устройства, в новь созданную папку. Для этого нужно открыть приложение Linux Deploy и нажать, как бы на стрелочку похожею на загрузку, где вас должно перекинуть на новое окно с нужной для нас информацией. Что мы там видим? Программа предлагает нам установить систему, но для этого нужно ее выбрать. В этом окне нажимаем на дистрибутив и перед вами откроется все доступный выбор систем (Которые возможно пойдут на вашем устройстве). Я выбираю Linux Ubuntu. После того как выбрал нажимаю на установить и у вас должна начаться установка (загрузка), она занимает по времени около одного часа. поэтому лучше запитать смартфон к зарядке!

  • По окончанию установки нажимаем на кнопку старт и у вас должно произойти подключение к нужным серверам. Прелесть этого приложения в том, что ему не надо дополнительно прописывать терминал и давать команды приложение автоматически будет прописывать нужные команды. По окончанию вы увидите как показано на рисунке! Это в том случае если у вас прошло все как по маслу и не вылезли другие ошибки.
  • После таких надписей необходимо скачать и установить себе на устройство дополнительно приложение под названием VNCViewer как и в первом способе по установке. В сервере создаем новое подключение где адрес пишем localhots а в имя указываем любое и нажимаем подключиться. Приложение будет подключаться и если получиться спросит у вас пароль! Пароль на всех серверах всегда одинаковый (changeme) ну если вы подключаетесь через компьютер пароль будет другой я его не могу вам сказать так как я его не знаю.

По окончанию всего этого у вас должно получиться примерно так:

На этом все если возникнут проблемы пишите их в комментариях поможем вам их устранить по мере возможности. Материал подготовлен Александром Макаренков для сайта Linuxsoid.com.

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

Linux или не Linux?

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

Так, несмотря на наличие в Android стандартной библиотеки libc и других, их реализация в большинстве случаев несовместима с библиотеками от проекта GNU и сильно урезана по функционалу. По этой причине Linux-софт нужно как минимум пересобирать специально под Android и ARM-процессор, а во многих случаях еще и патчить, добавляя функционал, отсутствующий в библиотеках.

BotBrew: список поддерживаемых устройств

BotBrew был протестирован на следующих устройствах: Barnes & Noble NOOK Color, LG P970 Optimus Black, Huawei Ascend M860, HTC Desire, HTC Evo 4G, HTC Evo 3D, HTC Inspire 4G, HTC Droid Eris, HTC Hero, Samsung Galaxy Nexus, Samsung Galaxy S2 (GT-I9100), Samsung Galaxy Y (GT-S5360), Motorola Atrix 4G, Motorola Droid/Milestone, Sony Ericsson Xperia X8, Asus EeePad Transformer TF101.

Система безопасности Android, обрезающая приложения в привилегиях по полной программе и не позволяющая им выходить за рамки собственного каталога, также серьезно препятствует работе стандартного Linux-софта. Поэтому часто требуется получать права root, которые эти ограничения снимают. Отсутствие менеджера пакетов, который бы позволял устанавливать обычный Linux-софт, а не только Java-приложения, вынуждает разработчиков писать приложения, нужные только для того, чтобы устанавливать другие приложения. Так появляются все эти кастомные инсталляторы.

Ну и довершает картину то, что в Android просто нет многих стандартных компонентов Linux, включая, например, даже такие неотъемлемые, как графический стек X Window или библиотека GTK+. Кое-какие попытки все это сюда принести, конечно, предпринимаются, но дальше полурабочих альфа-версий дело не двигается.

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

Гораздо более интересным выглядит проект BotBrew - в его рамках разрабатывается вполне обычный для Linux-систем менеджер пакетов и репозиторий, с помощью которого можно устанавливать Linux-софт в отдельно взятый каталог внутри Android. Также в свое время было придумано множество различных скриптов, которые позволяют легко и без лишних проблем собирать пригодный для работы внутри Android Linux-софт на большом брате. Этим двум проектам и будет посвящена оставшаяся часть статьи.

BotBrew

Проект BotBrew призван решить многие проблемы с установкой Linux-софта, которые только могут возникнуть у пользователя, и подготовить систему Android к принятию инородных для нее приложений. По сути, система состоит из четырех компонентов:
  • репозиторий с прекомпилированными для Android приложениями, используя который можно установить многие Linux-приложения с помощью одной команды;
  • менеджер пакетов, в качестве которого используется легковесный Opkg или dpkg вместе с apt-get в экспериментальной версии BotBrew Bazil;
  • менеджер процессов runit, необходимый для того, чтобы правильно запускать и поддерживать работу демонов, если таковые будут установлены;
  • собственная система сборки, которая содержит в себе все инструменты, необходимые для кросс-компиляции приложений с помощью любого настольного Linux-дистрибутива.
Для работы это чудо программистской мысли требует всего ничего: права root и немного свободного пространства во внутренней памяти смартфона или на карте памяти. Причем первый вариант предпочтительнее, так как в случае с SD файлы будут свалены на виртуальный диск, работа с которым поддерживается далеко не всеми ядрами.


Начальная инициализация

На данный момент классическая версия BotBrew, использующая собственный репозиторий, позволяет устанавливать такой софт, как dcron, GCC, Git, SSH-сервер dropbear, консольный браузер Lynx, сканер безопасности Nmap, инструмент бэкапа rsync, редактор Vim, веб-сервер lighttpd, скриптовые языки Python и Ruby, а также несколько десятков других пакетов. Устанавливается это все, кстати говоря, в выделенный каталог во внутренней памяти смартфона/планшета и никак не захламляет основную систему. Другими словами, избавиться от BotBrew и всего, что ты установил, можно будет, просто удалив один каталог.

Ставим софт

Итак, как же использовать BotBrew для установки Linux-софта? Для начала нам понадобится пакет с самой программой. Он есть в Google Play (отмечу, что нужен BotBrew root, а не экспериментальный Bazil) и весит меньше мегабайта. После установки запускаем и нажимаем кнопку «Proceed» внизу экрана, чтобы софтина выкачала все необходимые для ее работы компоненты, такие как консольный менеджер пакетов, и другие утилиты (в терминах Debian Linux - bootstrap). Весят они всего несколько мегабайт, поэтому ждать придется недолго. По окончании установки BotBrew выведет на экран окно с официальной интернет-страницей проекта, которое можно смело закрывать.

Теперь на экране ты должен увидеть список пакетов, доступных к установке. Их довольно много, но графических приложений по описанным выше причинам ты среди них не найдешь. Зато есть разномастные серверы, компиляторы и интерпретаторы, так что всем, кто хочет серьезно «поиграться» со смартфоном, будет где развернуться. Для установки пакета достаточно тапнуть по его имени и на следующем экране, содержащем информацию о приложении, нажать кнопку «Install».

Танцы с бубнами

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

Wget http://repo.botbrew.com/anise/bootstrap/install.sh -O - | su
Если и это не помогло, можно попробовать удалить все установки («Remove BotBrew» в настройках) и затем попробовать запустить эту команду.

После этого пакет появится на вкладке «Installed», однако никакой кнопки «Run» или чего-то подобного ты не увидишь. Приложение придется самостоятельно запускать из консоли, что, впрочем, логично. Само приложение устанавливается внутрь каталоговой структуры /data/botbrew, в котором «эмулируется» реальное окружение Linux-дистрибутива с каталогами /etc, /usr и другими. А чтобы не мучить пользователей необходимостью набирать полный путь до команды, разработчики BotBrew предусмотрели одноименную команду-враппер. Чтобы с ее помощью запустить, например, установленный консольный браузер Lynx, следует набрать такую команду:

$ botbrew lynx http://xakep.ru
Как вариант - каталог /data/botbrew/bin можно добавить в переменную окружения PATH, но это придется делать после каждого запуска терминала:

$ export PATH="$PATH:/data/botbrew/bin"
С демонами и разными сетевыми сервисами, кстати, дела обстоят намного лучше. После старта демоны сразу будут запущены, а управлять их включением можно через графический интерфейс, доступный по нажатию на кнопку «Play» в нижней части интерфейса BotBrew. Некоторые приложения могут потребовать создания дополнительных пользователей и изменения их параметров, это можно сделать так же, как в обычной Linux-системе:

  1. Создание пользователя:
    $ botbrew adduser vasya
  2. Открытие пользователю доступа в интернет:
    $ botbrew addgroup vasya inet
  3. Переключение BotBrew на другого пользователя:
    $ botbrew su vasya
Обрати внимание, что все эти изменения будут касаться только виртуального окружения BotBrew и никак не отразятся на основной системе. Консоль можно использовать также для установки приложений в обход графического интерфейса. Для этого следует использовать консольный менеджер пакетов Opkg, синтаксис команд которого полностью совместим в apt-get:

$ botbrew opkg install dropbear
Обратная операция:

$ botbrew opkg remove dropbear
Чтобы оставаться «на острие прогресса», репозиторий BotBrew нужно время от времени обновлять, нажав на соответствующую кнопку в графическом интерфейсе (ее ни с чем не спутаешь). Новые версии пакетов будут отображаться на вкладке «Upgradable». Достаточно тапнуть по его имени и нажать «Upgrade».

BotBrew Basil

В маркете можно найти также приложение под названием BotBrew Basil, помеченное как экспериментальное. По сути, это все тот же BotBrew, но с одним весьма важным отличием. Вместо собственных репозиториев и менеджера пакетов Opkg он использует ARM-репозитории Debian Linux и менеджер пакетов apt-get. Это значит, что количество софта, которое можно установить с помощью «бразильской версии» приложения, намного больше. В десятки раз больше.

Кроме использования дебиановских репозиториев, Basil отличается также слегка измененным интерфейсом. Например, сразу после запуска он предлагает выбрать каталог установки. По умолчанию используется /data/botbrew-basil, что, на мой взгляд, вполне логично, однако ты можешь выбрать любой другой, в том числе на ext2-разделе карты памяти (FAT не подойдет).

Второе важное отличие - это возможность выбрать способ использования приложения, которая появляется сразу после нажатия «Proceed». Вариантов здесь четыре:

  1. Use BotBrew on the command line - по сути, аналог установки в стиле обычного BotBrew.
  2. Use the dpkg/APT system - установка вместе с apt-get и репозиториями Debian. Рекомендуемый вариант установки.
  3. Run Python programs - аналог первого варианта с автоматической установкой Python.
  4. Install a minimal Debian - минималистичная установка Debian.
Поясню второй и четвертый пункты. Первый BotBrew и первый пункт в этом списке делают не что иное, как установку минималистичной Linux-системы (состоящую всего из нескольких команд и библиотек), внутри которой как раз и происходит запуск Linux-софта. Однако apt-get, в отличие от минималистичного Opkg, требует более-менее полноценной установки Linux. Поэтому, выбрав второй пункт, ты получишь у себя на смартфоне этакий микро-Linux. А если мы можем установить микроверсию, почему бы не установить более-менее полноценный дистрибутив. Для этого и существует четвертый пункт.

После bootstrap’а BotBrew Basil на экране появится все тот же интерфейс управления установкой приложений, знакомый нам по классической версии приложения, а в системе появится команда botbrew2, с помощью которой можно запускать софт. Каких-то существенных отличий в управлении здесь нет, кроме разве что команды apt-get вместо opkg и возможности подключения дополнительных репозиториев (в том числе репозитория первого BotBrew) прямо через интерфейс установки приложений.

Берем дело в свои руки

Прекомпилированные приложения и репозитории с готовыми пакетами - это прекрасно, но что, если необходимого приложения нет среди доступных для установки? Ведь даже тот же BotBrew Basil, позволяющий подключать репозитории Debian с огромным количеством софта, в силу своего экспериментального характера заработает далеко не на каждом смартфоне.

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

Тем не менее мы можем воспользоваться наработками других людей, чтобы автоматизировать процесс сборки софта. Одно из наиболее развитых и интересных решений из этой области - набор скриптов SCRIPTSET , разработанный пользователем smitna с XDA Developers. Он позволяет буквально в пару команд собрать множество самых разных приложений, в числе которых htop, ImageMagick, iptables, ELinks, Screen, mc, node.js, Samba, strace, QEMU, Parted, SANE (его можно использовать для прямой печати на принтере с телефона!) и множество других. Скрипт сам выкачает кросс-компилятор, все необходимые зависимости и приложения, наложит патчи, где это необходимо, и сгенерирует готовый для распаковки на телефон архив.

SCRIPTSET работает только в Linux, но, если у тебя Windows, ты можешь установить Ubuntu в виртуальной машине. Далее следует открыть терминал и установить необходимые для сборки кросс-компилятора инструменты:

$ sudo apt-get install build-essential cmake autoconf2.13 scons
После этого можно получить сам SCRIPTSET и распаковать его:

$ cd ~ $ wget http://goo.gl/zvnom -O scriptset-2.6.zip $ unzip scriptset-2.6.zip
В результате распаковки мы получим… еще один архив: scriptset-2.6.tar.bz2. Но и это еще не все, архив запакован без традиционного для tar корневого каталога, поэтому его необходимо создать самостоятельно. И уже в него производить распаковку:

$ mkdir scriptset $ cd scriptset $ tar -xjf ../scriptset-2.6.tar.bz2

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

$ chmod 755 *.sh

# vi ~/scriptset/configuration.conf // Каталог установки приложений на смартфоне TARGET_SYSROOT="/data/sysroot" // Целевой процессор TARGET_MARCH="armv7-a" TARGET_MTUNE="cortex-a9" TARGET_MFPU="neon" TARGET_MFLOAT="softfp"

Этого будет достаточно для корректной сборки любого приложения; целевым процессором будет стандартный ARMv7 с дополнительным набором инструкций NEON. Такой установлен в любом смартфоне, выпущенном за последние три-четыре года. Каталог /data/sysroot будет использован для установки приложений на смартфоне, однако, как это ни странно, его придется также создать и на настольной машине:

$ sudo mkdir -p /data/sysroot $ sudo chown user:users /data/sysroot $ sudo chmod 777 /data/sysroot
Как объясняет автор скриптов, такое действие необходимо потому, что пути для ключевых каталогов в некоторые приложения вшиваются на этапе сборки. Поэтому, если бы мы собрали приложение, используя в качестве корневого текущий и любой другой каталог, оно бы просто не заработало на смартфоне из-за различия в путях. Я уверен, что корректнее было бы решить эту проблему с помощью chroot, но проще и быстрее создать нужный каталог, а по окончании работ - удалить его.

Далее мы должны указать список приложений, которые планируем собирать. Для этого открываем файл package_selection.conf и меняем no на yes в нужных опциях. Например, чтобы собрать bash, ImageMagick и Screen, нужно поменять три следующих строки:

# vi ~/scriptset/package_selection.conf BASH=yes IMAGEMAGICK=yes SCREEN=yes
Имей в виду, что настройки, находящиеся между строками # ALWAYS NEEDED, менять нельзя. Эти приложения и библиотеки нужны всегда, и без них другие приложения просто не собираются. Теперь можно скомпилировать приложения. Для этого достаточно запустить скрипт build.sh без аргументов:

$ ./build.sh
Если все необходимые пакеты были установлены и компилятор в ходе сборки не выдал никаких ошибок, в результате сборки в текущем каталоге появятся два архива: cs-sysroot.tar.bz2 и android-mysysroot.tar.bz2. Первый - это окружение, необходимое для запуска приложений, созданное кросс-компилятором, а второе - сам набор приложений. Оба этих архива необходимо скинуть на карту памяти смартфона, а затем, запустив на нем эмулятор терминала или подключившись по ADB, выполнить две команды:

$ tar xjf /sdcard/cs-sysroot.tar.bz2 $ tar xjf /sdcard/android-mysysroot.tar.bz2
В результате во внутренней памяти смартфона появится каталог /data/sysroot, в котором и будут размещены приложения. Запускать их следует из того же терминала, указывая полный путь. Например:

$ /data/sysroot/usr/bin/bash
Ну или после запуска терминала добавить /data/sysroot/usr/bin в PATH:

$ export PATH="$PATH:/data/sysroot/usr/bin"

Выводы

Несмотря на довольно серьезные различия между Android и типичным Linux-дистрибутивом, установить консольные Linux-приложения на смартфон не так уж и сложно. К сожалению, о графических приложениях речи пока не идет, но проекты портирования библиотеки Qt и графического сервера Wayland в Android уже есть, и в скором времени, надеюсь, мы получим рабочее решение.


Впервые опубликовано в журнале «Хакер» от 08/2013.