1

Тема: Qnapware - система пакетов для НАС с архитектурой arm или x86

ОБЩИЕ СВЕДЕНИЯ

Как известно для расширения возможности различный сетевых хранилищ, роутеров, других устройств используется система Optware. Система пакетов Optware очень сильно устарела. Старыми являются и многие пакеты, и сам принцип их сборки, и библиотеки, и средства разработки.

Предлагаю Вашему вниманию систему пакетов, построенную на современных принципах. Это порт известной системы пакетов Entware. Первоначально Entware была перенесена на NAS QNAP с архитектурой x86. Поэтому система называется Qnapware. Qnapware (в отличии от Entware) может существовать одновременно с optware, т.к. устанавливается не в папку opt, а в папку /Apps/opt.

Можно рассматривать QnapwareEntware), как современную замену Optware, хотя разработчики Entware пишут так:

Часто встречающееся заблуждение: Entware, same as Optware but re-built with a modern toolchain Это не так!
Тулчейн, конечно, свежий (относительно Optware) и качественный, спасибо lly, theMIROn, voidshah и всем причастным, но Entware НЕ является наследником Optware и не использует его кодовую базу.

Основателем нового репозитория было принято решение взять за основу другой проект: OpenWrt.

Основная часть пакетов в Entware это: пакет OpenWrt, к которому написаны патчи для работы в /opt и добавлены привычные скрипты запуска. От чего они становятся похожи на оптварные. Примерно раз в месяц проводится синхронизация Entware с транком OpenWrt, что позволяет не протухнуть как Optware и поддерживать проект весьма скромными людскими ресурсами.
Побочным эффектом является то, что конфиги/ключи сборки и пр. могут быть отличными от Optware. И это не плохо и не хорошо. Зачастую, дело привычки.

Вторая часть пакетов в Entware: то, чего в OpenWrt нет по каким-то причинам, но в Optware было. И добавлено по просьбам трудящихся. Что позволяет говорить об Entware, как заменителе Optware (для mipsel архитектуры).

И самые ценные пакеты: те, которых нет ни в проекте Optware, ни в проекте OpenWrt. Можно сказать, то, что придает смысл существованию Entware.

Так что любой, кто будет считать Entware "Optware, только заново пересобранным", будет постоянно разочаровываться. Сравнивать уместно с OpenWrt.

Перед тем, как описать процесс установки Qnapware на различные сетевые хранилища приведу несколько технических деталей.

В настоящий момент готовы универсальные (для разных NAS) репозитории для архитектур arm и x86.
Бинарники arm собирались совместимые с armv5 (должны работать и на новых процах). Таким образом должно все работать на сетевых хранилищах с архитектурой arm выпуска 2009 и новее. Для архитектуры Intel (x86) собирались 32 разрядные библиотеки и бинарники. Он будут работать и на x86, и на x86_64. Использовалось ядро 2.6.32 (системные вызовы), если у Вас древнее сетевое хранилище с древним ядром - работа пакетов не гарантирована. На НАС и прошивках с более современными ядрами работать будет. Использовалась самая новая версия glibc 2.20 и gcc 4.8.3. Используется свой динамический лоадер (glibc 2.20).

Сразу подчеркну, что библиотеки и бинарники Qnapware скорее всего не совместимы с библиотеками из прошивки (и Optware). Если Вы попытаетесь (с помощью ручного копирования, удаления, переноса) подменить библиотеки, Вы получите неработоспособное приложение, которое не будет запускаться или будет вылетать с т.н. segmentation fault.
Как оказалось, бинарный файл с локалями (/usr/lib/locale/locale-archive) на системах со старой версией системной библиотеки glibc не совместим с новой версией библиотеки. Поэтому в Qnapware создается свой архив локалей в файле  /Apps/opt/usr/lib/locale/locale-archive. Первоначально в этом архиве локали en_EN.UTF-8 и ru_RU.UTF-8. Если нужны другие , их легко добавить. Бинарники qnapware используют свои локали, которые не зависят от системных. Трудно сказать - это достоинство или недостаток.
Небольшим недостатком использования вторых копии системных библиотек является увеличенное потребление памяти. Это увеличение очень незначительно.

Общее число пакетов на текущий момент 1700. Пакеты Entware базируются на пакетах openwrt. Если Вы использовали openwrt - все будет знакомым. В openwrt пакеты минимизируются по размеру и дробятся, поэтому их больше.

Список пакетов с сортировкой и поиском:
(arm) http://qnapware.zyxmon.org/binaries-arm/Packages.html
(x86) http://qnapware.zyxmon.org/binaries-x86/Packages.html

2

Re: Qnapware - система пакетов для НАС с архитектурой arm или x86

Установка на NAS QNAP (пакеты qpkg)

Для сетевых хранилищ QNAP собраны пакеты qpkg, устанвливающие Qnapware:

Для архитектуры arm - http://qnapware.zyxmon.org/binaries-arm … m-x19.qpkg
Для архитектуры x86 - http://qnapware.zyxmon.org/binaries-x86 … 1_x86.qpkg

