Android to linux server

Запускаем Linux-сервер на смартфоне

15 сентября 2015

Устаревший смартфон часто оставляют на всякий случай или продают за бесценок. Между тем, его можно использовать для разных экспериментов, а полученные навыки затем перенести на актуальную модель, уже зная все подводные камни. На прежнем смартфоне можно даже поднять Linux-сервер с управлением по SSH и VNC, который будет работает поверх любой версии Android, начиная с 2.1. Выбор дистрибутивов с поддержкой архитектуры ARM и ARM64 уже достаточно большой – от пушистой Убунты до зубастой Кали. Смартфоном при этом можно пользоваться как обычно. Приложения, данные – всё остаётся как было и работает параллельно.

Kali Linux 2.0 ARM на смартфоне Samsung GT-I9250 с удалённым управлением через VNC.

Поскольку доступ к системному разделу во внутренней памяти смартфона с ОС Android изначально закрыт, сперва мы получим права root. Как именно рутировать – зависит от конкретной модели. В альтернативных прошивках (например, CyanogenMod) рут уже может быть изначально, а в стоковые он добавляется множеством способов, которые можно разделить на два принципиально разных подхода.

Первый основан на ручной замене загрузчика и оболочки восстановления (recovery), а второй – на внесении изменений в системный раздел смартфона с помощью рутирующей программы для Windows. При подключении его к компьютеру она использует функцию отладки по USB и часто может выполнять все действия автоматически.

Настройки утилиты KingRoot.

Первый вариант подходит любителям полного контроля и олдскульных пошаговых стратегий. Сначала надо сделать полный бэкап, потом установить кастомный вариант рекавери, сделать из неё очистку кэша, инсталлировать SuperUser.apk (или другую программу, раздающую права суперпользователя по запросу) и пару раз перезагрузиться в процессе.

Второй вариант допускает однокликовые решения. Просто подключаете смартфон к компьютеру, запускаете одну из китайских программ для Windows (Root Genius, King Root или подобную) и ждёте пару минут.

KingRoot поддерживает свыше ста тысяч моделей смартфонов, планшетов и прочих гаджетов с Android.

Последний способ получил интересное развитие: вслед за троянами для Android появились полулегальные мобильные приложения, выполняющие рутирование по заимствованной у вирусов технологии. После разрешения устанавливать софт из сторонних источников и включения отладки по USB, они запускаются со смартфона и выполняют все те же действия, что и программа для Windows. В большинстве случаев даже не требуется перезагрузка.

Поскольку любое рутирование смартфона – непредусмотренная производителем процедура, утилиты для её выполнения часто опознаются как потенциально опасные приложения (PUA/PUP) многими антивирусами.

Антивирусы опознают утилиты рутирования как потенциально опасные программы.

В моём эксперименте на Samsung Galaxy Nexus (модель 2011 года) рут был получен через минуту после запуска KingRoot v.4.1. Плюс в том, что все процедуры прошли автоматически и без перезагрузки. Приложения и настройки остались на своих местах. Минус – помимо SuperUser.apk были установлены бесполезные «оптимизаторы системы», рекламирующие приложения от того же разработчика. Выкорчевать их довольно сложно –понадобится мощная утилита вроде Titanium Backup и детальный анализ внесённых изменений. Ленивые могут не запускать этот мелкий мусор и игнорировать его в общем списке.

Чтобы запустить на смартфоне Linux, нам также понадобится набор консольных утилит для подключения сторонних модулей ядра – BusyBox и приложение для автоматического развёртывания выбранного дистрибутива – Linux Deploy.

BusyBox устанавливается как обычное приложение, а в кастомных прошивках он часто уже интегрирован. Программа Linux Deploy по принципу работы похожа на утилиту UNetbootin – она скачивает указанный дистрибутив Linux с официального зеркала и выполняет его установку. В данном случае – на образ диска, который монтируется из файла или отдельного раздела на карте памяти.

