Устанавливаем Entware.arm на android

android

В предыдущей заметке я описал, как установить Entware.arm на роутер с прошивкой Tomato от Shibby. Теперь поставим Entware на android.

Большинство современных Android железок используют архитектуру arm и теоретически должны поддерживать Entware.arm, если используемый процессор cortex-a9 или старше (совместимый). В этой заметке я это продемонстрирую.

Подопытным кроликом у меня выступает TV стик Tronsmart CX-919 с рутованной прошивкой  Finless ROM 1.6b (android 4.2.2). Все манипуляции я осуществлял по ssh, для чего на стик был установлены пакеты SSHDroid и BusyBox.

Итак приступим. Нам потребуется папка /opt в корне файловой системы с правами записи. Хорошо бы иметь и шелл по стандартному пути /bin/sh, чтобы не редактировать скрипты. Нужно и место установки с файловой системой, поддерживающей символические ссылки. Можно использовать и внутреннюю флешь память устройства, но лучше, на мой взгляд, использовать micro SD карту с одной из файловых систем ext2/ext3/ext4. Я использовал SD карту с файловой системой ext2. Как подготовить такую карту я рассказывать не буду, об этом достаточно статей в интернете.

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

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

/system/bin/mount -o rw,remount /

Создаем папки /opt и /bin

mkdir /opt
mkdir /bin

Создаем символическую ссылку /bin/sh

ln -s /system/bin/sh /bin/sh

Больше нам запись в корневую файловую систему не понадобиться. Закрываем запись

/system/bin/mount -o ro,remount /

Теперь создадим папку на SD карте, в которую будет устанавливаться система и сделаем bind на /opt


mkdir /mnt/external_sd/entware.arm
mount -o bind /mnt/external_sd/entware.arm /opt

Для самой установки все готово. Приступим.
Скачиваем скрипт установки, запускаем

wget http://qnapware.zyxmon.org/binaries-armv7/installer/entware_install_arm.sh
chmod +x ./entware_install_arm.sh
./entware_install_arm.sh

Надеюсь у Вас, как и у меня, установка завершиться без ошибок. Нам осталось совсем немного. Для того чтобы добавить пути к бинарникам Entware в PATH создадим локальный профиль в домашней директории SSHDroid следующего содержания


root@android:/data/data/berserker.android.apps.sshdroid/home # pwd
/data/data/berserker.android.apps.sshdroid/home
root@android:/data/data/berserker.android.apps.sshdroid/home # cat .profile
#!/system/bin/sh

. /opt/etc/profile

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


opkg install mc
opkg install nano

Остался последний штрих. Нужно, чтобы это все работало, после перезагрузки системы. У меня прошивка поддерживает скрипты в init.d. Я создал такой (команды sleep остались от разных отладок, наверняка многие и не нужны).


#!/system/bin/sh

sleep 3
/system/bin/mount -o rw,remount /
sleep 1
/system/bin/chmod 777 /mnt/external_sd
/system/bin/mkdir /opt
/system/bin/mkdir /bin
ln -s /system/bin/sh /bin/sh
/system/bin/mount -o ro,remount /
sleep 3
/system/bin/mount -t ext2 -o rw /dev/block/mmcblk0p1 /mnt/external_sd
/system/bin/mount -o bind /mnt/external_sd/entware.arm /opt
sleep 2
/opt/etc/init.d/rc.unslung start

В настоящий момент в репозитории Entware.arm 1767 пакетов. Список можно посмотреть тут -
http://qnapware.zyxmon.org/binaries-armv7/Packages.html
или просто так http://qnapware.zyxmon.org/binaries-armv7/

Вот так у меня выглядит mc на стике

mc_919

PS Я не являюсь знатоком Android. Если где нарушил философию системы — сообщите.