После установки пакета зайдите по ssh на НАС, обновите список пакетов

opkg update

Попробуйте поставить любой пакет

opkg install mc

Синтаксис команд opkg и ipkg очень близок, он рассмотрен в соседней теме.
При установке qpkg в профиль рута (/root/.profile) добавляется вызов команд профиля qnapware (/Apps/opt/etc/profile). Делается это строкой в /root/.profile

. /Apps/opt/etc/profile

3

Re: Qnapware - система пакетов для НАС с архитектурой arm или x86

Установка на NAS Synology и другие с помощью bootstrap скрипта


Для установки с помощью скрипта установки следует:
0. Подготовить директории для установки. Создадим папку /Apps в корне файловой системы, /qnapware на hdd и символические ссылки:

DiskStation> cd /volume1
DiskStation> mkdir @qnapware
DiskStation> mkdir /Apps
DiskStation> cd @qnapware/
DiskStation> mkdir opt
DiskStation> /bin/ln -sf /volume1/@qnapware/opt /Apps/opt

1. Скачиваем и запусткаем скрипт
(для arm)

wget http://qnapware.zyxmon.org/binaries-arm/installer/qnapware_install_arm.sh
chmod +x qnapware_install_arm.sh
./qnapware_install_arm.sh

(для x86)

wget http://qnapware.zyxmon.org/binaries-x86/installer/qnapware_install_x86.sh
chmod +x qnapware_install_x86.sh
./qnapware_install_x86.sh

2. Лог установки примерно такой

Info: Checking for prerequisites and creating folders...
Warning: Folder /Apps exists!
Warning: Folder /Apps/opt exists!
Info: Opkg package manager deployment...
--2015-01-02 14:16:29--  http://qnapware.zyxmon.org/binaries-x86/installer/opkg
Resolving qnapware.zyxmon.org... 81.4.123.217
Connecting to qnapware.zyxmon.org|81.4.123.217|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 143180 (140K) [text/plain]
Saving to: `opkg'

100%[========================================================================>] 143,180      732K/s   in 0.2s

2015-01-02 14:16:30 (732 KB/s) - `opkg' saved [143180/143180]

--2015-01-02 14:16:30--  http://qnapware.zyxmon.org/binaries-x86/installer/opkg.conf
Resolving qnapware.zyxmon.org... 81.4.123.217
Connecting to qnapware.zyxmon.org|81.4.123.217|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 163 [text/plain]
Saving to: `opkg.conf'

100%[========================================================================>] 163         --.-K/s   in 0s

2015-01-02 14:16:30 (8.63 MB/s) - `opkg.conf' saved [163/163]

--2015-01-02 14:16:30--  http://qnapware.zyxmon.org/binaries-x86/installer/ld-2.20.so
Resolving qnapware.zyxmon.org... 81.4.123.217
Connecting to qnapware.zyxmon.org|81.4.123.217|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 134332 (131K) [text/plain]
Saving to: `ld-2.20.so'

100%[========================================================================>] 134,332     --.-K/s   in 0.1s

2015-01-02 14:16:30 (898 KB/s) - `ld-2.20.so' saved [134332/134332]

--2015-01-02 14:16:30--  http://qnapware.zyxmon.org/binaries-x86/installer/libc-2.20.so
Resolving qnapware.zyxmon.org... 81.4.123.217
Connecting to qnapware.zyxmon.org|81.4.123.217|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1698972 (1.6M) [text/plain]
Saving to: `libc-2.20.so'

100%[========================================================================>] 1,698,972   1.15M/s   in 1.4s

2015-01-02 14:16:32 (1.15 MB/s) - `libc-2.20.so' saved [1698972/1698972]

