Компания
88,17
рейтинг
9 января 2014 в 10:06

Разное → Устанавливаем Linux-программы на смартфон под управлением Android



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


Linux или не Linux?


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

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

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


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


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

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

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

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

BotBrew


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

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

Для работы это чудо программистской мысли требует всего ничего: права root и немного свободного пространства во внутренней памяти смартфона или на карте памяти. Причем первый вариант предпочтительнее, так как в случае с SD файлы будут свалены на виртуальный диск, работа с которым поддерживается далеко не всеми ядрами.

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

Список установленных приложений
Список установленных приложений

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

Ставим софт


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

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


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


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

wget http://repo.botbrew.com/anise/bootstrap/install.sh -O - | su

Если и это не помогло, можно попробовать удалить все установки («Remove BotBrew» в настройках) и затем попробовать запустить эту команду.


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

$ botbrew lynx http://xakep.ru

Как вариант — каталог /data/botbrew/bin можно добавить в переменную окружения PATH, но это придется делать после каждого запуска терминала:

Сайт журнала в консольном браузере Lynx
Сайт журнала в консольном браузере Lynx


Процесс установки пакета
Процесс установки пакета

$ export PATH="$PATH:/data/botbrew/bin"

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

  1. Создание пользователя:
    $ botbrew adduser vasya
  2. Открытие пользователю доступа в интернет:
    $ botbrew addgroup vasya inet
  3. Переключение BotBrew на другого пользователя:
    $ botbrew su vasya

Обрати внимание, что все эти изменения будут касаться только виртуального окружения BotBrew и никак не отразятся на основной системе. Консоль можно использовать также для установки приложений в обход графического интерфейса. Для этого следует использовать консольный менеджер пакетов Opkg, синтаксис команд которого полностью совместим в apt-get:

$ botbrew opkg install dropbear

Обратная операция:

$ botbrew opkg remove dropbear

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

Управлять сервисами в BotBrew действительно просто
Управлять сервисами в BotBrew действительно просто

BotBrew Basil


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

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

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

  1. Use BotBrew on the command line — по сути, аналог установки в стиле обычного BotBrew.
  2. Use the dpkg/APT system — установка вместе с apt-get и репозиториями Debian. Рекомендуемый вариант установки.
  3. Run Python programs — аналог первого варианта с автоматической установкой Python.
  4. Install a minimal Debian — минималистичная установка Debian.

Поясню второй и четвертый пункты. Первый BotBrew и первый пункт в этом списке делают не что иное, как установку минималистичной Linux-системы (состоящую всего из нескольких команд и библиотек), внутри которой как раз и происходит запуск Linux-софта. Однако apt-get, в отличие от минималистичного Opkg, требует более-менее полноценной установки Linux. Поэтому, выбрав второй пункт, ты получишь у себя на смартфоне этакий микро-Linux. А если мы можем установить микроверсию, почему бы не установить более-менее полноценный дистрибутив. Для этого и существует четвертый пункт.

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

BotBrew Basil предлагает несколько вариантов установки
BotBrew Basil предлагает несколько вариантов установки

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


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

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

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

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

$ sudo apt-get install build-essential cmake autoconf2.13 scons

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

$ cd ~
$ wget http://goo.gl/zvnom -O scriptset-2.6.zip
$ unzip scriptset-2.6.zip

В результате распаковки мы получим… еще один архив: scriptset-2.6.tar.bz2. Но и это еще не все, архив запакован без традиционного для tar корневого каталога, поэтому его необходимо создать самостоятельно. И уже в него производить распаковку:

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


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

$ chmod 755 *.sh


Запуск сборки приложений
Запуск сборки приложений

Далее открываем файл configuration.conf на редактирование и меняем в нем следующие строки:

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


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

$ sudo mkdir -p /data/sysroot
$ sudo chown user:users /data/sysroot
$ sudo chmod 777 /data/sysroot

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

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

# vi ~/scriptset/package_selection.conf
BASH=yes
IMAGEMAGICK=yes
SCREEN=yes

Имей в виду, что настройки, находящиеся между строками # ALWAYS NEEDED, менять нельзя. Эти приложения и библиотеки нужны всегда, и без них другие приложения просто не собираются. Теперь можно скомпилировать приложения. Для этого достаточно запустить скрипт build.sh без аргументов:

$ ./build.sh

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

$ tar xjf /sdcard/cs-sysroot.tar.bz2
$ tar xjf /sdcard/android-mysysroot.tar.bz2

В результате во внутренней памяти смартфона появится каталог /data/sysroot, в котором и будут размещены приложения. Запускать их следует из того же терминала, указывая полный путь. Например:

$ /data/sysroot/usr/bin/bash

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

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

Выводы


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


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

Публикация на Issuu.com

Подпишись на «Хакер»




Автор: @XakepRU

Комментарии (39)

  • 0
    Неужели на Ruby?
  • –9
    И это косается только консольных приложений, ни какой графики. Хорошо, а как же BusyBox? Если в нем уже есть основной функционал консольных приложений?
    • +3
      Демоны, компиляторы и т.д. не входят в BusyBox. Если функционала BusyBox вполне достаточно, то и заморачиваться не стоит, но если нужно что-то более специфичное — BotBrew и танцев с бубном будет чуть меньше.
      • 0
        Вопрос: а нужен ли весь этот функционал для носимой техники? Давайте уже в телефоне сервак поднимим, почему бы и нет? Андроид же всегда к розетке подключен.
        • +3
          Не нужен большому числу рядовых пользователей — не значит не нужен совсем. А иметь возможность выполнить какую-нибудь специфичную задачу для ПК без этого самого ПК(ноутбука, нетбука и тд) бывает полезно.

          А красноглазить — это отдельное удовольствие, которое может и не принесет результата, но доставит много удовольствия от решения не самой стандартной задачи.

          Да и вообще: некоторые вещи нужно делать только потому, что можешь. :)

          • 0
            Я по возможности поставил бы ОС Tizen, он больше похож на Linux и на него можно поставить что угодно. Этой ОС как миниПК я больше склоняюсь, чем к Андроиду
            • 0
              Посмотрим, что выйдет из Tizen. Но пока Tizen'а нет, android — довольно интересный полигон для экспериментов.
              • 0
                С этим я согласен
  • –12
    Один я просматривая скриншоты также смотрел на время и уровень заряда батареи? :)
    • +2
      Видимо да
      • +1
        Ну а что, интересно же сколько занял времени весь процесс.
    • –2
      нет, не один, хай что за минусуют )
    • +6
      Забавно, пока вы не упомянули, не обратил внимания. 10% за 1:23
      Если телефон активно шуршал процессором, то результат неплохой.
    • +3
      там еще погода есть. очень тепло, между прочим.
  • –4
    По всем законам он вроде должен здесь работать
    По всем законам он скорее работать не должен.

    удобный способ установки и запуска почти любого Linux-софта в Android
    Громко сказано. На деле все намного сложнее.
    В андроиде от линукса только ядро, и то подпиленное. libc своя — bionic, графика своя, виртуальная джава машина dalvik — своя.
    Конечно, какой-то софт запустить можно, но далеко не любой.

    В статье описана установка только консольных приложений. Зачем там ссш, веб-сервер?
    • –1
      А кроме минусов есть какие-то комментари от тех, кто копался в сорцах андроида?
      • +1
        Мне кажется, минусовать могут за то, что в статье об этом говорится, а ваше высказывание похоже на то, что вы не вчитывались в статью, а сразу стали писать комментарий.

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

        Так, несмотря на наличие в Android стандартной библиотеки libc и других, их реализация в большинстве случаев несовместима с библиотеками от проекта GNU и сильно урезана по функционалу. По этой причине Linux-софт нужно как минимум пересобирать специально под Android и ARM-процессор, а во многих случаях еще и патчить, добавляя функционал, отсутствующий в библиотеках.
        • –3
          На самом деле внимательно читал. Просто фразы, которые я процитировал в своем комментарии, явно противоречат этим двум абзацам.
      • +1
        Не минусовал. От линукса в андроиде только название и немного ядра + busybox. Тут Вы правы, а на Ваш вопрос «зачем?» я Вам отвечу — «потому, что могу, потому, что интересно».
  • +1
    А есть ли способ запихнуть консольный linux бинарь в свое android приложение?
    Есть некое приложение, которое портировать очень сложно. Сейчас запускаю через linux deploy со своим скриптом, который через сокет общается с android приложением. Вроде все работает, но слишком много мороки установки и настройки для конечного пользователя.
    • +1
      Нет. Потому что он скомпилен под x86/64. А вот если скомпилите кросс-компилятором gcc-arm-linux-gnueabi (для арма), то запихнется.
      • +1
        Это то понятно, компилится нормально, вопрос в том, как это сделать )
        • +2
          Ну смотря что там у вас за бинарь. Если шаред обджект на C/C++, можно через jni подключить.
          • +1
            Грубо говоря, там консольная утилита, то есть ее нужно запускать с определенными параметрами и ловить stdout. Проблема еще в том что это не один бинарь, а пакет с зависимостями.
            • +1
              Я запускал ffmpeg ( статически собраный, весом в 8мб). Бинарник, собраный под арм лежал в assets. При запуске программа проверяет, не распокавал ли я бинарник прежде. И если нет, то распаковывает в /data/data/папкаприложения/… Далее chmod и вызов стандартными методами из java.
  • +6
    Вы сколько текста написали, даже обыграли «бразильскую тему», но все же basil.
  • +4
    Было бы интересно увидеть Asterisk на Android. Массу интересных применений можно придумать такому развлечению.
  • +2
    Интересно, как VIM-ом пользоваться на смартфоне с тач скрином)
    • +1
      VIM и так есть, по крайней мере на CyanogenMod. А вот какого либо vsftpd сильно не хватает. Но хотелось бы нативно…
      P.S. VIM без физической клавы имхо не возможен.
    • 0
      Вим есть даже под айфон. Просто кто-то скомпилировал и заменил эскейп на дргугую клавишу. Открывается, работает, но толку от него чуть.

      Кто бы чего не говорил, но у меня пальцы всегда готовы к прокрутке по J/K, только вот для тачскрина это не работает — нажимать то надо большим пальцем.

      • 0
        Ну, успокоили пожалуй. А то я пробовал ставить, но не осилил. Думал может не понял чего)
        А вот от vsftpd и я бы не отказался. В общем жду замены nokia n900(полноценного линукс смартфона с клавиатурой).
  • +2
    Кстати, есть вариант запуска полноценного linux on arm дистрибутива в chroot окружении. А уж дальше городи что хочешь, хоть ssh, хоть vnc на localhost.
    • +2
      Подумал, что вы о Linux Deploy. Поддерживает не только Debian и не требует каких-либо усилий.
  • 0
    От себя могу добавить только, что без бубнов у меня не встала.
    Basil вообще отказывает что либо качать.
    А для anise нужно ручками править bootstrap.sh
    добавить строчку
    export CACHEDIR=/cache
    после
    export TARGET=/data
    выполнять под root из папки /cache
    • 0
      А вот сегодня Basil пошел скачиваться. Странно, еще вчера не работало.
  • –1
    Поставил поиграться вариант без рута: play.google.com/store/apps/details?id=com.cuntubuntu&hl=en
    Есть потенциал… ;-)
    Название package правда какое-то непреличное…
    • 0
      Кстати, пользуясь случаем, хотел спросить: лично Вас что останавливает от того, чтобы потратить 10 минут и получить рут? Просто реально, 70% серьезных прог (именно серьезных твикеров, демонов и всяких компиляторов) требуют рут. Я даже свою Теслу отрутил, хотя она Медиатек (!), еще и последний MT6582. Не думаю, что у вас так же все сложно, ни так ли?)
  • 0
    Еще два года назад игрался с Ubuntu в chroot на TF101. Но вот чего сильно не хватает — это полноценного Xserver для андроида. Был вариант с VNC, то это очень тормозно. Вроде бы кто-то начинал писать свой сервер, но, судя по статье, воз и ныне там?
  • 0
    В общем, умер проект уже несколько лет как… BotBrew умер, у Themer темы перестали качаться, без которых он реально убог. Не, ладно Themer, я на Next Launcher перешел и ничуть не жалею, но BotBrew-то почему? Что за непруха? Ни у кого pkg.zip для Бутстрапа не завалялся? Могу выложить все на свои сервера и пересобрать его из сорцов для своих урлов. Или может какие альтернативы есть? Заранее благодарен за любую помощь!

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

Самое читаемое Разное