середа, 5 травня 2010 р.

Інсталяція VDR для archlinux

Це доповнений вільний переклад цього wiki.

Базове налаштування Archlinux

Перш за все Вам потрібно заінсталювати Archlinux. Рекомендується створити одну партицію для системи і ще одну для Ваших записів. Останню змонтувати до  /var/lib/video.00. Тут є приклад стрічки в fstab:
/dev/sda3 /var/lib/video.00          ext3    defaults,user        0       2
Після інсталяції основної системи бажано мати доступ до VDR. Для цього інсталюємо ssh сервер:
pacman -Sy openssh
Дозволити з’єднання з сервером:
nano /etc/hosts.allow
і додаємо стрічку:
# let everyone connect to you
sshd: ALL
Також перевіряємо  файл /etc/hosts.deny чи має стрічку
ALL: ALL: DENY
Якщо не має, то додаємо її.
Стартуємо sshd демон, і додаємо sshd до файлу /etc/rc.conf щоб демон стартував при завантаженні:
/etc/rc.d/sshd start
nano /etc/rc.conf
DAEMONS=(... ... sshd ... ...)
Перевіряємо чи працює віддалене з’єднання знашим сервером:
ssh -l 
Було б добре синхронізувати локальну базу пакунків з репозитаріями:
pacman -Sy
і інсталювати пакети для подальшого збирання VDR:
pacman -S base-devel kernel-headers
Нарешті можна приступати до установки VDR.  Перед інсталяцією варто переконатися, що система підтримує Вашу DVB-S чи DVB-S2. На даний момент практично майже всі карти підтримується. Якщо карта не підтримується, спробуйте скомпілювати і інсталювати драйвера від Ігоря Ліпляніна. Якщо використовується карта NVIDIA, яка підтримує технологію VDPAU (Video Decode and Presentation API for Unix), то зверніться до сторінки VDPAU.

Lirc

LIRC = "Linux Infrared Remote Control", програма, яка управляє пристроями, що використовують інфрачервоний порт з linux.
Інсталяція lirc:
pacman -S lirc lirc-utils
Пакет lirc забезпечує відповідний модуль ядра.

Пристрої на базі X10

Для пристроїв, які базовані на протоколі X10, потрібно використати lirc_atiusb, і відповідно додати в чорний список непотрібні модулі від lirc (ati_remote):
nano /etc/modprobe.d/modprobe.conf
Щоб додати до чорного списку, дописуємо стрічку:
blacklist ati_remote
Далі потрібно відредагувати  /etc/rc.conf і додати демон lircd до списку демонів, щоб демон стартував при завантаженні:
DAEMONS="(... lircd)"
Тепер потрібно відредагувати lircd.conf для X10, наприклад так як у прикладі тут USB_X10. Для цього створити якийсь файл в  /etc/conf.d/ , наприклад:
nano /etc/conf.d/lircd_X10.conf
Вставити в нього код з прикладу вище і зберегти його. Тепер потрібно додати його конфігураційного файлу lircd:
nano /etc/conf.d/lircd
Він повинен виглядати подібно до цього:
LIRC_DEVICE="/dev/lirc0"
LIRC_DRIVER=""
LIRC_EXTRAOPTS=""
LIRC_CONFIGFILE="/etc/conf.d/lircd_X10.conf"
Потім запустити irw з командної стрічки і понатискати якісь кнопки на пульті. Повинен бути відгук на команди пульта:
[crow@vdrbox ~]$ irw
00000014e20d0000 00 1 Medion_X10
00000014e20d0000 01 1 Medion_X10
000000140b360000 00 ren Medion_X10
000000140b360000 01 ren Medion_X10
00000014ed180000 00 snapshot Medion_X10
00000014ed180000 01 snapshot Medion_X10
Це означає, що все ОК.

Пристрої на базі lirc_serial

