Entware-ng - основные сведения

Используем пакеты, расширяющие возможности оборудования
Аватара пользователя
Zyxmon
Администратор
Сообщения: 1147
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 15 мар 2016, 17:03

Проведено довольно существенное обновление entware-ng
1. Системные библиотеки обновлены glibc 2.22 -> 2.23 (arm & intel), uclibc-ng 1.0.12 -> 1.0.13
2. gcc 4.8.5 -> 5.3.0
3. Добавлена возможность собирать пакеты на golang (как с помощью gccgo, так и стандартным gc) в том числе и на mipsel.
При обновлении

Код: Выделить всё

opkg update
opkg upgrade

На arm и intel будет обновлен locales-archive. Если вы добавляли свои локали, нужно будет это сделать повторно.

Voxel
Сообщения: 31
Зарегистрирован: 29 фев 2016, 12:34

Сообщение Voxel » 18 мар 2016, 20:16

Собственно, хотел поблагодарить в первую очередь за Entware/Entware-ng. Обладаю "зоопарком" роутеров, три ASUS (RT-N66U, RT-AC56U, RT-AC68U). Год назад соблазнился двумя Netgear X4 R7500 из-за хорошей хардверной конфигурации (2xUSB 3.0, ESATA, Dual Core Krait 1.4GHz), плюс цены тогда не успели скакануть вслед за курсом рубля. Так вот, если бы не Entware и Entware-NG - валялись бы у меня эти "ночные ястребы" где-нибудь в дальнем ящике с ненужным хламом. А так - на что-то способны и довольно успешно.

Несколько раз пересобирал Entware-ng для ARM как с soft float (для ASUS-ов), так и с hard-float (Netgс производительностиear). Цель - выжать максимум по скорости для своего зоопара. Можно несколько замечаний/предложений (все для ARMv7)?

1) Вы писали, что "gcc 4.8.5 -> 5.3.0", однако в официальном наборе пакетов, как я понимаю, остался 4.8.5. По моим тестам, что для soft, что для hard float, 5.3.0 дает прирост производительности до 10%. Пользовался openssl тестом и cpubench, что из Entware.

2) Сам "cpubench". Собирается с ссылкой на /lib/ld-linux.so.3 или на /lib/ld-linux-armhf.so.3 (в зависимости от soft или hard float). Что не есть хорошо. Просто не запускается. Должна все же ссылаться на /opt/lib. Переделал на коленке для себя для бенчмарков. Баг, однако.

3) Использование опции "-Os" по умолчанию. Мне кажется, все же надо переходить везде на "-O2", а то и на "-O3". Вроде уже устройства все имеют более менее достаточно пространства, да и флешки не дороги. Чего так место экономить? Все же до 5% замена на -O2 по умолчанию дает.

4) Опция -march=armv7-a, как мне кажется, избыточна. Достаточно -mcpu=cortex-a9 для Cortex-A9. Тем более, при копиляции для Krait, который ближе к A15, накладывает ограничение на набор CPU инструкций. Я менял на -mcpu=cortex-a9 для ASUS-ов и -mcpu=cortex-a15 для Netgear (плюс -mfpu=neon-vfpv4 для последних). Не принципиально, но все же...

5) Небольшой баг в пакете autossh, в файле S41autossh:

export AUTOSSH _PORT="3333"
export AUTOSSH _GATETIME="0"
export AUTOSSH _PATH="/opt/bin/ssh"

там стоят пробелы в переменных. Сразу и не заметил, покопался минут 20, пока понял, почему не запускается. Должно быть:

export AUTOSSH_PORT="3333"
export AUTOSSH_GATETIME="0"
export AUTOSSH_PATH="/opt/bin/ssh"

6) Ну TOR вообще без стартапа. В принципе, конечно, несложно написать самому, что мне и пришлось сделать.

7) dnscrypt-proxy - немного устаревший dnscrypt-resolvers.csv. Подновил для себя.

