Самостоятельная установка из исходников и настройка кардшаринга в MythTV на примере OS Centos 7.
Для опытных пользователей Linux.
Мотивация выбора ОС :
1) на руках имеется почти десятилетний двухядерный компьютер AMD atlon 5200 2гб RAM
Видео Nvidia GT 9500 512мб RAM с поддержкой VDPAU, DVB карта SkyStar USB HD
HDD 80 гб для тестирования.
2) имеется желание построить стабильную рабочую станцию с использованием скромных ресурсов и обеспечить в ней комфортный просмотр спутникового тв в красивой графической обёртке на базе серверной операционной системы. За одно расширить свой кругозор в мире linux.
3) Centos 7 бинарно совместима с RHEL7 коммерческим дистрибутивом , унаследовала от него многие решения и так же имеет десятилетний срок поддержки, таким образом получаемый продукт должен стать надёжным и долговечным медиацентром исключающим неприятные сюрпризы ( аля ubuntu после обновления ).
Итак представим что мы уже установили Centos 7 на ваш выбор это может быть установка сервера или с графическим окружением gnome хотя лично я предпочитаю что нибудь полегче и поудобнее. В любом случае для получения кодеков в семействе RedHat сушествуют сторонние репозитории nux.dekstop и epel а для того что бы получить проприаретарный драйвер для видеокарт nvidia с поддержкой VDPAU удобно установить kmod-nvidia из репозитория elrepo.
С подключенными репозиториями для вас будут доступны дополнительно такие окружения как XFCE, MATE, LXQT. KDE я умышленно обошёл вниманием так как набор пакетов для него в сравнении с debian или kubuntu покажется весьма старым и убогим.
Для своей древней машинки я использую окружение Trinity Однаконадо всегда помнить что дополнительные источники это потенциально дополнительные проблемы и по завершению настройки я удалил записи о них из /etc/yum.repos.d
Естественно для рабочей станции нам необходимы флеш и кодеки . Эти пакеты могут спокойно обновляться как и из родных репозиториев их источники я оставил доступными.
Из поиска в интернете я пришёл к выводу что хорошо собранных пакетов mythtv для Centos 7 нет ( как в прочем и для абсолютного большинства других дистрибутивов) по этому соберём программу самостоятельно благо с разработкой в данном дистрибутиве всё хорошо, в пределах свежести установленного софта конечно.
Готовим среду для работы и сборки
sudo -i
yum install epel-release
yum groupinstall 'Development Tools'
yum groupinstall "X Window System"
yum install epel-release mariadb-server git qt-devel yasm libuuid-devel taglib-devel httpd php perl-DBD-MySQL perl-HTTP-Request-AsCGI perl-IO-Socket-IP perl-IO-Socket-INET6 perl-DBI perl-ExtUtils-MakeMaker MySQL-python libxml2-devel perl-libwww-perl python-pip libxslt-devel php-mysql MySQL-python qt-mysql nfs-utils
pip install lxml qtwebkit-devel perl-Proc-ProcessTable perl-Digest-SHA libv4l-devel openssl-devel libvdpau-devel libvdpau
Часть сборочных зависимостей я добавил к официальному руководству , они вычислены экспериментальным путём и необходимы для сборки модулей vdpau и эмулятора ffdecsawrapper.
Начнём именно с ffdecsawrapper порядок его установки и настройки похож на debian/ubuntu но имеются существенные нюансы.
Получаем исходники ядра для дальнейшего удобства копируем их из нашей домашней дирректории
в /usr/src и переходим туда
cd /usr/src
git clone https://github.com/bas-t/ffdecsawrapper.git
tar -xpJf linux-3.10.0-327.36.3.el7.tar.xz
cd linux-3.10.0-327.36.3.el7
patch -p0 < ../ffdecsawrapper/linux-3.7-dvb-mutex.patch
mkdir -p /lib/modules/$(uname -r)/updates/ffdecsawrapper
make -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/media/dvb-core
cp drivers/media/dvb-core/dvb-core.ko /lib/modules/$(uname -r)/updates/
depmod
reboot
Собираем пропатченный на всякий случай под biss ffdecsawrapper
cd /usr/src/ffdecsawrapper
######BISS#########################
#Правим по пути
/usr/src/ffdecsawrapper/sc/PLUGINS/src/systems/constcw/constcw.c
#ищем в нём секцию
return ecm->prgId==prgId && ecm->source==source && ecm->transponder==transponder;
#и просто обрезаем её до
return ecm->prgId==prgId;
#сохраняем изменения и можем приступать к компиляции
Собираем читая выводы инсталлятора
./configure
depmod -a
shutdown -r now
nano /etc/default/ffdecsawrapper
# Run as <username>, don't run as root.
# USER must be member of the video group in order to get access to adapters
# Do: usermod -a -G video <username> to add USER to the video group.
USER="ffdecsawrapper"
# Number of adapters dedicated to ffdecsawrapper
# Maximum is 4 because max 8 adapters are permitted in your system.
# (4 real + 4 loopback) If you need more, like me, recompile your kernel.
# So if you have 2 adapters, you need to set "-j a:c -j b:d" in JOIN=" "
NUMADAPTERS='1'
# Number of seconds delay you need before (re)loading dvbloopback and other components.
# On Debian 2 or 3 is fine
DELAY="1"
# Combine (some of) your real adapters with loopback adapters
# Example: assuming you have 5 real adapters installed in your system
# The first two of them are in use with Tvheadend or some other program
# Number 3, 4 and 5 will be used by MythTV
# Then you should set: -j 2:5 -j 3:6 -j 4:7
JOIN="--join 0:1"
# The directory in which you have placed the cam files needed
# to communicate with Oscam or other cardserver
CAMDIR="/etc/ffdecsawrapper"
# Other options to pass to ffdecsawrapper
# N.B.: One user reported that --buffer 8M works, and --buffer 16M crashes ffdecsawrapper.
# This probably has something to do with the (lack of) 'vmalloc' settings in /etc/default/grub.
# But I did not test it yet.
OPTS="--cam-budget --sid-allpid --sid-filt 20 --buffer 16M"
#
ENABLED="1"
nano /etc/systemd/system/ffdecsawrapper.service
[Unit]
Description=FFdecsawrapper
After=network.target
Before=multi-user.target
StopWhenUnneeded=true
[Service]
Type=forking
Nice=-10
User=root
Group=video
PIDFile=/run/ffdecsawrapper.pid
EnvironmentFile=/etc/default/ffdecsawrapper
ExecStartPre=/sbin/modprobe dvbloopback
TimeoutSec=2
ExecStart=/usr/bin/ffdecsawrapper --join 0:1 --cam-budget --sid-allpid --sid-filt 20 --buffer 16M --daemon --pidfile /run/ffdecsawrapper.pid --cam-dir /etc/ffdecsawrapper --log /tmp/ffdecsawrapper.log
[Install]
WantedBy=multi-user.target
mkdir -p /etc/ffdecsawrapper
nano /etc/ffdecsawrapper/cardclient.conf
newcamd:server:port:0/0500/ffff:login:passwd:0102030405060708091011121314
Запускаем ffdecsawrapper
systemctl daemon-reload
systemctl enable ffdecsawrapper.service
systemctl start ffdecsawrapper.service
Полноценно он заработает посре перезагрузки системы.
Собираем Mythtv в своей домашней папке, комады выполняет от пользователя с использованием sudo только для установки и изменения системных параметров.
mkdir ~/source
cd ~/source
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar xvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make -j3
sudo make install
cd ~/source
git clone https://github.com/MythTV/mythtv.git
cd mythtv/mythtv
git checkout fixes/0.27
./configure
make -j3
sudo make install
cd ~/source
cd mythtv/mythplugins
./configure
make -j3
sudo make install
По умолчанию все результаты сборки у нас легли в /usr/local/lib доведём эту информацию системе
nano /etc/ld.so.conf.d/mythtv.conf
с содержимым
/usr/local/lib
sudo /sbin/ldconfig
Добавляем для коллекции mythweb меняя соответственно имя пользователя mythtv ( из официальной хавтушки на имя своего пользователя)
З.Ы. Следует понимать разницу между простым пользователем и зарезервированным системным пользователем mythtv !
cd ~/source
git clone https://github.com/MythTV/mythweb
sudo ln -s /home/mythtv/source/mythweb/ /var/www/html/
sudo cp /home/mythtv/source/mythweb/mythweb.conf.apache /etc/httpd/conf.d/mythweb.conf
При установке зависимостей мы поставили в систему апач и форк мускула под названием mariadb нам необходимо последовательно от суперпользователя поставить в автозапуск и запустить эти сервисы
systemctl enable httpd.service
systemctl start httpd.service
systemctl enable mariadb.service
systemctl start mariadb.service
Настроим mythweb
( на самом деле гораздо удобнее сделать это через графический редактор запущенный с правами root ) например
gksu gedit /etc/httpd/conf.d/mythweb.conf
и привести к виду
<Directory "/var/www/html/mythweb/data">
# For Apache 2.2
#Options -All +FollowSymLinks +IncludesNoExec
# For Apache 2.4+
Options +FollowSymLinks +IncludesNoExec
</Directory>
<Directory "/var/www/html/mythweb" >
дать права , помня о том как зовут нашего пользователя (не mythtv)
sudo chown -R apache: /home/mythtv/source/mythweb/data
sudo chmod -R g+w /home/mythtv/source/mythweb/data
Настроим временную зону , я живу по москве
gksu gedit /etc/php.ini
date.timezone = Europe/Moskow
Перезапустим апач
sudo systemctl restart httpd
Добавим в системного пользователя mythtv
sudo useradd --system mythtv
Теперь самый ответственный момент в настройке. Дело в том что все настройки оборудования и каналов бэкенда mythtv хранит как базу данных mysql и как я понял большинство желающих работать с mythtv спотыкаются на этом моменте от части по тому что в англоязычных манах грубо нарушен порядок действий
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
mysql_secure_installation
последняя команда призвана создать пароль для мускула, тупо жмём ввод до того момента когда попросит ввести пароль, потом подтверждаем его, естественно запоминаем или записываем если с памятью проблемы. Далее последовательно выполняем приведённые ниже команды из официального мана но честно признаюсь меня несколько раз преследовала неудача, до тех пор пока я не поменял
localhost на 127.0.0.1
mysql -u root -p
create database mythconverg;
create user 'mythtv'@'%' identified by 'mythtv';
create user 'mythtv'@'localhost' identified by 'mythtv';
set password for 'mythtv'@'%' = password('mythtv');
set password for 'mythtv'@'localhost' = password('mythtv');
connect mythconverg;
grant all privileges on *.* to 'mythtv'@'%' with grant option;
grant all privileges on *.* to 'mythtv'@'localhost' with grant option;
flush privileges;
exit;
забегая вперёд скажу что у меня всё настраивалось и сканировалось но при попытке воспроизведения каналов вылезала пресловутая ошибка "all tuners are currently busy " гугл же не выдаёт по этому поводу ни одного вразумительного ответа.
Помня пароль что мы задали для мускула подрузим информацию о временных зонах иначе дело дальше не пойдёт.
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Следующим этапом нам необходимо сделать автозапуск бэкенда mythtv (в официальных манах нет этой информации).
sudo nano /usr/lib/systemd/system/mythbackend.service
[Unit]
Description=MythTV Backend
After=ffdecsawrapper.service
Requires=ffdecsawrapper.service mariadb.service
[Service]
User=mythtv
EnvironmentFile=-/etc/mythtv/additional.args
ExecStartPre=/usr/bin/nm-online --quiet --timeout=5
ExecStart=/usr/local/bin/mythbackend --logpath /var/log/mythtv --quiet $ADDITIONAL_ARGS $MYTHTV_BE_OPTS
StartLimitBurst=10
StartLimitInterval=15m
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable mythbackend.service
но запускать его ещё рано и бесполезно
Вопреки последовательности официальных манов выполним от пользователя
mythtv-setup
Впервые мы увидели графическую оболочку программы, системный язык присутствует и если не суетится всё достаточно просто. По минимуму нам надо настроить общие, карты захвата, источники, соединения входов и каталоги для записи.
У меня тема не дефолтная и скрины только там где я что то менял.
По окончанию настройки выполним команду котрая в официальных манах выполняется раньше и возможно всё губит
mythbackend
Что бы всё прошло успешно необходимо дождаться завершения процесса в консоли. В противном случае будет фатальная но исправимая ошибка.
Настало время запустить наш бэкенд
sudo systemctl start mythbackend.service
# у меня на карточке загорается зелёный светодиод а вообще лучше проверить
sudo systemctl status mythbackend.service
В большинстве случаев если мы меняли настройки в mythtv-setup при выходе по клавише Esc будет предложено выполнить
mythfilldatabase
в любом случае не забываем это сделать после запуска бэкенда.
Если всё удачно можем запускать
mythfrontend
Откроется графическое окно программы где уже можно смотреть тв или выбрать и настроить тему, драйвер видео и звука и вообще очень много полезных и не очень графических настроек.
Интерфейс программы конечно требует некоторого привыкания но в целом он приятен и достаточно удобен а количество различных настроек для просмотра тв больше чем в XBMC/KODI
Естественно для удобства пользования я добавил mythfrontend в меню приложений с подходящим лого и вынес на панель быстрого доступа.., но это уже зависит от ваших индивидуальных предпочтений.
В случае если всё таки что то пошло не так;
Не стоит отчаиваться или паниковать, достаточно остановить бэкенд и мускул
sudo systemctl stop mythbackend.service
sudo systemctl stop mariadb.service
удалить рекурсивно базу данных mysql по адресу /var/lib/mysql
Запустить мускул
sudo systemctl start mariadb.service
и повторно произвести настройку.
При подготовке материала использованы официальные маны http://brainrecursion.com/post/homeserver/myth-centos7-build/
https://www.mythtv.org/wiki/Build_from_Source
http://www.gossamer-threads.com/lists/mythtv/dev/594252
З.Ы. лайки ставить не надо но вы можете помочь материально если возникнут вопросы в которых я разобрался но забыл упомянуть мы всегда можем их обсудить.