Після інсталяції lirc і lirc-utils потрібно впевнитися, що Ви маєте серійний порт, для цього зробити "dmesg |grep ttyS". Це повинно дати щось подібне на це:
[@~]# dmesg |grep ttyS
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:01: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[@~]#
В цьому прикладі ми бачимо, що наш порт є на пристрої ttyS0. Тепер потрібно викликати драйвер ядра lirc_serial, запускаючи "modprobe lirc_serial". Якщо немає ніяких помилок, то продовжуємо далі. Якщо ж виходить якась помилка, тто потрібно її виправити.
[@~]# modprobe lirc_serial
FATAL: Error inserting lirc_serial (/lib/modules/2.6.32-ARCH/kernel/drivers/misc/lirc_serial.ko): Device or resource busy
то тут видно, що серійний порт вже використовується, і потрібно це припинити наступними діями:
[@~]# pacman -S setserial
[@~]# setserial /dev/ttyS0 uart none
[@~]# modprobe lirc_serial
Відгук "dmesg" повинен бути схожий на це:
lirc_dev: IR Remote Control driver registered, major 61
lirc_serial: port 03f8 already in use
lirc_serial: use 'setserial /dev/ttySX uart none'
lirc_serial: or compile the serial port driver as module and
lirc_serial: make sure this module is loaded first
lirc_serial: auto-detected active low receiver
lirc_dev: lirc_register_driver: sample_rate: 0
lirc_serial $Revision: 5.104 $ registered
Це означатиме, що тепер все в порядку. Завтоматизуємо подані вище команди, використовуючи окремий конфігураційний файл для lirc:
[@~]# nano /etc/modprobe.d/lirc_custum.conf
Вставимо ці команди туди:
alias char-major-61 lirc_serial
options lirc_serial irq=4 io=0x3f8
install lirc_serial /usr/bin/setserial /dev/ttyS0 uart none; /sbin/modprobe --ignore-install lirc_serial
Зберігаємо і перевіряємо /etc/conf.d/lircd.conf що він має правильні налаштування:
LIRC_DEVICE="/dev/lirc0"
LIRC_DRIVER=""
LIRC_EXTRAOPTS=""
LIRC_CONFIGFILE="/etc/conf.d/lircd_xbox360.conf"
Також потрібно додати lirc_serial до файлу /etc/rc.conf, щоб він викликався при завантаженні системи, тобто в /etc/rc.conf додати lirc_serial в MODULES=() :
MODULES=(lirc_serial)
Покладемо lircd_xbox360.conf або конфігураційний файл Вашого пульта в /etc/conf.d/ , пам’ятаючи про зміну шляху до нього в lircd.conf. Після старту lircd і запуску irw Ви повинні побачити подібне:
[@~]#/etc/rc.d/lircd start
[@~]# irw
000000037ff00bfe 00 1 Harmony_XBOX_360
000000037ff00bfe 01 1 Harmony_XBOX_360
000000037ff00bfd 00 2 Harmony_XBOX_360
000000037ff00bfd 01 2 Harmony_XBOX_360
000000037ff00bfc 00 3 Harmony_XBOX_360
000000037ff00bfc 01 3 Harmony_XBOX_360
^C
[@~]#
Потрібно також додати lircd демон до /etc/rc.conf, так як це було зроблено для пристроїв на базі X10, перезавантажити комп’ютер, запустити irw і переконатися що відклик є правильним. Після цього продовжувати наступні кроки. Далі ми заінсталюємо xorg і alsa.

xorg, alsa і драйвери nvidia

pacman -S xorg fam hal
#Advanced Linux Sound Architecture (ALSA)
pacman -Sy alsa-lib alsa-utils
Відредагуйте /etc/rc.conf і додайте alsa до демонів:
DAEMONS="(... alsa...)"

Якщо Ви використовуєте HDMI, то потрібно включити hdmi/iec958/spdif, оскільки по замовчуванню воно відключено. Так само бажано перевірити, чи наша карта (hdmi/iec958) є в списку за допомогою aplay -L :

$ aplay -L
. # I deleted line which are used for speakers as we just need HDMI/spdif
.
.
iec958:CARD=NVidia,DEV=0
    HDA NVidia, ALC662 rev1 Digital
    IEC958 (S/PDIF) Digital Audio Output
hdmi:CARD=NVidia,DEV=0
    HDA NVidia, HDMI 0
    HDMI Audio Output

Якщо Ви це бачите, тоді включіть SPDIF вивід за допомогою  alsamixer . Використовуючи клавіші "вправо" і "вліво" перейдіть до пристрою "iec958/hdmi/spdif" і зніміть заглушку, натиснувши клавішу "m". Тоді переконайтеся, що все працює:


speaker-test -c 6 -Dplug:hdmi # or -Dplug:iec958
#then store alsamixer settings
alsactl -f /var/lib/alsa/asound.state store