15 Комментарии в“Устанавливаем Entware.arm на android”

  1. cockchafer
    03.05.2015 в 22:12 #

    а самбу из репозитория на андроиде удалось запустить? у меня со слегка подправленным конфигом из .template nmbd стартует, а smbd — ни в какую. или может можно собрать версию с поддержкой логов, чтобы хоть что-то было видно?

  2. Zyxmon
    04.05.2015 в 00:06 #

    Я не пробовал запускать самбу ни в Entware-arm, ни в Qnapware. Я бы установил strace (opkg install strace) и посмотрел бы, что происходит с запуском smbd из под strace.
    Какие опции нужно включить при сборке? За основу берется следующий Makefile — https://dev.openwrt.org/browser/trunk/package/network/services/samba36/Makefile

    Еще может пригодиться тема — http://wl500g.info/showthread.php?30087-Samba-3-6-EntWare-%F3%F1%F2%E0%ED%EE%E2%EA%E0-%E8-%ED%E0%F1%F2%F0%EE%E9%EA%E0&highlight=samba

  3. cockchafer
    04.05.2015 в 07:33 #

    в той теме, кстати, и упоминается samba_multicall с включенными debug сообщениями

  4. Zyxmon
    04.05.2015 в 09:10 #

    Та тема как раз про Samba из Entware. Разница в архитектуре (там про mips) и в железе, на котором запускают (там роутеры асус на бродкоме). Собираются пакеты с одинаковыми опциями? что и видно из:

    /tmp/home/root# opkg files samba36-server
    Package samba36-server (3.6.25-3) is installed on root and has the following files:
    /opt/sbin/smbd
    /opt/etc/samba/lowcase.dat
    /opt/etc/init.d/S08samba
    /opt/etc/samba/valid.dat
    /opt/sbin/nmbd
    /opt/etc/samba/upcase.dat
    /opt/sbin/samba_multicall
    /opt/sbin/smbpasswd
    /opt/etc/samba/smb.conf.template

  5. cockchafer
    04.05.2015 в 10:02 #

    а можно собрать пакет с немного измененным Makefile? собственно, нужен только samba_multicall, собранный с такими опциями.

    вот кусок с изменениями:

    define Package/samba36-server/config
    config PACKAGE_SAMBA_MAX_DEBUG_LEVEL
    int «Maximum level of compiled-in debug messages»
    depends on PACKAGE_samba36-server || PACKAGE_samba36-client
    - default -1
    + default 3
    endef

    как раз можно будет посмотреть, чего ему не хватает

  6. Zyxmon
    04.05.2015 в 10:41 #

    Проверяйте — http://qnapware.zyxmon.org/binaries-armv7/test/samba36-server_3.6.25-3a_armv7soft.ipk
    В любом случае отпишите, включились ли логи. Возможно при следующих синхронизациях включу логи по умолчанию.

    PS Я попробовал запустить самбу на android — smbd запускается и судя по strace выходит с exit code 0 — без ошибки. Скорее всего конфиг ему не нравится.

  7. Zyxmon
    04.05.2015 в 11:42 #

    Сам проверил. Логи включились. Ошибка такая

    ERROR: failed to setup system user info: NT code 0xc0000064.

    Скорее всего связана с отсутствием пользователей в /etc/passwd
    Для dropbear я знаю (уже делал патч) как заменить /etc/passwd на /opt/etc/passwd
    Это можно сделать, если нужно, для android. Для samba нужно копать, как обойти ошибку.

  8. Zyxmon
    04.05.2015 в 16:24 #

    Сейчас в голову пришла (дурная ???) идея, которая требует некоторое время на проверку. Если она правильная, то ….. не хочу забегать вперед…. Можно будет и дальше разделить Qnap/Ent-ware и ось роутера/НАСа/андроида. Пусть приложения *ware используют свои файлы (/Apps)/opt/etc/passwd и другие.

  9. cockchafer
    04.05.2015 в 17:36 #

    я вообще-то думал, что *ware как раз и используют /opt/etc вместо /etc

  10. cockchafer
    04.05.2015 в 17:57 #

    у меня samba вываливалась с этой ошибкой
    SamInfo3_for_guest: Unable to locate guest account [nobody]!
    ERROR: failed to setup guest info.

    строки в smb.conf, определяющие guest account как nobody
    guest account = nobody
    guest ok = yes

    после adduser -D nobody все заработало. спасибо за скомпиленную с debug сообщениями версию. думаю, что 3 уровень избыточен, с первым эта ошибка тоже видна

  11. Zyxmon
    04.05.2015 в 17:59 #

    >>я вообще-то думал, что *ware как раз и используют /opt/etc вместо /etc

    Так и есть, за исключением системных файлов, например, /etc/passwd и еще некоторых.

  12. Zyxmon
    07.05.2015 в 08:46 #

    У меня в android нет многих необходимых для работы файлов и директорий, которые есть в linux. Тем не менее удалось завести и самбу и dropbear. Пришлось пропатчить системную либу entware, busybox (entware), samba.
    Обсуждение этого у меня на форуме — http://forum.zyxmon.org/topic831-izmeneniya-v-entware-ideya-obsuzhdaem.html
    Надеюсь скоро выложу все в виде пакетов для общего тестирования.

  13. Zyxmon
    10.05.2015 в 18:19 #

    Написал заметку об установке dropbear и samba на android и другие «нестандартные» железки:
    http://www.zyxmon.org/2015/05/10/ustanavlivaem-entware-arm-na-nestandartnye-zhelezki/

  14. mw7
    31.07.2015 в 00:48 #

    Во время установки возникла проблема — opkg не запускается (No such file or directory)

    • Zyxmon
      31.07.2015 в 07:13 #

      mw7 Какой процессор на Вашем устройстве? Приведите лог установки.

Добавить комментарий для Zyxmon Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

(Required)

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Автор темы: www.gopiplus.com, перевел WP-Templates.ru, поддержка SearchTimes.ru.