8) Netgear - почти совершенство, как железка, но полное убожество по прошивке. Вообще, надеялся, что будет для него какая-нибудь альтернативная прошивка, но они выпустили К7500v2, на которую сейчас и направлены все усилия OpenWRT и DD-WRT программистов. Плюс отсутствие кодов драйверов для 5GHz... Так что Entware-NG и chroot Debian только и альтернатива...
Так вот, к чему я- в этом R7500 даже wget не работает - он изменен для работы только с нетгировскими сайтами. Любой вызов wget на скачку файла ведет к segmentation fault. Так что установка Entware довольно проблематична, так как сам wget отсутствует (инсталяционные скрипты его используют). Я поправил для себя, но хорошо бы иметь скрипт в официале, который бы первым делом ставил не только opkg и библиотеки, а и сам wget.

А вообще, огромное спасибо за этот проект. Теперь мои Netgear-ы выдают c Entware-ng в cpubench для сравнения:

This is CPU and memory benchmark for OpenWRT v0.6. This will then take some time... (typically 30-60 seconds on a 200MHz computer)
Overhead for getting time: 0us
Time to run memory bench: 0.70[secs]
Time to run computation of pi (2400 digits, 10 times): 1.75[secs]
Time to run computation of e (9009 digits): 1.82[secs]
Time to run float bench: 0.01[secs]
Total time: 4.3s

Не Xeon, конечно, но вполне хороший домашний веб-сервер.
Еще раз спасибо,
Voxel.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1147
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 18 мар 2016, 22:24

Спасибо за добрые слова.
1. Оставили 4.8.5, может кому понадобиться. Раньше же был 5.2, а собиралось все с помощью 4.8.5. Конфиги есть для двух вариантов.
2. Проверим
3. Давно уже O2 - https://github.com/Entware-ng/Entware-n ... ig.53#L136 (может быть в Entware (без -ng) и было -Os)
5. Исправим, так и есть
6. Давайте Ваш рабочий пример - вставим
8. Подумаем над эти...

Voxel
Сообщения: 31
Зарегистрирован: 29 фев 2016, 12:34

Сообщение Voxel » 19 мар 2016, 10:51

Насчет "6." TOR - там ничего сложного. Что-то типа /opt/etc/init.d/S90tor:

Код: Выделить всё

#!/bin/sh

ENABLED=yes
PROCS=tor
ARGS=""
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

. /opt/etc/init.d/rc.func


А свежий "7." (dnscrypt-proxy) т.е. /opt/share/dnscrypt-proxy/dnscrypt-resolvers.csv можно брать, например, отсюда:

https://raw.githubusercontent.com/jedis ... olvers.csv

Спасибо!
Voxel.

Voxel
Сообщения: 31
Зарегистрирован: 29 фев 2016, 12:34

Сообщение Voxel » 19 мар 2016, 11:13

Да, забыл сказать, для установки wget с нуля достаточно просто после того, как opkg стал работоспособным (скопированы библиотеки и сделаны симлинки) установить им же скопом следующие пакеты, минимальный набор (я указываю с 5.3.0):

Код: Выделить всё

libc_2.23-4_armv7soft.ipk
libgcc_5.3.0-4_armv7soft.ipk
libopenssl_1.0.2f-1_armv7soft.ipk
libpcre_8.38-1_armv7soft.ipk
libpthread_2.23-4_armv7soft.ipk
librt_2.23-4_armv7soft.ipk
libssp_5.3.0-4_armv7soft.ipk
wget_1.17.1-1_armv7soft.ipk
zlib_1.2.8-1_armv7soft.ipk


Ну некоторая ручная работа для того, кто устанавливает, типа скачать дополнительный архив помимо скрипта установки с набором пакетов для wget. И если такой файл существует (архив) вместе с установочным скриптом, то распаковать и установить с помощью opkg. После этого "opkg update". Так, идея на лету.