Базова інструкція по VDR

Ми використовуємо звичайного користувача для компіляції всього VDR. В цьому прикладі це буде archvdr (можна змінити на будь-якого на Ваш розсуд):
useradd -m -G users,audio,lp,optical,storage,video,wheel,power -s /bin/bash archvdr
Це додасть користувача до всіх потрібних груп, а ця команда встановить пароль для цього користувача:
passwd archvdr
Потрібно інсталювати sudo, щоб мати змогу інсталювати пакети як користувач:
pacman -S sudo
EDITOR=nano visudo
І додати стрічку під: # User privilege specification root ALL=(ALL) ALL:
archvdr   ALL=(ALL) ALL
Тепер можете залогуватися як новий користувач archvdr і продовжувати інсталяцію VDR. Для цього заінсталюємо subversion і скачаємо PKGBUILD-и VDR пакетів:
sudo pacman -S subversion
svn co https://archvdr.svn.sourceforge.net/svnroot/archvdr archvdr

Драйвера nvidia і утиліти

Ми використовуємо офіційні драйвера nvidia з репозиторію archlinux.
sudo pacman -Sy nvidia nvidia-utils libvdpau
Тепер потрібно створити файл xorg.conf для X11, і оскільки GUI не буде використовуватися, тож відключимо composite, який часом створює проблеми без інстальованого GUI.
sudo nvidia-xconfig --no-composite
Після інсталяції драйверів для nvidia можна компілювати VDR.
Почнемо з драйверів DVB-S2, ttf-symbols і start-stop-daemon.

s2-liplianin-hg

cd ../s2-liplianin-hg
sudo pacman -S mercurial
makepkg -s
sudo pacman -f -U s2-liplianin-hg-*-i686.pkg.tar.gz

УВАГА!!! Після кожної інсталяції ядра Archlinux потрібно переінстальовувати s2-liplianin-hg!!!!

ttf-vdrsymbols

cd ../ttf-vdrsymbols/
makepkg -s
sudo pacman -U ttf-vdrsymbols-*-i686.pkg.tar.gz

start-stop-daemon

cd ../start-stop-daemon/
makepkg -s
sudo pacman -U start-stop-daemon-*-i686.pkg.tar.gz

VDR

cd ../vdr-1.7.19/
makepkg -s
sudo pacman -U vdr-1.7.*-i686.pkg.tar.gz

Інсталяція VDR також додасть користувача і групу vdr, однак потрібно вручну додати його до списку sudors:
sudo EDITOR=nano visudo
І під стрічкою: "# User privilege specification root ALL=(ALL) ALL" додаємо це:
vdr    ALL=(root) NOPASSWD: ALL
Цього повинно бути достатньо для VDR. Тепер збудуємо кілька vdr-плагінів і системних пакетів для VDR.

vdr-acpiwakeup

cd ../vdr-addon-acpiwakeup/
makepkg -s
sudo pacman -U vdr-addon-acpiwakeup-*-i686.pkg.tar.gz

xine-lib

cd ../xine-lib-1.2/
makepkg -s
sudo pacman -U xine-lib-vdpau-*-i686.pkg.tar.gz

xine-ui

cd ../xine-ui-vdr-cvs/
makepkg -s
sudo pacman -U xine-ui-vdr-*-i686.pkg.tar.gz

vdr-xineliboutput

cd ../vdr-plugin-xineliboutput-cvs/
makepkg -s
sudo pacman -U vdr-plugin-xineliboutput-*-i686.pkg.tar.gz

xine-vdr

cd ../vdr-plugin-xine/
makepkg -s
sudo pacman -U vdr-plugin-xine-*-i686.pkg.tar.gz

Старт vdr


sudo /etc/rc.d/vdr start

Підготовка графічного клієнта VDR

Нижче вважається, що ви маєте робочий xorg.conf  і що X сервер запущено.

Інсталяція vdr-scripts

Нам потрібно vdr-plugin-signal, рскільки vdr-scripts залежить від нього:

cd ../vdr-plugin-signal/
makepkg -s
sudo pacman -U vdr-plugin-signal-*-i686.pkg.tar.gz

vdr-scripts

cd ../vdr-scripts/
makepkg -s
sudo pacman -U vdr-scripts-*i686.pkg.tar.gz

