Linux смартфон как сервер

Запускаем 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/.

Читайте также:  Directx не совместим windows

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

Некоторое время назад мне пришла в голову интересная идея — превратить свои старые телефоны (их скопилось немало за десять лет) в серверы, в качестве альтернативы покупке Raspberry Pi.

На то было несколько причин: во-первых, у телефонов есть батарея, что для сервера практически бесплатный мини-UPS, во-вторых, внутренняя память смартфона (UFS) работает быстрее и надёжнее, чем SD-карта. В-третьих, у телефонов имеется экран, по которому можно отслеживать состояние сервера.

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

TL;DR: в этом посте будут разобраны вопросы установки PostmarketOS на смартфон,
поднятия на нём в качестве примера Docker и веб-приложения в нём.

Сразу хочу оговориться — я понимаю, что есть типовые решения, например Termux или UserLAnd, и спектр поддерживаемых устройств у них шире. Но все они работают как надстройки над основной системой, Android, и подвержены её ограничениям, таким как агрессивное сокращение энергопотребления или перенос задач на LITTLE-ядра при выключении экрана. Будущее Termux, например, вообще неясно из-за всё более жёстких гаек безопасности в Android 11. UserLAnd, помимо этого, работает через PRoot, который при всей своей пользе ощутимо замедляет процессы с большим количеством системных вызовов. В этой статье мы разбираем именно создание сервера на железе без Android.

Часть первая. Прошивка

Проект PostmarketOS был создан именно ради этой цели — сохранение вычислительных устройств после прекращения их поддержки производителями. Список поддерживаемых устройств можно найти здесь.

Для установки требуется телефон с разблокированным загрузчиком. В качестве примера буду использовать OnePlus One из-за простоты разлочки со стороны производителя. Для каждого производителя список шагов разный, ниже привожу обобщённые действия для смартфона 2018-2021 года выпуска:

Далее авторизуем подключение на самом телефоне

После разблокировки телефон сбросит данные снова перезагрузится в Android, перезапустите его в режим fastboot комбинацией клавиш или повторите релевантные для этого шаги 3 и 4.

Читайте также:  Windows 10 creating tools

Если разблокировка прошла успешно, далее можно следовать стандартной процедуре установки PmOS:

На этом этапе pmbootstrap запросит пароль и задаст довольно много вопросов о том, как сконфигурировать систему и целевое устройство. Итоговый результат будет записан в

Пару слов по поводу разных конфигураций. Здесь есть несколько важных пунктов — ядро mainline или downstream , графическая среда mate , weston и т.д., канал обновлений edge или stable . Интуиция при выборе значений должна быть такой:

  • Если планируете пользоваться графикой, ставьте пароль из цифр. Некоторые графические среды поддерживают только цифровую клавиатуру на экране ввода пин-кода.
  • Выбирайте edge в качестве канала обновлений. PostmarketOS разрабатывается быстро, и много опакеченного ПО ещё долго не будет в stable .
  • Выбирайте ядро downstream если хотите максимум работающей «из коробки» второстепенной периферии после установки. Выбирайте ядро mainline если вам нужен OpenGL/OpenCL и современные возможности ядра, такие как контейнеризация и cgroups.
  • Выбирайте графическую систему phosh , sway или plasma-mobile если у ваc ядро mainline и имеется графическое ускорение. В противном случае остановитесь на mate или xfce4 . Внимательно смотрите страницу вики для вашего устройства.

Затем с помощью pmbootstrap install сразу же начинаем сборку образа целевой системы. После сборки её предлагается установить самому, так как механизм установки варьируется от модели к модели. Пример того, как это делается стандартно, и как вышло у меня, ниже.

Есть хорошие шансы, что всё сработает как надо с первого раза. К сожалению, загрузчики и реализацию fastboot каждый производитель телефонов пишет по-своему, отчего попытки установки превращаются в смерть от тысячи иголок. В моём случае fastboot наотрез отказывался прошивать образы такого размера. Пришлось воспользоваться сторонним recovery, чтобы продвинуться дальше:

После завершения процесса sideload жмём «Reboot to system». Должен пойти процесс загрузки ядра и далее самой PostmarketOS.

Часть вторая. Настройка PostmarketOS

По сути своей, PostmarketOS построена на основе дистрибутива Linux под названием Alpine. Это позволяет создать работающую систему минимального размера, что для большого количества старых устройств с ограниченной внутренней памятью критично.

Однако, есть и подводные камни. О них ниже:

  • Alpine построен на основе лаконичного libc под названием Musl. Плохая новость тут в том, что большинство других дистрибутивов работает на основе glibc, что означает невозможность установки ПО простым переносом бинарников с Raspbian или Ubuntu ARM, как позволяет, например, Golang или Rust.
  • Система инициализации в дистрибутиве — OpenRC. Если вы знакомы с Gentoo, это для вас не будет озарением, но OpenRC куда ближе к прародителю sysvinit, чем к общепринятому в индустрии systemd. Имейте в виду.
  • Для уменьшения размера используется Busybox, поэтому команды grep / sed / find и т.д. имеют ограниченный набор опций по умолчанию. Устанавливайте их GNU-версии и стандартный Bash-шелл отдельно, чтобы получить полный набор.

Итак, после загрузки телефона с PostmarketOS нам необходимо каким-то образом с ним взаимодействовать. Если вы ставили оболочку Phosh или Plasma Mobile, скорее всего вы сможете это сделать напрямую с тачскрина телефона. Если по каким-то причинам графический интерфейс не сработал, подключайте телефон к компьютеру USB-кабелем, PostmarketOS автоматически создаст дополнительную сеть:

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