Voxel.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1147
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 19 мар 2016, 11:27

Voxel, установку на систему без рабочего wget я делал в 2011. Есть wget-nossl вариант, он требует меньше библиотек. Можно попробовать его статически слинковать. А в процессе установки уже поставить нормальную версию wget.

PS При использовании wget из пакетов при обновлении легко получить неработающий вариант - при обновлении libopenssl или самого wget, wget перестает работать и больше ничего не сделать без дополнительного вмешательства.

Voxel
Сообщения: 31
Зарегистрирован: 29 фев 2016, 12:34

Сообщение Voxel » 19 мар 2016, 12:05

Конечно, я не спорю. У Вас больше опыта, наверное есть уже алгоритм в задумке.
Статический wget - вариант, но требует специального мэинтенанса, как мне кажется. При смене версии wget-а надо еще учитывать и его статического собрата. Я просто вынужден был (без рабочего wget-а) протестировать такую установку вручную, она работает.

Насчет обновления - полностью согласен, но я имел ввиду только самый начальный вариант установки с нуля. Одноразовая штука.

P.S.
Все же Ваша Entware-ng - как спасательный круг. Реально. С Netgear R7500 просто нет никаких других вариантов. Работает уже 3 дня как часы. Пользовался Debian с chroot, но там проблемы в самом R7500 - дебильная работа с файловой системой ext2/3/4 при большом количестве файлов на флешке. Она начинает воспиниматься системой в прошивке как все файлы с маской 777 - всем всё можно. После чего Debian неработоспособен. А с Entware-ng выбрал минимальный набор того, что нужно и все ОК. Спасибо еще раз!

Voxel

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1147
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 19 мар 2016, 12:27

Voxel писал(а):Источник цитаты Пользовался Debian с chroot, но там проблемы

chroot +Debian будет нормально работать если бинарники Debian собраны с близким или "младшим" ядром, иначе разница в syscall'ах может вызвать полную неработоспособность бинарников. При chroot ядро остается от производителя.
chroot just uses your current Kernel. That's just how it works. If you need to change the enveloping kernel, you're going to need to virtualise...

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1147
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 19 мар 2016, 12:38

Для установки на маршрутизаторы кинетик с прошивкой v2 (там нет ни busybox, ни нормального shell, ни wget) в качестве wget используется апплет busybox. А сам bysybox зависит от загрузчика и трех либ (на arm):

Код: Выделить всё

[~] # ldd /opt/bin/busybox
        libm.so.6 => /opt/lib/libm.so.6 (0xb6ded000)
        libgcc_s.so.1 => /opt/lib/libgcc_s.so.1 (0xb6dd3000)
        libc.so.6 => /opt/lib/libc.so.6 (0xb6c96000)
        /opt/lib/ld-linux.so.3 (0xb6f06000)

Voxel
Сообщения: 31
Зарегистрирован: 29 фев 2016, 12:34

Сообщение Voxel » 19 мар 2016, 16:25

chroot +Debian будет нормально работать если бинарники Debian собраны с близким или "младшим" ядром, иначе разница в syscall'ах может вызвать полную неработоспособность бинарников. При chroot ядро остается от производителя.


Это немного оффтопик, но ядро-то там в R7500 достаточно свежее, даже получше чем в асусах:

Код: Выделить всё

root@nighthawk:~$ uname -r
3.4.103


Это позволяет с легкостью использовать Jessie. Если бы не... Тут довольно длинная история. Использую кучу хаков, чтобы все работало.

