Базове налаштування 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.*