Как запустить приложение linux на андроид
Полноценная операционная система Linux на Android смартфоне может быть очень полезной. Во-первых, можно запустить любую необходимую программу linux, или даже сервис. Вы можете запустить веб-сервер, сервер баз данных или все что захотите. Во-вторых, если у вас планшет с большим расширением экрана, то с помощью клавиатуры и мыши его можно превратить в полноценную рабочую станцию. А учитывая, что мы будем запускать Linux без эмулятора, то получим отличную производительность для игр и просмотра видео.
Операционная система Android основана на ядре Linux, поэтому запуск Linux на Android смартфоне возможен, и даже не так сложен как кажется. Полностью заменить Android на Linux не получится из-за особенностей ARM загрузчика и большого разнообразия драйверов устройств, которые поддерживаются только ядрами производителей. Можно разве что установить специально адаптированную Ubuntu Phone, но это уже совсем другая история. Запускать Linux в эмуляторе мы тоже не будем, мы возьмем ARM версию дистрибутива Linux и запустим его в chroot контейнере уже работающего ядра Android.
Нам понадобиться
- Смартфон или планшет на базе ОС Android с ROOT правами;
- Программа автоматического развертывания Linux - Linux Deploy;
- BusyBox;
- SSH клиент - ConnectBot;
- X Сервер для Android - XSDL Server;
Весь перечисленный софт можно скачать и установить с Google Play или форума 4pda. Далее, я буду предполагать что на вашем устройстве уже есть Root права. Начнем запуск linux на android.
Подготовка смартфона
Сначала устанавливаем BusyBox. Зайдите на страницу программы в Google Play и нажмите установить. Когда программа установится, нужно ее запустить и еще раз нажать кнопку install для распаковки всех необходимых компонентов:
Остальные программы устанавливаются стандартным способом из Google Play.
Развертывание Linux на Android
Устанавливать Linux будем с помощью приложения Linux Deploy. Запустите приложение, откройте главное меню программы и выберите пункт Настройки:
Здесь желательно поставить галочки не отключать экран и не отключать wifi, чтобы эти функции работали во пока вы не выключите Linux:
Затем пролистайте вниз и коснитесь пункта обновить окружение. Программе необходимо скачать несколько мегабайт окружения для нормальной работы:
Больше ничего в настройках менять не нужно, Переходим к установке Linux. В главном окне коснитесь значка с логотипом загрузки:
Перед тем как нажать кнопку установить необходимо настроить параметры будущей системы, сначала выберите дистрибутив и версию системы, например, Ubuntu Wily, архитектуру, можно оставить как есть armhf:
Дальше выбираем путь образа диска куда будет установлена система, мы будем устанавливать способ в файл. По умолчанию размер образа - 512 Мб, рекомендую взять с запасом если планируете устанавливать графическую оболочку и дополнительные программы. Для LXDE, XFCE понадобиться еще 500 Мб, а для KDE и Gnome - 1,3 Гигабайт:
Потом меняем имя пользователя и пароль, локаль выбираем ru_RU.UTF-8 для поддержки русского языка:
Выбираем окружение рабочего стола если нужно и дополнительные компоненты. Окружение у нас будет LXDE, дополнительные компоненты оставляем только окружение рабочего стола и ssh сервер. Х сервер нам не нужен, так как будем использовать XSDL Server.
Потом ставим галочку напротив GUI:
Графическая подсистема - Х сервер:
В параметрах GUI Номер дисплея - 0, Адрес Х-сервера - ваш адрес в Wifi сети или 127.0.0.1. Галочку XSDL Server не ставим, так как при каждом запуске Х сервер запускается с новым номером дисплея, таким образом, если с первого раза система не запустится номер дисплея уже будет не соответствовать тому что мы указали в настройках и нужно будет перезагружать устройство:
Дальше можете возвращаться в самый верх и нажимать кнопку установить. Установка linux на android займет около полчаса.
Запуск Linux
Осталось запустить linux на смартфоне. Сначала запускаем XSDL Server, выбираем расширение экрана:
Затем размер шрифта:
Переходим в Linux Deploy и нажимаем кнопку старт:
Возвращаемся в XSDL Server и ждем пока загрузится оболочка:
Вот и все, теперь можно работать в установленной системе, устанавливать приложения, смотреть видео и даже попытаться играть в компьютерные игры. Запуск linux программ на android - не такое уж сложное дело.
Небольшой гайд по управлению XSDL сервер:
- Чтобы открыть виртуальную клавиатуру нажмите кнопку назад.
- Для клика правой кнопкой мыши коснитесь двумя пальцами экрана.
- Отмена последнего действия - кнопка меню.
Доступ SSH доступ к Linux
Для доступа по SSH к установленной системе мы скачали ConnectBot. Откройте приложение и наберите:
Затем введите пароль, выбранный при установке системы, дальше вы окажетесь в оболочке Linux:
Решение проблем
Если во время создания образа возникает ошибка:
Making new disk image (4095 MB) . fail
dd: opening `/storage/emulated/0/linux.img': No such file or directory
Замените в пути 0 на legacy.
А если такая ошибка:
dd: opening `/storage/sdcard0/linux.img': Read-only file system
Это значит что в вашей системе используются пространства имен для различных пользователей, то есть флешка примонтирована для пользователя, но не для root'a. Поэтому откройте SuperSU и в настройках снимите галочку Создать поименное разделение пространств:
Выводы
Вот и все. вы смогли успешно запустить Linux на смартфоне. Эта система не настолько эффективна как на персональном компьютере, но тоже сильно расширяет возможности Android смартфона. Если у вас остались вопросы, спрашивайте в комментариях!
Итак, в первой части мы говорили о том какие пакеты нам нужны и как их собрать в zip файл пакета обновлений андроид.
Библиотеки портированные на андроид
Несмотря на то что android не является в полной мере POSIX-совместимой ОС, под него все же были портированы некотороые из библиотек, доступных десктопной Linux. Посмотрим, что это за библиотеки.
- SDL — удобная обертка вокруг низкоуровневых мультимедиафункций, используется в основном для разработки игр.
- FFmpeg — конвертация большинства аудио и видеоформатов.
- Qt — начиная с пятой версии, Qt доступна и под андроид.
- Unity — игровой движек.
- Ogre — обертка вокруг OpenGL для работы с 3D графикой
В общем, с точки зрения портирования приложений выбрать из чего есть.
Bash собирать с помощью тулчейна Linaro очень легко — скачиваем исходники с официального FTP и распаковываем:
Выполняем скрипт configure и собираем:
После сборки появится файл bash, который мы оперативно копируем на устройство в системный каталог /system/xbin.
Стоит дать комментарии, почему bash нужно компилировать с помощью тулчейна Linaro. В Bionic, стандартной реализации библиотеки libc в Android, отсутствуют некоторые РОSIХ-совместимые функции, используемые bash (такие, например, как mkfifo() или wctomb()). Соответственно, собрать bash с использованием этой библиотеки без танцев с бубном не выйдет.
[ad name=»Umi 600×217″]
В Linaro же, с другой стороны , используется стандартная РОSIХ- совместимая библиотека
glibc. Поскольку мы собираем bash статически, нам все равно, что используется в Android, — главное, чтобы версия glibc, с которой мы собираем, подошла к ядру. Впрочем, сегодня обратное маловероятно.
Lshw — удобная консольная утилита, позволяющая быстро собрать информацию о всем доступном железе. Компилировать ее (опять же используя Linaro) достаточно просто. Скачиваем последнюю версию, распаковываем и заменяем в фай л ах src/Makefile и src/core/Makefile компилятор С++ на компилятор от Linaro (перемен н ой СХХ нужно присвоить значение arm-unknownlinux-gnueabi-g++), добавив также опцию —static в CXXFLAGS. Затем собираем обычным образом.
Сеанс SSН-соединения с Android. Для разделения терминала используется tmux. В левой части можно увидеть вывод lshw
Это достаточно удобный консольный менеджер процессов для Linux. Для вывода информации он использует библиотеку ncurses, так что для его компиляции потребуется чуть больше времени . Создаем каталог htop, переходим в него и скачиваем ncurses:
Устанавливаем переменную $SYSROOT_ADDITIONS, запускаем configure с нужными параметрами и собираем:
Поскольку нам нет смысла включать поддержку юникода и мыши и мы не собираемся делать эту библиотеку динамической, от ключаем эти опции (а также отключаем поддерж ку языка Ada).
Скачиваем и распаковываем сам htop, предварительно перейдя на уровень выше:
Вновь переопределяем переменные окружения для сборки :
Конфигурируем и собираем:
Все бы хорошо, но после попытки запуска на устройстве вываливается ошибка «Error opening terminal: screen». Лечится это просто — достаем откуда-нибудь каталог terminfo (я его выдернул из Terminal IDE, просто потому, что он оказался под рукой) , копируем в /system/etc и выполняем в терминале на гаджете следующую команду:
После этого htop запустится без заморочек.
Htop, запущенный под Android
Tmux — это менеджер терминалов и более продвинутая альтернатива известного всем админам screen, созданная руками разработчиков OpenBSD. В случае с операционной системой Android его удобно использовать для работы с устройством через adb shell или SSH (например, ходить на TV Вох или НDМI стик под управлением Android).
Для компиляции tmux нам понадобится все та же ncurses, ее можно взять из предыдущей сборки, скопировав каталог rootdir. Помимо ncurses, потребуется библиотека libevent. Создаем каталог tmux, устанавливаем переменную $SYSROOT_ADDITIONS и скачиваем libevent и сам tmux:
Подготавливаемся к сборке tmux:
И наконец, собираем сам tmux:
После сборки и заливки исполняемого файла перед запуском tmux, помимо п еременной TERMINFO, нужно определить переменную TMPDIR — лично я использовал /data/local/tmp.
Стоит заметить , что tmux может работать только от рута, потому что права доступа не позволяют писать в вышеуказа нную папку кому попало.
[ad name=»UMI 600×313″]
Ngrep
А это крайне полезная утилита , позволяющая отлавливать пакеты с заданным паттерном (может быть нужно, например, для отладки RЕSТful-приложений). Для ее сборки п отребуется собрать еще и libpcap. Как обычно, создаем каталог, куда и скачиваем libpcap, распаковываем его и собираем:
С качиваем сам ngrep, распаковываем, собираем :
Разберем опции обоих configure. В случае с libpcap мы отключили поддержку 0-Bus по понятной причине отсутствия его в Android и указали тип захвата пакетов (поскольку компилируем мы в конечном итоге под Linux, то и тип захвата ставим соответствующий). Для ngrep же мы указали путь к заголовочным файлам libpcap и отключили понижение привилегий по причине отсутствия файла /etc/passwd в Android, куда эта функциональность смотрит.
Перехватываем пакеты, содержащие слово google, используя ngrep
LINUX DEPLOY
Компиля ция программ может занять немало времени, да и не всякое приложение можно с легкостью собрать (например, текстовый tоrrеnt-клиент rtorrent потребует сборку liЬtorrent , а эта библиотека, в свою очередь, потянет за собой Boost). И если для пары -тройки приложений это не столь критично, то в случае сборки большего количества трудозатраты становятся слишком велики.
Да и сами приложения в случае статической компоновки могут раздуваться до невообразимых размеров. Однако есть решение и для этой ситуации — Linux Deploy, который с легкостью можно найти в Google Play.
Поскольку Android построен на базе ядра Linux, а изменения в нем не настолько сильны, чтобы мешать запуску обычных РОSIХ-приложений (что и было продемонстрировано выше), существует возможность развертывания сhrооt-окружения (с пробросом соответствующих псевдофайловых систем) и установки в не м userland-чacти дистрибутивов, подде рживающих архитектуру ARM. Приложение Linux Deploy делает именно это, создавая образ и монтируя его как lоор-устройство.
Поддерживаются следующие дистрибутивы:
· Ubuntu;
· OpenSUSE;
· Fedora;
· Arch Linux;
· Gentoo;
· и, наконец, Kali Linux (его наличие, несомненно, обрадует пентестеров) .
Для входа в систему существует два метода: по SSH и через VNC. При наличии SSH-cepвepa в самом Android в Linux Deploy нужно либо его отключить, либо переопределить порт. А если использовать VNC, необходимо доустановить в Android VNС-клиент (рекомендую bVNC).
В данном контейнере можно п роизводить практически те же действия, что и в обычном настольном дистрибутиве Linux, — со скидкой на поддержи ваемую ядром функциональность. Замечу, что контейнер не изолирован от основной системы, и запуск служб в некоторых дистрибутивах не поддерживается по причине использования в них современных систем инициализации. Также стоит помнить, что приложения в контейнере нативные, — это изрядно
кушает батарею.
Заключение
В статье были описаны два (а если считать компиляцию ядра с модулями, то три) метода расширения функциональности на Android. Подведем итоги. Компиляция ядра и модулей имеет смысл только в тех случаях, когда тебе нужна низкоуровневая функциональность — будь то поддержка ФС или, допустим, модуль iptables. В современных стоковых ядрах поддержка загрузки модулей чаще всего отключена, так что для добавления функциональности всяко потребуется компиляция всего ядра.
В случае с компиляцией небольших РОSIХ-приложений можно попытаться использовать гугловский NDK, идущий с Bionic и практически несовместимый с POSIX, а можно использовать сторонний тулчейн для архитектуры ARM, в котором, как правило, есть библиотека glibc, и компилировать приложения статически. Однако следует помнить, что статически слинкованное приложение весит достаточно много, таким образом, нелишним будет еще раз подчеркнуть, что этот метод годится лишь для небольших приложений.
Для запуска крупных приложений можно использовать Linux Deploy, позволяющий развернуть на Android полноценную userland-чacть популярных дистрибутивов. Однако и у него есть недостатки. Во-первых, он изрядно кушает батарею, а во-вторых, размер образа с данной userland-чacтью не может быть больше 4 Гб, так что, если раскатал губу на кучу приложений, закатай ее обратно.
В целом же запуск РОSIХ-приложений в Android вполне возможен — что и было показано в статье. А уж каким способом ты будешь что-то делать, ты волен выбирать сам. Stay freedom.
Если вы читаете это, вы, вероятно, раньше использовали Linux и знаете, что он работает практически на любом оборудовании. Между тем, у вас в кармане телефон, и вы знаете, что он универсален. Так может ли ваш телефон Android работать под управлением Linux?
Да, оно может. Вот что вам нужно знать о запуске Linux на вашем Android смартфоне или планшете.
Подождите, разве Android уже не Linux?
Операционная система Linux действительно должна называться GNU / Linux
, Но со временем слово «Linux» стало взаимозаменяемо описывать ядро, а также различные операционные системы. К ним относятся Arch Linux, Ubuntu, Gentoo и многие другие.
Поэтому, хотя Android использует ядро Linux, он не предлагает рабочую среду. Это то, о чем думает большинство людей, когда рассматривают способы установки Linux для Android.
Зачем устанавливать Linux на устройство Android?
Так почему же вы хотите, чтобы на вашем Android-телефоне или планшете была установлена среда рабочего стола Linux?
Конечно, вы можете обнаружить, что задачи, которые вы хотите выполнять в Linux, также работают в Android. Единственным препятствием, сдерживающим вас, может быть одновременная многозадачность Android-приложения.
, К счастью, это функция, которую поддерживают многие современные устройства Android в последних версиях ОС.
Запустить Linux на телефоне или планшете Android непросто. Если вы ищете улучшенную многозадачность, попробуйте перейти на последнюю версию Android.
Может ли мой телефон или планшет работать под управлением Linux?
Чтобы запустить Linux на Android, у вас есть несколько вариантов. То, что вы должны использовать, определяется тем, является ли ваше Android-устройство рутованным или нет.
Почти во всех случаях на вашем телефоне, планшете или даже Android TV Box может работать среда рабочего стола Linux. Вы также можете установить инструмент командной строки Linux на Android. При этом не имеет значения, рутирован ли ваш телефон (разблокирован, Android-эквивалент джейлбрейка) или нет.
Доступны следующие варианты установки Linux на планшет Android или телефон:
- Чтобы установить Linux на Android без рута:
- Debian Noroot
- UserLand
- AndroNix
- Используйте Linux Deploy
- Установите Kali Linux для тестирования на проникновение
Несколько других методов предоставят вам Linux или аналогичный настольному компьютеру Android. Мы тоже на это посмотрим.
Установить Linux на Android без рута
Во-первых, мы рассмотрим три способа установки Linux на телефон или планшет Android без рутирования устройства.
Как запустить Linux на Android с помощью Debian Noroot
Преимущество Debian Noroot состоит в том, что он установит Debian Buster на ваш телефон со слоем совместимости. Это позволяет запускать приложения Debian без необходимости рутировать Android. Учитывая, насколько сложно рутирование для некоторых устройств, это полезно.
Производительность с Debian Noroot невелика, но она полезна. Для достижения наилучших результатов при установке Linux для Android сначала рассмотрите возможность рутирования вашего устройства.
Получить Linux на Android с UserLAnd
UserLAnd, альтернатива Debian Noroot, представляет собой приложение для Android от Play Store, которое предлагает выбор дистрибутивов. В дополнение к Alpine, Arch, Debian, Kali и Ubuntu, этот инструмент позволяет устанавливать приложения.
Вы можете установить такие инструменты, как GIMP, Firefox и LibreOffice, прежде чем устанавливать Linux на Android. Просто запустите приложение, согласитесь с разрешениями и выберите дистрибутив для установки. Существует возможность просмотра установленной версии Linux через SSH (командная строка) или с помощью приложения VNC (для настольных компьютеров).
Это удивительно просто настроить и использовать. Таким образом, если вы ищете решение для запуска Linux на Android, попробуйте это.
AndroNix устанавливает Linux на Android
Поставляемый с восемью дистрибутивами, этот полезный инструмент также предлагает модифицированные версии некоторых операционных систем Linux для повышения производительности. Стандартные восемь дистрибутивов:
- Ubuntu
- поташ
- Debian
- арочный
- Попугай ОС
- мягкая фетровая шляпа
- Manjaro
- высокогорный
Из них Ubuntu, Debian, Ubuntu и Manjaro имеют модифицированные версии, доступные для устройств Android с чипсетами ARMv8 и более поздних версий.
Чтобы установить операционную систему Linux на Android с AndroNix, просто нажмите на нужный дистрибутив, затем нажмите устанавливать, Вам нужно будет выполнить шаги, чтобы скопировать команду в окно терминала Termux, а также выбрать среду рабочего стола.
Видео выше описывает процесс более подробно. Просто обязательно иметь Termux и приложение для просмотра VNC (например, VNC Viewer) установлены. Вам понадобится VNC, чтобы использовать выбранный вами рабочий стол Linux.
AndroNix бесплатен, но имеет расширенное обновление, которое удаляет рекламу и вводит дополнительные (не жизненно важные) функции. Это включает в себя поддержку автономной загрузки операционных систем.
Еще 3 способа запуска Linux на Android без рута
Хотя мы рассмотрели несколько хороших вариантов запуска Linux на вашем Android-устройстве, доступны и другие способы:
-
DeX: Если у вас есть современное устройство Samsung, у вас есть возможность переключить ваше оборудование в режим рабочего стола с DeX
Root Android и установить Linux
Для пользователей с root-правами или тех, кто хочет потратить время на рутирование своего Android-устройства
, установка Linux проще и быстрее.
Как установить Linux на устройство Android с рутом
Если у вас есть рутированное устройство, вы можете установить различные версии Linux на Android, используя инструмент Linux Deploy. Это лучше всего сделать, сначала подключив телефон к сети Wi-Fi.
Начните с установки BusyBox, который обеспечивает некоторые расширенные возможности root. Далее установите Linux Deploy, При первом запуске нажмите Начало чтобы убедиться, что права root включены, нажмите настройки в правом нижнем углу.
Используйте отображаемое меню параметров, чтобы выбрать нужный распределение, Debian, Ubuntu, Gentoo, Fedora и многие другие доступны для установки. Мы использовали Arch Linux.
Вам нужно будет проверить включить коробка под графический интерфейс пользователя для просмотра рабочего стола Linux на вашем телефоне. Также убедитесь, что VNC выбран для Графика подсистема. Далее проверьте разрешение экрана под Настройки графического интерфейсаи убедитесь, что вы довольны Среда рабочего стола,
Наконец, найдите Имя пользователя и Пользовательский пароль записей. Или запишите их или замените на что-нибудь более запоминающееся для вас.
Выйдите из этого меню, затем нажмите три точки в правом верхнем углу и выберите устанавливать, тогда Ok,
Когда это будет сделано, установите VNC Viewer из магазина Play. В Linux Deploy нажмите Начало запустить Linux. Затем откройте VNC Viewer и подключитесь к локальный: 5900 для просмотра рабочего стола Linux с учетными данными, которые вы ввели ранее.
После запуска вы можете установить программное обеспечение Linux с помощью терминала обычным способом.
Поздравляем: теперь у вас Linux работает на Android!
Как установить Kali Linux на Android (требуется рут)
Вышеприведенный метод Linux Deploy для запуска дистрибутивов Linux на Android, вероятно, является лучшим. Он предоставляет хороший выбор версий Linux, включая Kali Linux.
Хотите использовать свой телефон или планшет на Android в качестве устройства для тестирования на проникновение? В то время как вы найдете различные полезные сетевые инструменты для Android, лучшим вариантом будет портативная версия Kali Linux. Просто следуйте инструкциям выше, используя Linux Deploy, и выберите Kali Linux для установки на Android.
После установки в вашем кармане будет портативное решение для тестирования пера. Это проверит безопасность любой сети, к которой подключается ваш телефон.
Альтернатива, установка пользовательского ПЗУ Android
Если вы не уверены, с чего начать, прочитайте о том, как установить пользовательское ПЗУ на Android
Многие владельцы Android устройств знают, что операционная система Android основана на ядре Linux, но при этом она не позволяет запускать обычные Linux приложения. И правда, согласитесь, было бы очень неплохо иметь возможность запуска на Android планшете Open Office, Firefox, Thunderbird и другие Linux программы.
Существует несколько способов загрузки Linux на Android планшете, однако они все довольно трудоемки и сложны для понимания обычным, непродвинутым пользователям. Однако, благодаря разработчику, zacthespack, который создал приложение Ubuntu Installer, появилась возможность довольно простого запуска Ubuntu прямо из операционной системы Android.
Вы сможете запустить на своем планшете или телефоне два варианта сборки Ubuntu на выбор: минимальную, которая содержит лишь самые необходимые приложения и максимальную, в которой имеется почти все, что необходимо для комфортной работы в Linux: Firefox, Thunderbird, Open Office, графический редактор GIMP, Transmission BitTorrent клиент, средства для разработки C и C++, Java JDK, Python, Emacs Text Editor и многое другое.
Для запуска Linux вам понадобятся root права, карта памяти с 2.5 или 3.5 гигабайтами свободного места (в зависимости от варианта сборки), процессор с частотой 1 ГГц, ядро с поддержкой loop устройств (практически все кастомные прошивки имеют такое ядро) и поддержка файловой системы Ext2.
Сам процесс запуска Linux с помощью Ubuntu Installer, которая по своей сути является интерактивной инструкцией очень прост, и мы даже можем обойтись без нее, проделав все необходимые процедуры вручную. Для этого вам нужно проделать всего лишь четыре шага:
1. Включить в настройках устройства в разделе Приложения -> Разработка опцию «Отладка по USB». Нажимаем кнопку «Next»
2. На следующем этапе вам нужно:
- Полную сборку Linux, которая имеет размер 1.5 ГБ и занимает на карте памяти 3.5 ГБ после распаковки или
- Минимальную сборку, которая имеет размер 500 МБ и занимает на карте памяти 2.5 ГБ после распаковки.
3. Запустите эмулятор терминала, предоставьте ему root права (при первом запуске) и введите в нем следующие команды:
su
cd /sdcard/ubuntu
sh ubuntu.sh
После этогого введите по запросу:
- Разрешение экрана (например 800х480, 1024х600 и т.п),
- Тип среды рабочего стола (только при запуске максимальной версии): введите 1 – для запуска LXDE и 2 для запуска Gnome
Последние два этапов (3 и 4) запуска Ubuntu можно увидеть на следующем видео (смотреть с 14 секунды):
Поздравляем, теперь вы умеете запускать Ubuntu на своем Android планшете или телефоне! Как вы уже, наверное, догадались, в дальнейшем запускать Ubuntu нужно начиная с пункта 3 вышеизложенной инструкции.
Читайте также: