Как я уже писал в предыдущей части, связка из NAS4Free и телевизора Samsung с функцией AllShare нормально функционировать по протоколу DLNA у меня отказывались. И было принято решение собрать тестовый сервачек и установить на него полноценную операционную систему. Какую? конечно же FreeBSD. Тем более что захотелось «обкатать» относительно недавно вышедший релиз 9.1.
Прокопавшись по сусекам, на свет были извлечены:
- материнская плата Intel D201GLY2, формата mini-ITX, несущая на борту процессор Celeron 220 на ядре Conroe-L, чипсет от фирмы SiS в составе северного моста SiS662 и южного моста SiS964, пару SATA-150 портов, сетевую карту 100 Мбит/с на чипе Broadcom AC131, один слот памяти DDR2, поддерживающий до 2 Гб планки с максимальной поддерживаемой частотой DDR2-533 (PC2-4200), все остальное в нашей ситуации не важно,
- планка памяти 512Mb DDR2-667 PC5300 Corsair,
- блок питания FSP ATX-350GTF,
- DVD-RW LG GSA-H42N (конечно, можно просто установить с флешки, но DVD-RW привод найден был быстрее, чем подходящая флешка),
- с работы из ЗИП комплекта был позаимствован жесткий диск на 2Тб WD20EARS-00MVWB0.
Все вышеперечисленное было собрано в корпусе, название модели которого и производителя давным давно никто не помнит. Я даже не помню, откуда он у меня появился :)
На все это хозяйство была установлена FreeBSD 9.1, торрент-клиент transmission 2.77, SMB/CIFS-сервер samba 3.6.12, и, конечно же, miniDLNA версии 1.0.25.
Все это работало стабильно и беспроблемно, кроме minidlna. Все таки, добиться от miniDLNA самостоятельного обновления базы файлов было не возможно. Поэтому снова был применен костыль , в виде скрипта, запускающегося каждые две минуты из крона, и проверяющего наличие маркерного файла res.txt в папке /SAMBA/video/.
Приведу, на всякий случай, код скриптика, вдруг кому-то пригодится:
#!/bin/sh if [ -e /SAMBA/video/res.txt ]; then rm -rf /SAMBA/video/res.txt killall minidlna rm -rf /var/db/minidlna/* killall minidlna rm -rf /var/db/minidlna/* touch /var/db/minidlna/files.db chmod 777 /var/db/minidlna/files.db /usr/local/etc/rc.d/minidlna restart fi
Но все равно хотелось избавится от этого «пинка под зад», и я снова углубился в серфинг по инету, в поисках решения проблемы. И хоть решение найдено не было, зато была найдена причина такой проблемы.
Оказалось, что minidlna отслеживает изменения во вверенных ей папках с помощью механизма inotify, который есть в linux, но отсутствует во FreeBSD. Во FreeBSD используется kqueue, который не используется портированным под FreeBSD minidlna. И, соотвественно, minidlna не получает уведомлений об изменениях во вверенных ей папках, и потому не обновляет базу.
Так что и с полноценной FreeBSD, а не её обрезком, который внутри NAS4Free, тоже ничего толкового не выйдет. А это означает, что я буду переводить этот NAS-сервер под линукс. В следующей части об этом будет более подробно.
|
Комментарии