Настройка Linux и выбор графической среды.

Перед установкой можно задать множество настроек, включая выбор графической среды, размер образа и его расположение. По умолчанию предлагается сохранить образ на microSD, в связи с чем могут возникнуть затруднения. Во-первых, при её форматировании в FAT32 предельный размер одного файла должен быть меньше 4096 МБ. Во-вторых, некоторые аппараты не поддерживают карты памяти. В частности, мой третий «Нексус» эмулирует её символической ссылкой, а Linux Deploy наотрез отказывается работать с каталогом /emulated/.

Читайте также:  Html reader для андроида

Поэтому приходится обходить указанные ограничения. Если у смартфона есть картридер (а таких большинство), то можно переформатировать карту памяти в ext3 или ext4. Тогда снимается ограничение на максимальный размер файла, но её уже не смогут прочесть устройства без поддержки этих файловых систем (в частности – компьютер с Windows). Поэтому удобнее создать на ней два логических раздела: первый – с FAT32, а второй – с ext3/4.

Создание двух разделов на microSD(HC) в Windows.

При невозможности использовать карту памяти можно выбрать запись образа в файл, а в пути его размещения указать системный раздел во внутренней памяти смартфона. В любом случае, после развёртывания Linux будет запускаться в окружении chroot и работать параллельно с Android. Любые изменения произойдут в виртуализированной среде и могут быть полностью отменены. По умолчанию для повышения безопасности у Linux даже нет доступа к ресурсам Android.

Настройки параметров окружения и удалённого доступа в Linux на смартфоне.

По нажатию одной кнопки программа Linux Deploy автоматически настраивает рабочее окружение, запускает (по желанию пользователя) серверы и графическую среду (выбирается при установке). В консольном режиме управление выполняется по SSH, а в графическом – через VNC, X Server или Framebuffer. IP-адрес для подключения указывается в заголовке запущенного профиля, порты используются стандартные, а логин и пароль задаются в настройках.

Установка Slackware ARM 14.2 на виртуальный диск в смартфоне.

С помощью Linux Deploy можно выполнить установку нескольких дистрибутивов и переключаться между ними через менеджер профилей. Управлять любым из них можно как с самого смартфона (VNC Viewer, SSH-клиент), так и удалённо. Когда вы подключаетесь к одному из запущенных Linux-серверов, смартфон продолжает работать в обычном режиме и никак не выдаёт свою тайную миссию.

Источник

Русские Блоги

Как превратить старые телефоны Android в серверы Linux

источник: zone7

оглавление

Ничего не говори, сначала посмотрим, как это работает

Какие материалы и оборудование нужны?

Установите систему Linux для телефона Android

Ся Биби

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

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

Ничего не говори, сначала посмотрим, как это работает

Компьютер также можно подключить через локальную сеть, поэтому здесь нет примера.

Какие материалы и оборудование нужны?

Телефоны Android с экранами

Программное обеспечение приложения: развертывание Linux, busybox, сок ssh

Наконец, вам нужно обратить внимание на официальный аккаунт: zone7 follow me toss

Что делать, если у вас нет старого телефона Android, но вы хотите выбросить его? Рекомендуется покупать подержанный Mi 5 в Xianyu. Почему мы рекомендуем Mi 5? Прежде всего, Xiaomi Mi 5 находится в производстве уже некоторое время, поэтому вы можете купить его за двести-триста юаней, и он имеет функцию NFC, которую можно использовать как карту метро или карту доступа.

корневой телефон

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

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

Я могу рутировать телефон

Я предоставлю рут-метод для Xiaomi и Huawei. Найдите другие модели самостоятельно.
Xiaomi: Подробности см. В моей статье Zhihu https://zhuanlan.zhihu.com/p/88777424
Huawei: Huawei сейчас не предоставляет root-услуги, вы можете найти универсальный Taobao, поиск: root-права на мобильный телефон Huawei

Я не могу рутировать свой телефон

Если вы не можете рутировать свой телефон, вот альтернативные продукты. termux — это приложение, которое может устанавливать Linux на мобильные телефоны без рутирования, но многие команды Linux недоступны, и запуск командной строки python все еще возможен.

Установите систему Linux для телефона Android

На данный момент я предполагаю, что вы по умолчанию рутировали свой телефон Android. Сначала установите три приложения, показанные на скриншоте выше,

Развертывание Linux: для загрузки Linux требуются права root.

Juice ssh: приложение для мобильного терминала.

BusyBox: разверните телефонные команды Android, потому что после установки здесь Linux многие команды Linux становятся недоступны и требуют прав root.

Читайте также:  Отгадай кто для андроид

Juice ssh и BusyBox очень просты, поэтому я не буду их здесь повторять. Единственное, о чем мне нужно поговорить, — это развертывание Linux.
Моя конфигурация выложена.Вы можете настроить кнопки в верхнем левом и нижнем правом углах согласно рисунку. Что касается версии прически для Linux, вы можете выбрать ее по своему вкусу. Я выбрал CentOS7 здесь, а также указал исходный адрес CentOS:

базовая конфигурация Показать отладочную информацию Откройте SSH, внешний мир может подключиться Измените версию прически Linux, выберите ту, которая вам нравится

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

На этом установка завершена. Если не удалось, попробуйте еще несколько раз или измените версию выпуска. Вы получили чувство выполненного долга, не так ли?

В конце концов

Я считаю, что это сухая статья, и заказывать ее не очень удобно. Ха-ха .

Источник

Запуск приложений в Android Virtual Device на удаленном Linux-сервере

В процессе работы над одним проектов возникла ситуация, когда необходимо проводить в автоматическом режиме ряд операций из мобильного приложения. Поскольку набор входных данных, которые вводит пользователь для работы приложения меняется, была необходима реализация, которая позволила бы имитировать действия пользователя. Более того, необходимо было, чтобы приложение запускалось автоматически на удаленном linux-сервере, выполняло действия и сохраняло результаты. О том, как решал данную задачу, я и хочу рассказать читателям.

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

Требования и инструменты

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

Для реализации использовались:

  1. Среда разработки — IntelliJ IDEA;
  2. Удаленный сервер linux — Debian 7;
  3. Android SDK;
  4. Putty — для реализации удаленной отладки.

Шаг 1. Разворачиваем SDK

Сам Android SDK можно взять отсюда. Для его работы, разумеется, необходим предустановленный JDK, у меня это была версия 1.7. Ранее была необходима именно х86 версия, но начиная с некоторых последних версий данная проблема отпала. После того как Android SDK у нас есть, начинаем его устанавливать и настраивать:

  1. Копируем архив на нашу linux-машину и распаковываем в нужный каталог;
  2. Далее обновляем наш SDK.
    Тут два варианта. Первый, когда вы точно знаете, что вам необходимо, тогда получаем список доступных библиотек:

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

Второй вариант скачать все, что доступно на текущий момент. Мне он оказался ближе, потому что сам я не разработчик Android и не был уверен, что выберу все, что нужно:

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

  • Ждем окончания загрузки пакетов.
  • Далее для простоты управления можно добавить утилиты adb, android, emulator из каталогов platform-tools и tools в системные переменные, но я запускал их просто из каталога.

    Шаг 2. Создаем и запускаем Android Virtual Device

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

    Имя устройства — ну тут все и так понятно.
    Порядковый номер версии ОС Android — его можно увидеть в списке доступных версий для создания устройства. Сам список можно получить командой:

    Набор инструкций процессора — какой процессор эмулировать, если для версии Android использовался только один вариант процессора, то данный параметр можно проигнорировать, иначе в ответ на команду утилита выдаст сообщение о необходимости явно указать набор инструкций, а также укажет возможные варианты. Например, у меня значение этого параметра было default/armeabi.

    После этого создает папку с набором файлов виртуального устройства, расположен он в каталоге */.android/avd, который находится или в директории root, или в директории, где расположен сам SDK (зависит от прав пользователя). Имя каталога с файлами совпадает с именем виртуального устройства.

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

    -no-window — указывает на запуск с отключенным экраном.
    Имя устройства — имя, которое мы указали при создании устройства выше.
    Более подробное описание и другие ключи для запуска можно найти здесь.

    Теперь нужно дождаться, пока устройство загрузится:

    Теперь нам осталось только установить наши приложения: основное, которое обращается к серверу, и robotium-приложение, которое умеет обращаться к основному и выполнять действия:

    -r — данный ключ показывает, что если приложение уже существует, то перезаписать его.
    Имя приложения — имя вашего apk-файла с расширением.

    На многих ресурсах я встречал упоминание, что AVD можно переносить просто скопировав файлы с одной машины на другую, но у меня не получилось: linux при попытке запуска бодро ругнулся на отсутствие файла kernel.ini, хотя на созданном непосредственно в linux-е эмуляторе никаких файлов с таким именем не наблюдалось. Но поскольку создание эмулятора дело минутное, я махнул на это рукой.

    Шаг 3. Запуск приложений

    Запустить robotium-приложение достаточно просто (я приведу конкретный пример для наглядности):

    emulator-5554 – имя эмулятора, обычно оно стандартно, если эмулятор запущен в системе один, но посмотреть список доступных запущенных устройство можно командой:

    e class com.example.robotium.Kernel – имя класса в robotium-приложении, непосредственно выполняющего тесты.
    com.example– имя package из файла AndroidManifest.xml для robotium-приложения.

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

    Тест на своей windows-машине показал, что это работает, причем независимо от того запущен эмулятор с параметром –no-window, и без него. А вот запуск на debian-е не дал ничего, ошибка повторялось, а значит причина в другом, предположил я. Долгие поиски не дали ничего конкретного, видимо, мало кому приходит в голову гонять тесты для GUI на терминальном сервере. В основном встречались комментарии, что поскольку тесты эти для gui, то и работать они при отключенном экране не могут, мол, нет GUI отображающегося, нет и тестов для них. Но у меня ситуация была из разряда «партия сказала надо» и придти с таким ответом к своему teamlead-у я не мог, поэтому я взял за аксиому, что экран просто не разблокировался, к сожалению проверить визуально как оно было на самом деле я не смог, сервер терминальный все-таки. Добавил дополнительные проверки на состояние экрана в момент запуска и действительно оказалось, что экран мало того, что не разблокирован, но и еще выключен – подвела-таки команда.

    Проблему решить помогла программная разблокировка. Для этого в robotium-приложении добавляем код:

    Чтобы данный код заработал в файл AndroidManifest.xml необходимо добавить следующие строчки:

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

    После этого еще раз выполняем описанную ранее команду — ура, все запустилось все работает.

    Шаг 4. Настройка удаленной отладки

    К сожалению, с нуля, ни сама Android SDK, ни IDEA не умеют работать с виртуальными устройствами на удаленных серверах, а значит заставим их думать, что устройство здесь, рядом. Для этого настроим в Putty туннель к нашему серверу. Для этого надо добавить два порта — для устройства emulator-5554 это будут порты 5554 и 5555. Для уточнения на всякий случай пример на изображении:

    Теперь на удаленном сервере выключаем сервис ADB:

    А на локальной машине запускаем или перезапускаем (сразу выключив):

    Теперь если выполнить команду ./adb devices — мы увидим удаленные запущенные устройства. К сожалению, запускать эмуляторы удаленно мы не можем, только видеть уже запущенные, ну и работать с ними. Теперь, при запуске robotium-приложения непосредственно из IDEA в диалоге выбора устройства мы увидим и наш удаленный эмулятор (см. изображение). С ним можно работать точно так же как и с локальным.

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

    Источник

    Читайте также:  Android studio textview жирный шрифт
    Оцените статью