Проблема в следующем: при монтировании (ручном или автоматическом после ребута или подключения флешки) нативных линуксовых ext2/3/4 файловых систем, они распознаются в нетгире как все файлы/директории с маской 777. Причем, реально атрибуты не меняются: если вставить ту же флешку в компьютер с линуксом, видно, что пермишены нормальные. Вставляю обратно - 777. Если создавать файлы, менять атрибуты chmod-ом, копировать их и т.п. уже после монтирования - все некоторое время работает как надо. Но если, например, запустить распаковку архива с большим количеством файлов, типа минимального Debian для chroot, то часть файлов в Debian получает атрибут 777, причем также меняются и файлы, на файловой системе, которые только что вот имели нормальные атрибуты. Вернее, не меняются, а распознаются системой как 777. Каким-то случайным образом. Опять же, если воткнуть флешку в комп - все нормально. Где надо: -rw--r---r---, где надо -rwxr-xr-x. А в нетгире -rwxrwxrwx. Тут никакой SSH или что не сработает, никакие демоны не запустятся. Я уже прошерстил коды прошивки, но так и не нашел какая собака это портит. Может, демон какой-то специфический сидит. Причем это только с ext2/3/4.

Debian-то работал. Методом проб и ошибок, плюс моего хака скрипта автомонтирования, я подобрал работоспособный тип файловой системы, а именно case-sensitive HFS+. Хотя Товальд его и критиковал, но система все же неплохая. Тут все работает, пермишены не меняются, но тут другая напасть: все же сам линукс хреново работает с маковскими файловыми системами. Сыро все. После где-то месяца нормальной работы Debian-а на HFS+, файловая система получает ошибки, требуется fsck.hfsplus. Поставил проверку системы в скрипте автомонтирования, перед самими монтированием, но все равно, требуется периодический мониторинг. Даже apt-update/apt-upgrade приводит к необходимости перепроверки файловой системы.

Короче, после второго полного краха содержимого файловой системы с необходимостью восстановления из бэкапа, пару недель отказался от Debian. Пришел к (возможно, не совсем нормальной) схеме с Entware-ng на EXT2:

- Вручную установил необходимые пакеты после монтирования. Затем, необходимое конфигурирование и сохранение getfacl-ом всех атрибутов файлов/директорий в файле. Пока еще пермишены не попортились. С Entware-ng пока не встретил интенсивного копирования большого количества файлов, так что атрибуты не испорчены. В крайнем случае придется сохранить атрибуты, воткнув флешку или USB диск в компьютер.

- После монтирования USB диска в роутере автоматом выполняется скрипт с setfacl-ом из Entware, который восстанавливает маски файлов и директорий на этом диске. Что позволяет использовать остальные программы и демоны Entware после этого. За неделю аптайма с Entware пермишены не испортились на 777. С Debian на HFS+ уже бы пришлось бы проверять файловую систему и исправлять минорные ошибки программой fsck.hffplus.

Пока, вроде, работает.

Схема, конечно, дурацкая, но пока ничего лучше не изобрел. Если есть идеи решения, или идеи - кто все портит - буду премного благодарен.

С нетгирами тут вообще трик на трике. Воткнуть в прошивку свой специально собранный dropbear, отпатчить их дурацкий собственный firewall, который периодически портит все мои установки iptables, что требует заставить их firewall выполнять и мои правила, воткнуть в прошивку fsck для ext2/3/4 и HFS+, поменять скрипт монтирования, который для примеру по умолчанию просто портит HFS+ выполняя "chmod -R 777", обезвредить скрипт, который меняет /etc/passwd дурацким образом, не позволяя войти... Железо отличное, а вот прошивка полностью дебильная. Даже NAT loopback нет...

В общем, только и вариант - это Entware-ng. Для несчастных пользователей R7500, польстившихся на привлекательное железо. Я уже год назад описывал свой опыт с Entware для R7500 на зарубежном форуме. Люди пользуются, вроде. Пока никто ничего другого лучше не предложил для этой железяки. Надо же так испортить софтом такую перспективную хардверную конфигурацию...

Самое хреновое сейчас пока с этим 777 для нативных линуксовых разделов.

Voxel.


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 3 посетителя :: 0 зарегистрированных, 0 скрытых и 3 гостя (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (121) здесь было 18 май 2016, 18:19

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя