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

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

+5 2 19419 12
Автор Kyrie1965 Рейтинг +28.53 Сила 34.63
Блог Проекторы, ТВ, мониторы, ТВ-боксы 150 107 RSS

12 комментариев

edka1976
А научился или нет Transmission работать через внешний сервер, на подобии того как это умеет uTorrent?
Т.к. не имея белого IP к Transmission не зацепиться, а это не удобно, т.к. я торренты добавляю в обед и сидя на работе.
Последний раз редактировалось
Yurius
Если у вас будет много всякого — лучше придумать о VPN с белым IP. К нему еще много всего интересного можно придумать.
002
Нехорошо это, внешние серверы, непонятно под чьим контролем, да для таких чувствительных действий как управление торрентами. Teredo ipv6, ddns и vpn используйте для ваших задач.
Johnymn
Что-то не пойму, а что в Google play нет подходящих приложений для торрента и тому подобного?
Kyrie1965
Если говорить в общем, то в статье речь не о торрент-клиентах. Он лишь для примера.

Если отвечать конкретно на вопрос, то клиентов достаточно. Но в каждом есть нюансы, и вопрос скорости и работы с диском стоит не на последнем месте. Transmission — это универсальное, вымученное годами решение, которое даёт широкие возможности для управления загрузками, при этом стабильно работает в фоне в виде системного процесса. Если есть возможность его использовать и у кого есть желания, то почему бы и нет?
Последний раз редактировалось
Johnymn
Я ж только ЗА! Просто хотелось понять в чем принципиальная разница. Если этот клиент будет меньше грузить приставку и сможет больше выжимать из дисковой системы, то гуд. Очень понравилось приложение для мониторинга. Может как-то запилю и себе такое. Где еще можно поискать варианты использования?
Kyrie1965
В основном информация на разных сайтах о реализации каких-то конкретных задач. Много разных решений можно подсмотреть в Каталоге готовых решений Opkg (Keenetic). Не все из них можно применить на боксе, но для ознакомления вполне.
andyxxl
Юрий, а можно этим способом примонтировать smb шару в каталог чтобы он так же виделся в файловой системе? Полезно было бы а то приходится на уровне каждой программы решать вопрос.
Если можно, то не поскажите какие точно команды вводить?
Для чайников в linux))

Спасибо заранее!
Kyrie1965
Это можно делать и без Entware. Но нужна поддержка CIFS в ядре. Такая поддержка есть в прошивке Ugoos AM3, Nvidia Shield TV, Xiaomi Mi Box 3 Enhanced. И у них же есть системные клиенты для монтирования.

Поддержку можно добавить (если в системе её нет), но нужен модуль ядра cifs.ko для конкретной системы. Его нужно собирать.
Последний раз редактировалось
959459740784381@facebook
Есть PHP значит есть возможность поставить ownCloud, реально ли?
Или игра не стоит свеч?
Kyrie1965
Должно работать и OwnСloud, и NextCloud. Там никакой специфической поддержки в ядре не нужно, только lighttpd и модули php. Конечно, нужно проверять, но китайцы пишут, что работает на Entware под Android.

Нужно это вам, стоит ли это делать, хочется это делать — это вы сами у себя спросите.
murtuz90
Поставил этот entware с обходим блокировок, но через wifi не работает вообще интернет, только через мобильный интернет. MIUI 10

Добавить комментарий