Info: Basic packages installation...
Downloading http://qnapware.zyxmon.org/binaries-x86/Packages.gz.
Updated list of available packages in /Apps/opt/var/opkg-lists/packages.
Installing qnapware (2.6.1-5) to root...
Downloading http://qnapware.zyxmon.org/binaries-x86/qnapware_2.6.1-5_qnapx86.ipk.
Installing libc (2.20-8a) to root...
Downloading http://qnapware.zyxmon.org/binaries-x86/libc_2.20-8a_qnapx86.ipk.
Installing libgcc (4.8.3-8a) to root...
Downloading http://qnapware.zyxmon.org/binaries-x86/libgcc_4.8.3-8a_qnapx86.ipk.
Installing libstdcpp (4.8.3-8a) to root...
Downloading http://qnapware.zyxmon.org/binaries-x86/libstdcpp_4.8.3-8a_qnapx86.ipk.
Installing libpthread (2.20-8a) to root...
Downloading http://qnapware.zyxmon.org/binaries-x86/libpthread_2.20-8a_qnapx86.ipk.
Installing librt (2.20-8a) to root...
Downloading http://qnapware.zyxmon.org/binaries-x86/librt_2.20-8a_qnapx86.ipk.
Installing locales (2.20-8a) to root...
Downloading http://qnapware.zyxmon.org/binaries-x86/locales_2.20-8a_qnapx86.ipk.
Installing findutils (4.5.14-1) to root...
Downloading http://qnapware.zyxmon.org/binaries-x86/findutils_4.5.14-1_qnapx86.ipk.
Installing terminfo (5.9-1a) to root...
Downloading http://qnapware.zyxmon.org/binaries-x86/terminfo_5.9-1a_qnapx86.ipk.
Configuring libgcc.
Configuring libc.
Configuring terminfo.
Configuring locales.
qnapware uses separate locale-archive file independent from main system
Creating locale archive - /Apps/opt/usr/lib/locale/locale-archive
Adding en_EN.UTF-8
Adding ru_RU.UTF-8
/Apps/opt/usr/lib/locale/locale-archive found
You can download locale sources from http://qnapware.zyxmon.org/sources/i18n.tar.gz
You can add new locales for qnapware using /Apps/opt/bin/localedef.new
Configuring libpthread.
Configuring libstdcpp.
Configuring librt.
Configuring findutils.
Configuring qnapware.
Info: Congratulations!
Info: If there are no errors above then Entware successfully initialized.
Info: Add /Apps/opt/bin & /Apps/opt/sbin to your PATH variable
Info: Add '/Apps/opt/etc/init.d/rc.unslung start' to startup script for qnapware services to start
Info: Found a Bug? Please report at https://github.com/Entware/entware/issues

3. Если все нормально, установщик можно удалить.

rm ./qnapware_install_*.sh

4. Теперь пропишем путь к Qnapware. Проще всего добавить в профиль рута (/root/.profile) в самый конец строку

. /Apps/opt/etc/profile

Теперь все изменения можно вносить в системный профиль qnapware (файл /Apps/opt/etc/profile).
Выходим из ssh, заходим заново. Проверяем

DiskStation> echo $PATH
/Apps/opt/bin:/Apps/opt/sbin:/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

5. Пропишем в /etc/rc.local создание /Apps и символической ссылки на папку с qnapware. Запустим скрипты для сервисов. Мой /etc/rc.local выглядит так

DiskStation> cat /etc/rc.local
#!/bin/sh

# Optware setup
[ -x /etc/rc.optware ] && /etc/rc.optware start
# Это для qnapware
/bin/mkdir -p /Apps
/bin/ln -sf /volume1/@qnapware/opt /Apps/opt
/Apps/opt/etc/init.d/rc.unslung start
# конец вставки для qnapware
exit 0

Можем ставить пакеты. Синтаксис opkg (программы установки) близок к ipkg.
6. Например, ставим midnight commander.

opkg install mc

4

Re: Qnapware - система пакетов для НАС с архитектурой arm или x86

Что делает скрипт установки, как установить Qnapware на других устройствах

Скрипт установки создает папку /Apps/opt и устанавливает в эту папку библиотеки, бинарники, файлы конфигураций. Если корневая файловая система устройства расположена в памяти (так, например на НАСах QNAP), то после перезагрузки установка пропадет.
В этом случае можно поступить следующим образом:
1. Создаем папку /Apps в корневой файловой системе

mkdir /Apps

2. Создаем папку opt на hdd

mkdir <путь на hdd>/opt

3. Создаем символическую ссылку

ln -sf <путь на hdd>/opt /Apps/opt 

4. Устанавливаем, как в предыдущем сообщении.
5. В скрипте автозапуска для НАС следует прописать примерно такие команды

mkdir /Apps
ln -sf <путь на hdd>/opt /Apps/opt 
echo "export PATH=/Apps/opt/bin:/Apps/opt/sbin:$PATH" >> /root/.profile
/Apps/opt/etc/init.d/rc.unslung start 

Для QNAP стартовый скрипт можно создать по инструкции отсюда
http://wiki.qnap.com/wiki/Running_Your_ … at_Startup

5

Re: Qnapware - система пакетов для НАС с архитектурой arm или x86

В этой теме обсуждаем только установку Qnapware

Работу приложений Qnapware обсуждаем в отдельных темах!!!

6

Re: Qnapware - система пакетов для НАС с архитектурой arm или x86

Ссылки на другие ресурсы:
1. Англоязычный форум Synology - http://forum.synology.com/enu/viewtopic … mp;t=95346
2. Русскоязычный форум Synology - http://www.synology-forum.ru/index.php?showtopic=6667
3. Англоязычный форум QNAP - http://forum.qnap.com/viewtopic.php?f=320&t=100843
4. Русскоязычный форум QNAP - http://forum.qnap.ru/mobilnye-prilozhen … og-optware

7

Re: Qnapware - система пакетов для НАС с архитектурой arm или x86

Аддон для dns-327l:
ссылка для скачивания

Вкратце, этот аддон содержит базовую конфигурацию qnapware, скрипты для установки в nas, старт/стоп-скрипты для запуска /Apps/opt/etc/init.d/rc.unslung start/stop по клику на кнопки в вебке nas'а.