Если вы видите эти строчки — значит PostmarketOS установлена верно. В противном случае попробуйте посмотреть секцию Troubleshooting для вашего устройства на вики PmOS, измените конфигурацию для pmbootstrap install или спросите мейнтейнеров в IRC или Matrix чате (все три пункта ваш покорный слуга в итоге и сделал).

Настройка сети

Если не получилось настроить WiFi сеть через графическую оболочку, ниже пример как сделать это через консоль. Предварительно подключите телефон к USB-интерфейсу вашего ПК.

Источник

Телефон на базе Android как модем для Ubuntu


Пользователи Android наверняка сталкивались с ситуацией, когда нужен Интернет на компьютер или ноут/нетбуке, а в качестве модема нyжно использовать свой телефон. У обладателей ОС Windows или Mac проблем с таким использованием телефона не возникало — для этих целей есть масса программ, например, одна из них — многим известная PdaNet.

Читайте также:  Hama pc webcam ac 150 драйвер для windows 10 x64

А вот для Linux-систем такого очевидного и всем известного решения не было (во всяком случае, как показывает практика опросов «знатоков» на различных форумах). Пришлось искать ответ самостоятельно. Решение-таки было найдено — это программа Proxoid. Однако, если, например, выше упомянутый PdaNet устанавливается за один клик (в Windows — точно, про Mac не знаю, не пробовал), то установка Proxoid требует определенных знаний у неопытного Linux-пользователя, каковым я и являюсь.

Ниже идет мой дополненный и адаптированный под Linux-чайников перевод инструкции, как настроить Proxoid в ОС Ubuntu.

Данное руководство описывает, как установить и использовать Proxoid в Linux (проверено с Ubuntu 9.04.)

Задача 1. Настройка браузера (Firefox) для выхода в интернет, используя телефон

Шаг 0: Скачать и установить Proxoid на телефон

На своем Android заходим в Market, ищем в нем «Proxoid» и нажимаем «Установить». Или можно скачать приложение отсюда. Программе потребуется только доступ к Интерент (сетевое соединение). Никаких root прав не нужно!

Соединение будет осуществляться через USB. Для работы программы также необходимо включить «Отладку через USB». Для этого заходим в главном меню в раздел «Настройки» -> «Приложения» -> «Разработка» -> ставим галочку «Отладка по USB».

Шаг 1: Настройка udev (автомонтирование usb накопителей в Linux) для распознания вашего телефона

Первым делом подключаем телефон к компьютеру через USB. Затем создаем файл:

SUBSYSTEM==»usb», ATTR==»22b8″, MODE=»0666″, GROUP=»plugdev»
SUBSYSTEM==»usb», ATTR==»0bb4″, MODE=»0666″, GROUP=»plugdev»
SUBSYSTEM==»usb», SYSFS==»04e8″, MODE=»0666″, GROUP=»plugdev»
SUBSYSTEM==»usb», SYSFS==»18d1″, MODE=»0666″, GROUP=»plugdev»

Эти строки работают для всех протестированных телефонов: HTC (G1, Tatoo, Nexus One), Motorola Milestone, Samsung Galaxy (I7500), Acer Liquid (проверено мною).

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

useradd -g plugdev *user_name*

где *user_name* — имя пользователя.

Далее в командной строке проверьте состояние USB устройств:

Должен вернуться результат вроде такого:

Bus 001 Device 005: ID 0bb4:0c02 High Tech Computer Corp.

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

sudo /etc/init.d/udev restart

Шаг 2: Загрузка Android SDK (Software Development Kit или devkit — комплект средств разработки)

Загрузите Android SDK отсюда (для Linux — это файл «android-sdk_r06-linux_86.tgz»). Распакуйте файл командой:

где %downloadfile% — имя загруженного файла, или используя GUI — кому как привычнее.

Шаг 3: Туннелирование

Теперь вы можете настроить туннелирование между вашим телефоном и компьютером. Перейдите в поддиректорию инструментов (tools) директории загруженного вами Android SDK. Далее введите команду:

./adb forward tcp:8080 tcp:8080

Шаг 4: Настраиваем proxy-server в браузере

Ваш браузер должен использовать proxy-server, запущенный на localhost, порт: 8080. Для Firefox это делается так:

Инструменты –> Настройка –> Дополнительно –> Вкладка «Сеть» -> Настроить.

В открывшемся окне сделайте следующие настройки:

Наконец, отключите «работу в автономном режиме» в меню «Файл».

Шаг 5: запуск Proxoid на вашем телефоне

Запустите приложение proxoid на вашем телефоне и поставьте галочку в пункте «Start/Stop Proxoid».

На этом описание первой задачи завершено. Должно работать 🙂

Задача 2. Настройка всей системы (Gnome) для выхода в интернет, используя телефон

Запускаем сетевые настройки, используя команду:

Нажимаем «Ручная настройка Proxy» (1) (Manual Proxy Configuration) и отмечаем «Использовать этот Proxy для всех протоколов» (2) (Check Use the same proxy for all protocols). Затем заполняем поля (3):

HTTP Proxy: localhost
Port: 8080

Наконец, нажимаем «Применить ко всей системе» (4) (Apply System-wide).

Известные проблемы

Что бы проверить, правильно ли распознано ваше устройство с помошью ./adb, запустите следующую команду, находясь в поддиректории tools директории куда распакован Android SDK:

В ответ должна быть возвращена следующая форма:

* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
HTXXNKFXXXXX device

Если ваш телефон не распознан системой — попробуйте перезагрузить (выключить и включить) ваш компьютер не отключая телефон от USB.

Надеюсь, данный мануал поможет пользователя Android и Ubuntu. Эта часть соединения Android -> Ubuntu мою решена. Следующая задача — наоборот, раздавать интернет с Ubuntu на Android — но это совсем другая история.

Источник

Оцените статью