Как установить linux на андроид приставку

Обновлено: 05.07.2024

Если вы читаете это, вы, вероятно, раньше использовали 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 для повышения производительности. Стандартные восемь дистрибутивов:

    1. Ubuntu
    2. поташ
    3. Debian
    4. арочный
    5. Попугай ОС
    6. мягкая фетровая шляпа
    7. Manjaro
    8. высокогорный

    Из них Ubuntu, Debian, Ubuntu и Manjaro имеют модифицированные версии, доступные для устройств Android с чипсетами ARMv8 и более поздних версий.

    Чтобы установить операционную систему Linux на Android с AndroNix, просто нажмите на нужный дистрибутив, затем нажмите устанавливать, Вам нужно будет выполнить шаги, чтобы скопировать команду в окно терминала Termux, а также выбрать среду рабочего стола.

    Видео выше описывает процесс более подробно. Просто обязательно иметь Termux и приложение для просмотра VNC (например, VNC Viewer) установлены. Вам понадобится VNC, чтобы использовать выбранный вами рабочий стол Linux.

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

    Еще 3 способа запуска Linux на Android без рута

    Режим рабочего стола на устройствах Samsung Galaxy с DeX

    Хотя мы рассмотрели несколько хороших вариантов запуска 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


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

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

    Введение.

    Итак, начнем с головного устройства. На картинке к данному обзору представлен довольно типичный тв-бкс z69 на базе 4х ядерного чипа Amlogic s905x. Многие (и я тоже) привыкли использовать данные устройства для просмотра сериалов и iptv. Я в своей медиа системе использую аналогичный бокс с 2/32гб на андройде в связке с проектором. Устройство не блещет стабильностью, часто на задачах просмотра веб контента случаются зависания и прочие неприятные, но разрешимые ситуации. Но это не цель данного обзора.
    В этой части хотел бы раскрыть неочевидные многим возможности данного чипа и сравнить его с неформальным лидером рынка iot устройств — raspberry pi3. Бонусом, или даже основной частью, будут мои юзер-кейсы, о которых все время спрашивают в каментах.
    Итак, покопавшись в интернете, можно узнать, что многие тв-боксы при помощи (черной) магии можно превратить в неттопы с полноценным Linux на борту. Это касается большинства чипов amlogic, rockchip и прочих платформ. Конкретно наш экземпляр — s905x — поддерживает загрузку Debian\Ubuntu подобной системы с SD карты или USB. Огромная благодарность в проработке вопроса загрузки linux на чипах amlogic сразу уходит к нашему соотечественнику balbes150.
    Там же у balbes150 можно найти образ для загрузки LibreElec.

    Это дистрибутив для нативного запуска Kodi/XBMC — медиаплеера с кучей дополительных плагинов. Если ваша цель состоит в сохранении медийных свойств приставки с одновременным повышением производительности и стабильности — рекомендую. Процесс установки аналогичен описанному ниже. Ссылка на дистрибутивы для s905x вот.
    Кроме того, для семейства amlogic s9xxxx, собран дистрибутив признанного фаворита в русском мире дистрибутивов *Elec — AlexElec.

    Ссылка на загрузку вот. Инструкция по запуску — аналогичная.
    При запуске полноценного Linux дистрибутива сразу обозначим факт: в рамках эксперимента, мы потеряем “медиа” возможности приставки (точнее, отключим на время опытов — android то с приставки никуда не денется).
    Но что мы имеем? А имеем мы мини-компьютер, который потребляет максимум 8 вт и который будем в дальнейшем пытаться применять для типовых задач домашней автоматизации.

    Сравнение.

    Чтобы не возвращаться потом, опишем сразу железные и софтовые профиты и минусы, по сравнению с аналогами.
    Принято считать хорошим примером в мире устройств домашней автоматизации — raspberry pi (малинка). Эта плата, а конкретно модель pi3 b+, работает на базе 4х ядерного чипа BCM2837 с 1гб ОЗУ.

    Плата имеет огромное комьюнити и почти любой вопрос, которым вы можете задаться в рамках работы с ней, скорее всего, уже решен до вас. Это ее неоспоримый плюс: поддержка. За это можно и иногда нужно переплатить(цена вопроса 30-35$). Если вы решите прошивать тв-бокс и устанавливать на него софт, будьте готовы: вы с этим(вероятно) один на один.
    Также у малинки на борту разведена гребенка GPIO и других разъемов, которыми можно беспроблемно управлять хоть из ОС, хоть из уровня ПО(python\domoticz etc).

    Если ваши задачи связаны с управлением датчиками или низкоуровневыми протоколами 1-wire \ i2c \ GPIO релешками и прочим прямо с платы: тв-бокс с linux тоже не про это.
    В чем же плюс? А плюс в наличии готового устройства.

    У вас за те же или меньшие, по сравнению с raspberry pi3, деньги будет: достаточно мощный процессор, нормальный корпус!, хороший блок питания, охлаждение(но это не точно), интерфейсы hdmi\ethernet\usb\av\audio, bt\wifi, ir (многие из них не запустятся в линуксе без танцев с бубном), антенны, внутренний накопитель. У вас будет более высокая производительность процессора и больше (в данном примере) оперативной памяти.
    Сравнение производительности:

    — Benchmark Run: Tue Mar 27 2018 16:22:44 — 16:50:50
    0 CPUs in system; running 1 parallel copy of tests

    Dhrystone 2 using register variables 7436510.3 lps (10.0 s, 7 samples)
    Double-Precision Whetstone 1312.0 MWIPS (10.1 s, 7 samples)
    Execl Throughput 871.6 lps (29.9 s, 2 samples)
    File Copy 1024 bufsize 2000 maxblocks 180951.1 KBps (30.0 s, 2 samples)
    File Copy 256 bufsize 500 maxblocks 56264.8 KBps (30.0 s, 2 samples)
    File Copy 4096 bufsize 8000 maxblocks 428546.6 KBps (30.0 s, 2 samples)
    Pipe Throughput 437935.7 lps (10.0 s, 7 samples)
    Pipe-based Context Switching 93731.8 lps (10.0 s, 7 samples)
    Process Creation 3236.2 lps (30.0 s, 2 samples)
    Shell Scripts (1 concurrent) 2428.7 lpm (60.0 s, 2 samples)
    Shell Scripts (8 concurrent) 714.0 lpm (60.1 s, 2 samples)
    System Call Overhead 929656.2 lps (10.0 s, 7 samples)

    System Benchmarks Index Values BASELINE RESULT INDEX
    Dhrystone 2 using register variables 116700.0 7436510.3 637.2
    Double-Precision Whetstone 55.0 1312.0 238.6
    Execl Throughput 43.0 871.6 202.7
    File Copy 1024 bufsize 2000 maxblocks 3960.0 180951.1 456.9
    File Copy 256 bufsize 500 maxblocks 1655.0 56264.8 340.0
    File Copy 4096 bufsize 8000 maxblocks 5800.0 428546.6 738.9
    Pipe Throughput 12440.0 437935.7 352.0
    Pipe-based Context Switching 4000.0 93731.8 234.3
    Process Creation 126.0 3236.2 256.8
    Shell Scripts (1 concurrent) 42.4 2428.7 572.8
    Shell Scripts (8 concurrent) 6.0 714.0 1190.0
    System Call Overhead 15000.0 929656.2 619.8
    ========
    System Benchmarks Index Score 421.7

    CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

    CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

    CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)

    16:26:55 up 20:47, 1 user, load average: 0.77, 0.98, 0.57; runlevel 3

    — Benchmark Run: Tue Mar 27 2018 16:26:55 — 16:56:17
    4 CPUs in system; running 1 parallel copy of tests

    Dhrystone 2 using register variables 2179181.5 lps (10.0 s, 7 samples)
    Double-Precision Whetstone 368.3 MWIPS (9.9 s, 7 samples)
    Execl Throughput 463.0 lps (29.6 s, 2 samples)
    File Copy 1024 bufsize 2000 maxblocks 73545.4 KBps (30.0 s, 2 samples)
    File Copy 256 bufsize 500 maxblocks 20941.9 KBps (30.0 s, 2 samples)
    File Copy 4096 bufsize 8000 maxblocks 194029.5 KBps (30.0 s, 2 samples)
    Pipe Throughput 155045.4 lps (10.0 s, 7 samples)
    Pipe-based Context Switching 27361.7 lps (10.0 s, 7 samples)
    Process Creation 1177.1 lps (30.0 s, 2 samples)
    Shell Scripts (1 concurrent) 1176.1 lpm (60.0 s, 2 samples)
    Shell Scripts (8 concurrent) 317.4 lpm (60.1 s, 2 samples)
    System Call Overhead 333399.9 lps (10.0 s, 7 samples)

    System Benchmarks Index Values BASELINE RESULT INDEX
    Dhrystone 2 using register variables 116700.0 2179181.5 186.7
    Double-Precision Whetstone 55.0 368.3 67.0
    Execl Throughput 43.0 463.0 107.7
    File Copy 1024 bufsize 2000 maxblocks 3960.0 73545.4 185.7
    File Copy 256 bufsize 500 maxblocks 1655.0 20941.9 126.5
    File Copy 4096 bufsize 8000 maxblocks 5800.0 194029.5 334.5
    Pipe Throughput 12440.0 155045.4 124.6
    Pipe-based Context Switching 4000.0 27361.7 68.4
    Process Creation 126.0 1177.1 93.4
    Shell Scripts (1 concurrent) 42.4 1176.1 277.4
    Shell Scripts (8 concurrent) 6.0 317.4 529.0
    System Call Overhead 15000.0 333399.9 222.3
    ========
    System Benchmarks Index Score 159.7

    — Benchmark Run: Tue Mar 27 2018 16:56:17 — 17:25:34
    4 CPUs in system; running 4 parallel copies of tests

    Dhrystone 2 using register variables 8690198.1 lps (10.0 s, 7 samples)
    Double-Precision Whetstone 1470.5 MWIPS (10.0 s, 7 samples)
    Execl Throughput 1266.4 lps (29.8 s, 2 samples)
    File Copy 1024 bufsize 2000 maxblocks 113576.7 KBps (30.0 s, 2 samples)
    File Copy 256 bufsize 500 maxblocks 31186.4 KBps (30.0 s, 2 samples)
    File Copy 4096 bufsize 8000 maxblocks 332597.5 KBps (30.0 s, 2 samples)
    Pipe Throughput 616170.2 lps (10.0 s, 7 samples)
    Pipe-based Context Switching 95804.8 lps (10.0 s, 7 samples)
    Process Creation 2793.2 lps (30.0 s, 2 samples)
    Shell Scripts (1 concurrent) 2657.3 lpm (60.1 s, 2 samples)
    Shell Scripts (8 concurrent) 341.1 lpm (60.2 s, 2 samples)
    System Call Overhead 1277095.6 lps (10.0 s, 7 samples)

    System Benchmarks Index Values BASELINE RESULT INDEX
    Dhrystone 2 using register variables 116700.0 8690198.1 744.7
    Double-Precision Whetstone 55.0 1470.5 267.4
    Execl Throughput 43.0 1266.4 294.5
    File Copy 1024 bufsize 2000 maxblocks 3960.0 113576.7 286.8
    File Copy 256 bufsize 500 maxblocks 1655.0 31186.4 188.4
    File Copy 4096 bufsize 8000 maxblocks 5800.0 332597.5 573.4
    Pipe Throughput 12440.0 616170.2 495.3
    Pipe-based Context Switching 4000.0 95804.8 239.5
    Process Creation 126.0 2793.2 221.7
    Shell Scripts (1 concurrent) 42.4 2657.3 626.7
    Shell Scripts (8 concurrent) 6.0 341.1 568.6
    System Call Overhead 15000.0 1277095.6 851.4
    ========
    System Benchmarks Index Score 395.2

    Есть смысл заморочиться? Ну, я заморочился :)

    Установка ОС.

    Пример №0: Тривиальный. Настройка торентокачалок, файлохранилок.

    Что тут можно посоветовать. Любое ПО на ваш вкус.
    Для торренов могу порекомендовать transmission
    Для общих папок с windows: samba.
    Самбу, кстати, можно использовать для автоматического резервного копирования видео с популярных камер Xiaomi Dafang по вот этой инструкции.
    Для монтирования яндекс диска используем dav2fs — чтобы превратить ваш бокс в облачное хранилище, например, для тех же видеозаписей с камеры.

    Пример №1: Установка системы домашней автоматизации на примере Domoticz (или majordomo\OpenHAB по вкусу).

    Про использование домотикза читайте на муське тут.
    Последнее время я им не особо доволен, он стал тормозить при взаимодействии с xiaomi шлюзом. Но пока разбираться лень.
    Устанавливается система с помощью скрипта:

    После нескольких простых вопросов у вас на порту 8080 будет запущен интерфейс Domoticz. Далее подключение и настройка устройств осуществляется через этот веб интерфейс.
    Без труда можно интегрировать с умным домом xiaomi и выключателями sonoff, избавив их от гнета Китая :)
    Выглядит в сборе примерно так:


    Пример №2: Видеонаблюдение на базе motion+motionEye.

    Кто не знает, motion это видеорегистратор с открытым исходным кодом. А motionEye это веб-интерфейс для настройки камер и управления архивами.
    Устанавливается по инструкции (со 2го шага)
    Выглядит так:

    Кстати, он умеет работать с непосредственно подключенными USB web камерами. Ну, это понятно, что для любителей приключений…
    RTSP потоки сильно грузят процессор, поэтому больше 2-х потоков в разрешении 720р amlogic s905x вряд ли вытянет.
    У меня дома, кстати, стоят камеры Xiaomi Xiaofang с хаком. С помощью motionEye и хака можно просматривать видео (rtsp) с камер и получать изображения без помощи родного приложения MiHome. Я считаю это очень важным, т.к. стабильность и защищенность китайского облака оставляет желать лучшего.
    Мой вариант использования: при открытии входной двери, датчик открытия отправляет запрос на сервер автоматизации, там python скрипт, запущенный linux лезет к камерам и получает с них фото, после чего направляет их мне через pushover по ftp или telegram.
    Далее совмещайте с Яндекс-Диском и получайте облако для записей.


    Любой телефон или планшет, работающий на Android, — это устройство, которое управляется ОС Linux. Да, очень модифицированной ОС, но все же основа Android — ядро Linux. Но, к сожалению, для большинства телефонов опция «снести Android и поставить дистрибутив по своему вкусу» недоступна.

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

    Что такое AnLinux?

    Это специализированное ПО, которое дает возможность использовать Linux на телефоне при помощи монтирования образа, содержащего root-файловую систему любого из дистрибутивов, включая Ubuntu, Kali, Fedora, CentOS, OpenSuse, Arch, Alpine и многих других. Инсталлятор использует PRoot для эмуляции root-доступа.

    PRoot перехватывает все выполняемые пользователем вызовы, которые требуют в обычной ситуации root-доступа, и обеспечивает их работоспособность в обычных условиях. В PRoot используется системный вызов ptrace для отладки ПО, который помогает достичь цели. С PRoot все это можно сделать как с chroot, но без root-прав. Кроме того, PRoot предоставляет фейковый доступ пользователю для пседвофайловой системы.

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

    Конечно, это не идеальный вариант «завести» Linux на смартфоне, но он вполне рабочий.

    С чего начать?

    Основное — Android-смартфон с версией ОС не ниже Lollipop. Кроме того, пойдет и 32-битное или 64-битное ARM или x86-устройство. Кроме того, потребуется солидный объем свободного файлового пространства. Для этого можно использовать карту памяти или просто устройство с большим объемом внутренней памяти.

    Кроме того, потребуется:

    • AnLinux (вот ссылка на Google Play).
    • Termux (снова понадобится Google Play).
    • VNC Client (VNC Viewer — хороший вариант).
    • Bluetooth-клавиатура (опционально).
    • Bluetooth-мышь (опционально).
    • HDMI кабель для мобильного телефона (опционально).

    Что же, приступим


    Как только установлен Termux, получаем полноценную консоль. Да, рута нет (если телефон не рутован), но ничего страшного. Следующий шаг — установка образа для дистрибутива Linux.

    Теперь нужно открыть AnLinux и затем — выбрать Dashboard из меню. Всего есть три кнопки, но выбрать можно лишь одну, первую. После этого появляется меню выбора дистрибутива. Можно выбрать даже не один, а несколько, но в этом случае понадобится большой объем свободного файлового пространства.

    После выбора дистрибутива активируются две другие кнопки. Вторая позволяет загрузить в буфер обмена команды, необходимые для загрузки и установки Linux. Обычно это pkg, wget команды и скрипт для их выполнения.


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

    А что с графической оболочкой?

    Если она нужна, то следует лишь выбрать меню для десктопного окружения и использовать больше кнопок — появится не три, а больше. Кроме самого дистрибутива, нужно выбрать еще и оболочку, например, Xfce4, Mate, LXQt или LXDE. В целом, ничего сложного.

    Потом кроме скрипта, который запускает дистрибутив, потребуется еще один — он активирует сервер VNC. В целом, весь процесс простой и понятный, он вряд ли способен вызвать затруднения.

    После запуска сервера VNC подключаемся со стороны клиента, воспользовавшись вьювером. Требуется знать порт и localhost. Все это сообщает скрипт. Если все сделано правильно, то пользователь получает доступ к своей виртуальной Linux-системе. Производительность современных телефонов на высоте, так что особых проблем не будет. Конечно, вряд ли смартфон сможет полностью заменить десктоп, но, в целом, все это работает.

    Этот способ может пригодиться, если вдруг нужно срочно подключиться к серверу, а вы в машине, без ноутбука (конечно, в этом случае все описанные выше операции с AnLinux уже должны быть выполнены). Виртуальная Linux-машина позволяет подключиться к рабочему или домашнему серверу. А если в автомобиле по какой-то причине оказался дисплей и беспроводная клавиатура, то за считанные секунды в салоне можно организовать рабочий кабинет.

    Прошло совсем немного времени с момента выпуска первых смартфонов под управлением ОС 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 по стандартной схеме, без использования каких-либо автоматизированных инсталляторов и прочего.

    backtrack2

    BackTrack, запущенный на планшете

    BackTrack, запущенный на планшете

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

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

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

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

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

    1. Обновляемся и устанавливаем TightVNCserver:
    2. Создаем файл /root/.vnc/xstartup и пишем в него следующее:

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

    AndroidVNC — подключаемся к рабочему столу

    AndroidVNC — подключаемся к рабочему столу

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

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

    Проект «Ubuntu for Android» в действии

    Проект «Ubuntu for Android» в действии

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

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

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

    Ubuntu на Galaxy Tab 10.1

    Ubuntu на Galaxy Tab 10.1

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

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

    Нативный X-сервер для Android

    Нативный X-сервер для Android

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

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

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

    Запуск Ubuntu с помощью стартового скрипта

    Запуск Ubuntu с помощью стартового скрипта

    Что дальше

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

    Читайте также: