Добавляем поддержку репозитория Entware на Android-боксе

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com
Entware — это менеджер ПО для встраиваемых систем, который открывает доступ к огромному количеству (более 1500) пакетов программ для Linux, расширяя возможности устройства, на котором он установлен. Чаще всего поддержкой Entware обладают продвинутые маршрутизаторы.

Зачем и кому вообще может понадобиться Entware на Android-боксе? Конечно, всё это для гиков и пытливых пользователей. Для тех, кто ищет, как ещё можно расширить функциональность своего бокса, как переложить определённые задачи на Android-бокс. Возьмите для простого примера топовые маршрутизаторы Keenetic Ultra или Keenetic Giga, которые сделаны на достаточно мощном SoC MediaTek MT7621AT (2 ядра MIPS1004Kc 880 МГц). А у вас в тумбочке под ТВ может простаивать большую часть времени копеечный китайский бокс с SoC Amlogic S912 (8 ядер ARM Cortex-A53 до 1,5 ГГц). Торрент-клиент Transmission на Keenetic Ultra выжмет 6-11 Мбайт/с максимум. А тот же Transmission, установленный из Entware, на боксе легко выжмет под 30 Мбайт/с, ограничиваясь лишь скоростью интерфейса USB 2.0. А может вам нужна удалённая система с доступом по SSH для простых экспериментов. Например, с интерпретатором Python, Ruby, PHP, Perl. Бокс легко с этим справится.

Никаких изменений в самой системе Android (TV) не произойдёт. Вам не нужно будет отдельно ставить Linux на бокс, специально перезагружать его в эту систему. Вы буду продолжать пользоваться Android (TV), как и раньше. А в фоне появится возможность использовать инструменты из Entware.


Содержание

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

  • Не на все боксы можно установить Entware, но на большинство. Причины разные.
  • В системе на боксе должен быть root-доступ.
  • В системе на боксе должна быть поддержка скриптов init.d (метод добавления такой поддержки индивидуален для каждого бокса).

Основная сложность установки Entware на некоторых Android-устройствах — это «кривая» штатная программа wget (из busybox), которая не позволит вам развернуть Entware, или её отсутствие. opkg использует эту программу. Вам придётся самостоятельно найти подходящий «бинарник» wget и добавить его в систему, если вы столкнётесь с проблемой. Или просто поставить «правильный» BusyBox. Избежать этого можно, если вы воспользуетесь «Простой инструкцией по установке» — там разворачивается уже предустановленная система Entware (с предустановленным пакетом wget).

Разворачивать Entware будем во внутренней пользовательской памяти бокса. Чаще всего она доступна по пути "/data/media/0". При необходимости используйте другой путь или внешний носитель (он должен быть с файловой системой EXT3/4).

Установите программу Terminal Emulator. И запустите её.

Получите root-права:
su

Создайте папку entware внутри пользовательской памяти:
cd /data/media/0
mkdir entware

Для Entware нужны будут системные папки /bin и /opt, которых у вас нет. В bin будет находится ссылка на файл /system/bin/sh, а opt будет ссылаться на папку entware. Для их создания нужно будет временно разрешить запись в корневой папке.
mount -o rw,remount /
mkdir /opt
mkdir /bin
ln -s /system/bin/sh /bin/sh
mount -o ro,remount /
mount -o bind /data/media/0/entware /opt

Теперь вам нужно самостоятельно решить, для какой архитектуры устанавливать Entware — ARMv7 (32-разрядная) или AArch64 (64-разрядная). Зависит от того, какая у вас операционная система на боксе. Например, современные системы для Amlogic (как и процессоры) 64-разрядные. Можете спокойно выбрать универсальный вариант ARMv7, он будет работать в обоих случаях.
wget http://bin.entware.net/armv7sf-k3.2/installer/alternative.sh
или
wget http://bin.entware.net/aarch64-k3.10/installer/alternative.sh

chmod +x alternative.sh

Установите Entware:
./alternative.sh

После установки нужно сделать небольшую корректировку. Некоторым программам из Entware может понадобиться файл /etc/resolv.conf, которого у вас в системе нет. Мы создадим ссылку на этот файл.
echo "nameserver 8.8.8.8" > /opt/etc/resolv.conf
echo "nameserver 8.8.4.4" >> /opt/etc/resolv.conf

/system/bin/mount -o rw,remount /system
ln -s /opt/etc/resolv.conf /system/etc/resolv.conf
/system/bin/mount -o ro,remount /system
Установите SSH-сервер (dropbear) и запустите основной скрипт Entware:
/opt/bin/opkg install dropbear
/opt/etc/init.d/rc.unslung start

Почти всё готово. Entware уже полноценно работает. Осталось только сделать скрипт 01entware для init.d, чтобы службы Entware запускались автоматически при старте системы. Terminal Emulator можно закрывать, он нам больше не нужен, как и прямой доступ к боксу.

Подключитесь по SSH к боксу. Для Windows можете использовать популярный клиент PuTTY. Пользователь: root, пароль: 12345. Пароль можете изменить с помощью команды passwd.


Установите Midnight Commander (в нём удобный редактор файлов).
opkg install mc

Нам нужно создать файл 01entware в папке init.d. Место нахождения этой папки зависит от вашей системы. Самый простой вариант, если у вас в системе используется SuperSU, это папка /system/su.d. Выставите разрешение на запуск для этого скрипта. Если у вас прошивка Ugoos AM3 2.x, то просто в настройках системы включите «Пользовательские скрипты» (Настройки > Системные > Пользовательские скрипты), а сам скрипт положите в папку init.d в корне пользовательской памяти. Дополнительные разрешения выставлять не нужно. Предположим, что у вас в системе есть SuperSU, мы воспользуемся su.d.
/system/bin/mount -o rw,remount /system
mkdir /system/su.d
mcedit /system/su.d/01entware

Вставьте содержимое (Shift + Insert):
Спойлер
#!/system/bin/sh

/system/bin/mount -o rw,remount /
/system/bin/mkdir /opt
/system/bin/mkdir /bin
ln -s /system/bin/sh /bin/sh
/system/bin/mount -o ro,remount /

/system/bin/mount -o bind /data/media/0/entware /opt

/system/bin/mount -o rw,remount /system
ln -s /opt/etc/resolv.conf /system/etc/resolv.conf
/system/bin/mount -o ro,remount /system

/opt/etc/init.d/rc.unslung start

Сохраните изменения (F2) и выйдите из редактора (F10).
chmod +x /system/su.d/01entware
/system/bin/mount -o ro,remount /system

Всё готово!

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

Загрузите архив entware_armv7.tar.gz и поместите его в корень пользовательской памяти вашего бокса (распаковывать не надо). Это базовая, уже развёрнутая система Entware (armv7sf-k3.2) с установленными пакетами wget и dropbear (SSH). Загрузите скрипт 01entware. При необходимости измените путь к пользовательской памяти MEDIA_PATH внутри скрипта. Поместите скрипт в папку init.d. Место нахождения этой папки зависит от вашей системы. Самый простой вариант, если у вас в системе используется SuperSU, это папка /system/su.d (воспользуйтесь любым файловым менеджером с поддержкой root). Выставите разрешение на запуск для этого скрипта. Если у вас прошивка Ugoos AM3 2.x, то просто в настройках системы включите «Пользовательские скрипты» (Настройки > Системные > Пользовательские скрипты), а сам скрипт положите в папку init.d в корне пользовательской памяти. Дополнительные разрешения выставлять не нужно.

Перезагрузите бокс. Готово, Entware у вас на боксе. Архив entware_armv7.tar.gz будет удалён автоматически. Если архив не удалён, значит вы выбрали неверную папку init.d (скрипты из которой не запускаются системой) или указали неверный путь MEDIA_PATH.

Подключитесь по SSH к боксу. Для Windows можете использовать популярный клиент PuTTY. Пользователь: root, пароль: 12345. Пароль можете изменить с помощью команды passwd.


Можете установить Midnight Commander и запустить его:
opkg install mc
mc

Может установить Python:
opkg install python3

Удаление Entware

  1. Удалите скрипт 01entware из папки init.d.
  2. Перезагрузите бокс.
  3. Удалите папку entware из пользовательской памяти.
Пример использования

Простой пример — Transmission. Подключитесь по SSH к боксу. Установите Transmission (демон и web-интерфейс):
opkg install transmission-web transmission-daemon-openssl

Установите сертификаты для трекеров, которые используют HTTPS:
opkg install ca-bundle ca-certificates

Установите mc для удобного редактирования файлов:
opkg install mc

На подключённом к боксу диске создайте папку, в которую будут загружаться торренты — Torrents. Идентификатор диска (или путь в целом) у вас будет свой (используйте буфер обмена, если путь сложный):
mkdir /mnt/media_rw/f6f7d733-7c2e-d401-80f3-d7337c2ed401/Torrents

Откройте конфигурационный файл Transmission:
mcedit /opt/etc/transmission/settings.json

Параметров у Transmission много. На досуге вы все сможете изучить и изменить (в том числе и через графическую оболочку на других устройствах). Для начала измените самые необходимые параметры:
"download-dir": "/mnt/media_rw/f6f7d733-7c2e-d401-80f3-d7337c2ed401/Torrents"
"peer-limit-global": 100
"peer-limit-per-torrent": 50
"port-forwarding-enabled": true

Вставлять из буфера в mcedit можно с помощью Shift + Insert. Сохраните изменения (F2) и выйдите из редактора (F10).

Осталось немного изменить скрипт запуска Transmission, чтобы демон запускался после того, как в системе будет смонтирован диск (топорно, но для примера сойдёт — вы потом напишите правильный способ), избегая лишних хлопот, например, когда есть незаконченные загрузки:
mcedit /opt/etc/init.d/S88transmission

После первой строчки добавьте следующие команды, заменив путь к вашей папке с торрентами на диске:
Спойлер
while [! -d "/mnt/media_rw/f6f7d733-7c2e-d401-80f3-d7337c2ed401/Torrents" ]
do
sleep 15
done

Сохраните изменения и выйдите из редактора.

Запустите Transmission (после перезагрузки бокса он будет запускаться автоматически):
/opt/etc/init.d/S88transmission start

Готово. Можете с любого устройства (в том числе и смартфона) подключаться к Transmission через web-интерфейс (http://IP_БОКСА:9091/transmission/web/ ). Можете в Windows, например, на ноутбуке использовать Transmission Remote GUI. Практически для всех платформ есть клиент для удалённого управления Transmission, т.к. программа очень популярная.



Или для примера можете поставить netdata.
opkg install netdata
/opt/etc/init.d/S60netdata start

С помощью браузера подключитесь к вашему боксу (порт 19999) и увидите детальную статистику по ресурсам бокса с диаграммами и графиками.


Или можете примонтировать Яндекс.Диск прямо в файловой системе бокса (можно добавить в автозагрузку).
opkg install wdfs
mkdir /data/media/0/yandex
wdfs https://webdav.yandex.ru /data/media/0/yandex -o accept_sslcert,username=******@yandex.ru,password='******',allow_other