Пакет vdr-scripts містить скрипти для обслуги Вашого VDR. Він також містить деякі специфічні скрипти для старту і зупинки графічного клієнта VDR. Корисно подивитися на вміст цього пакету і за необхідності виправити потрібні файли.

В /etc/default/vdrfrontend Ви можете вибрати бажаний графічний клієнт.

    * FRONTEND=xinexv : xine плагін в зв’язці з  відео драйвером xv
    * FRONTEND=xinevdpau : xine плагін в зв’язці з  відео драйвером vdpau
    * FRONTEND=sxfexv: xineliboutput плагін в зв’язці з  відео драйвером xv
    * FRONTEND=sxfevdpau : xineliboutput плагін в зв’язці з  відео драйвером vdpau

Якщо Ви бажаєте запустити інший клієнт або щось змінити, то загляньте до /var/lib/vdr/vdr-client.

Після закінчення налаштувань запускаєте клієнт:
/etc/rc.d/vdrclient start

В комбінації з плагіном vdr-plugin-menuorg Ви можете використати vdr-scipts для рестарту wlan або зробити копію вашої інсталяції VDR.

Підказка: Додайте в grub.conf до параметрів ядра nox. Це дозволить Вам завантажитися без клієнта vdr. Це помічне, якщо Вам потрібен shell.

Закінчення

Якщо все працює як очікувалося, Ви можете автоматично стартувати vdr і графічний клієнт vdrclient. Відредагуйте /etc/rc.conf і додайте до списку демонів:
DAEMONS="(... vdr-addon-acpiwakeup vdr-pre @vdr @vdrclient)"

Копія (backup)

Коли все зроблено, можна про всяк випадок зберегти копію Вашого VDR. Найлегший шлях це використати vdr-scripts і vdr-plugin-menuorg.
Ви повиння побачити ED's команди в головнрму меню. Знайдіть їх і виберіть Backup в наступному меню.
Ви побачите екранне повідомлення що почався процес збереження. (Використайте vdr-plugin-mlist щоб прочитати пропущені повідомлення.)
Коли збереження закінчиться, Ви можете знайти його в /backup/.

Увага: Скрипт збереження копії очистить системні логи у /var/log/.


VDPAU трюки

На AMD машинах важливо встановити мінімальну частоту CPU на 1.8GHz для отримання добрих результатів з VDPAU.

Це обмеження походить з включеного контролера пам’яті в CPU.


Інсталяція cpufrequtils

pacman -S cpufrequtils
і додайте до списку демонів в /etc/rc.conf :
DAEMONS="(... cpufrequtils)
Відредагуйте /etc/conf.d/cpufreq і впевніться, що виставлено min_freq="1.8GHz", так як в прикладі:

#configuration for cpufreq control
# valid governors:
#  ondemand, performance, powersave,
#  conservative, userspace
governor="ondemand"
# valid suffixes: Hz, kHz (default), MHz, GHz, THz
min_freq="1.8GHz"
max_freq="2.5GHz"


Файл build_vdr_stuff.sh
#!/bin/sh

WORK=$PWD
#PLUGINS=`ls -l | grep vdr-plugin | awk -F ' ' '{print $9;}'`
PLUGINS=`pacman -Q | grep vdr-plugin | awk -F ' ' '{print $1;}'`


rm -Rf $WORK/build.log $WORK/packages/
mkdir $WORK/packages/

#cd $WORK/../..
#sudo -u vdr svn update
#cd $WORK

# build vdr
VDR=`ls -l | grep vdr-1.7 | awk -F ' ' '{print $9;}'`
VDR=vdr-1.7.15
echo $VDR
cd $WORK/$VDR
rm -rf src pkg > /dev/null
makepkg --asroot -c -f -s
mv *pkg.tar.gz $WORK/packages/ > /dev/null
mv *pkg.tar.xz $WORK/packages/ > /dev/null
BUILD=`ls $WORK/packages/$vdr*`
if [ "$BUILD" == "" ]; then
    echo "build fail for $VDR" >> $WORK/build.log
fi
pacman -U $WORK/packages/vdr-1.7*.pkg.tar.xz

#build xine libs
PKG=xine-lib-1.2
cd $WORK/$PKG
rm -rf src pkg > /dev/null
makepkg --asroot -c -f -s
mv *pkg.tar.gz $WORK/packages/ > /dev/null
mv *pkg.tar.xz $WORK/packages/ > /dev/null
BUILD=`ls $WORK/packages/$PKG*`
if [ "$BUILD" == "" ]; then
    echo "build fail for $PKG" >> $WORK/build.log
fi
pacman -U $WORK/packages/xine-lib-1.2*.pkg.tar.xz


#build xine-ui-vdr
PKG=xine-ui-vdr-cvs
cd $WORK/$PKG
rm -rf src pkg > /dev/null
makepkg --asroot -c -f -s
mv *pkg.tar.gz $WORK/packages/ > /dev/null
mv *pkg.tar.xz $WORK/packages/ > /dev/null
BUILD=`ls $WORK/packages/$PKG*`
if [ "$BUILD" == "" ]; then
    echo "build fail for $PKG" >> $WORK/build.log
fi
pacman -U $WORK/packages/xine-ui*.pkg.tar.xz


#build vdr-scripts
PKG=vdr-scripts
cd $WORK/$PKG
rm -rf src pkg > /dev/null
makepkg --asroot -c -f -s
mv *pkg.tar.gz $WORK/packages/ > /dev/null
mv *pkg.tar.xz $WORK/packages/ > /dev/null
BUILD=`ls $WORK/packages/$PKG*`
if [ "$BUILD" == "" ]; then
    echo "build fail for $PKG" >> $WORK/build.log
fi
pacman -U $WORK/packages/vdr-scripts*.pkg.tar.xz


#build crystalhd and crystalhd-lib
#PKG=crystalhd
#cd $WORK/$PKG
#rm -rf src pkg > /dev/null
#makepkg --asroot -c -f -s
#mv *pkg.tar.gz $WORK/packages/ > /dev/null
#mv *pkg.tar.xz $WORK/packages/ > /dev/null
#BUILD=`ls $WORK/packages/$PKG-2010*`
#if [ "$BUILD" == "" ]; then
#    echo "build fail for $PKG" >> $WORK/build.log
#fi
#pacman -U $WORK/packages/crystalhd*.pkg.tar.xz

#PKG=crystalhd-lib
#cd $WORK/$PKG
#rm -rf src pkg > /dev/null
#makepkg --asroot -c -f -s
#mv *pkg.tar.gz $WORK/packages/ > /dev/null
#mv *pkg.tar.xz $WORK/packages/ > /dev/null
#BUILD=`ls $WORK/packages/$PKG*`
#if [ "$BUILD" == "" ]; then
#    echo "build fail for $PKG" >> $WORK/build.log
#fi
#pacman -U $WORK/packages/crystalhd-lib*.pkg.tar.xz

#PKG=cxxtools
#cd $WORK/$PKG
#rm -rf src pkg > /dev/null
#makepkg --asroot -c -f -s
#mv *pkg.tar.gz $WORK/packages/ > /dev/null
#mv *pkg.tar.xz $WORK/packages/ > /dev/null
#BUILD=`ls $WORK/packages/$PKG*`
#if [ "$BUILD" == "" ]; then
#    echo "build fail for $PKG" >> $WORK/build.log
#fi



# build vdr plugins
for PLUGIN in $PLUGINS
do
 echo $PLUGIN
 cd $WORK/$PLUGIN
 rm -rf src pkg > /dev/null
 makepkg --asroot -c -f -s
 mv *pkg.tar.gz $WORK/packages/ > /dev/null
 mv *pkg.tar.xz $WORK/packages/ > /dev/null
 BUILD=`ls $WORK/packages/$PLUGIN*`
 if [ "$BUILD" == "" ]; then
  echo "build fail for $PLUGIN" >> $WORK/build.log
 fi
done

pacman -U $WORK/packages/vdr-plugin-*.pkg.tar.xz

# build xbmc
#PKG=xbmc-pvr-testing
#cd $WORK/$PKG
#rm -rf src pkg > /dev/null
#makepkg --asroot -c -f -s
#mv *pkg.tar.gz $WORK/packages/ > /dev/null
#mv *pkg.tar.xz $WORK/packages/ > /dev/null
#BUILD=`ls $WORK/packages/$PKG*`
#if [ "$BUILD" == "" ]; then
#    echo "build fail for $PKG" >> $WORK/build.log
#fi

repo-add $WORK/packages/vdr.db.tar.gz $WORK/packages/*.pkg.tar.*

Google Analytics