Inhaltsverzeichnis

Lirc auf einem Ubuntu Diskless Client

Installation Lirc

Nachdem nun der Ubuntu Client wie in Ubuntu Diskless Clients mit einem FreeBSD Server beschrieben bootet, wird nun der Lirc eingerichtet. Als erstes werden folgende Pakete nachinstalliert:

# aptitude install lirc lirc-module-source linux-source-2.6.17 setserial

Anschliessend wird das lirc Modul und die Kernel Sourcen entpackt:

# cd /usr/src && tar zxf lirc-modules.tar.gz && tar jxf linux-source-2.6.17.tar.bz2

Um dann das Modul bauen zu koennen, muss erstmal ein neuer Kernel gebaut werden:

# cd /usr/src/linux-source-2.6.17.tar.bz2
# make oldconfig
# make-kpkg clean
# make-kpkg --revision diskless.01 --initrd kernel_image

Da im Kernel 2.6.17 sich Pfade geaendert haben, muessen vorher folgende Patches auf das Kernel Modul angewannt werden. Auf /usr/src/modules/lirc/drivers/lirc_gpio/lirc_gpio.c:

lirc_gpio.c.patch
--- lirc_gpio.c.orig    2006-12-10 20:15:35.000000000 +0100
+++ lirc_gpio.c 2006-12-10 20:14:42.000000000 +0100
@@ -53,10 +53,15 @@
 #include "extra_2.6.16/bttv.h"
 #include "extra_2.6.16/bttvp.h"
 #else
+#if LINUX_VERSION_CODE == KERNEL_VERSION(2,6,17)
+#include "extra_2.6.16/bttv.h"
+#include "extra_2.6.16/bttvp.h"
+#else
 #include "../drivers/media/video/bttv.h"
 #include "../drivers/media/video/bttvp.h"
 #endif
 #endif
+#endif
 
 #if BTTV_VERSION_CODE < KERNEL_VERSION(0,7,45)
 #error "*******************************************************"

Befor nun das Paket erstellt werden kann, muss noch die Konfiguration von lirc-modules-source geaendert werden. Dazu wird die Datei /etc/lirc/lirc-modules-source.conf geaendert:

lirc-modules-source.conf
#   lirc-modules-source config file used by Debian GNU/Linux 

# Space separated list of lirc kernel drivers to build
LIRC_MODULES="serial"

# It87 module configuration
LIRC_IT87_CFLAGS="UNCONFIGURED"

# Parallel module configuration
LIRC_PARALLEL_PORT="UNCONFIGURED"
LIRC_PARALLEL_IRQ="UNCONFIGURED"
LIRC_PARALLEL_TIMER="UNCONFIGURED"

# Serial module configuration
LIRC_SERIAL_PORT="0x3f8"
LIRC_SERIAL_IRQ="4"
LIRC_SERIAL_CFLAGS=" -DLIRC_SERIAL_SOFTCARRIER"

# Sir module configuration
LIRC_SIR_PORT="UNCONFIGURED"
LIRC_SIR_IRQ="UNCONFIGURED"
LIRC_SIR_CFLAGS="UNCONFIGURED"

Wobei Port 0x3f8 und IRQ 4 fuer /dev/ttyS0 stehen. Anschliessend wird wie in /usr/src/modules/lirc/README beschrieben vorgegangen:

# make-kpkg --revision diskless.01 modules_image

Nachdem nun alle notwendigen Pakete erstellt wurden, koennen diese installiert werden:

# dpkg -i linux-image-2.6.17.13-ubuntu1_diskless.01_i386.deb
# dpkg -i lirc-modules-2.6.17.13-ubuntu1_0.8.0-5ubuntu1+diskless.01_i386.deb

Nachdem beide Pakete installiert sind, muessen die Kernel und initrd Images in das tftpboot Verzeichnis des Servers kopiert werden. Um jetzt noch sicher zu stellen, dass /dev/ttyS0 nicht von einem anderen Modul verwendet wird, und dass das Lirc Modul geladen wird, muessen noch folgende Eintraege hinzugefuegt werden. In /etc/serial.conf:

/dev/ttyS0 uart none

In /etc/modules:

lirc_serial

Und in /etc/lirc/hardware.conf:

hardware.conf
LIRCD_ARGS=""
LOAD_MODULES=true
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_serial"
LIRCD_CONF=""
LIRCMD_CONF=""

Anschliessend kann fuer den Lirc Client eine spezielle PXE Konfiguration erstellt werden, damit nur dieser den entsprechenden Kernel bootet. Dazu wird in /home/data/diskless/tftpboot/pxelinux.cfg eine neue Datei erstellt. Der Name dieser Datei setzt sich zusammen aus 01-xx-xx-xx-xx-xx-xx, wobei die xx die Mac Adresse des Clients darstellen. In diese Datei wird nun folgendes eingefuegt:

LABEL linux
KERNEL vmlinuz-2.6.17.13-ubuntu1
APPEND root=/dev/nfs initrd=initrd.img-2.6.17.13-ubuntu1 nfsroot=10.2.2.10:/home/data/diskless/debian ip=dhcp rw verbose

Anschliessend wird der Client rebootet.

Konfiguration des Clients

Nachdem nun der Client rebootet hat, sollte das lirc_serial Modul geladen sein. Nun kann man mit mode2 testen, ob ueberhaupt Signale ankommen:

# mode2 -d /dev/lirc0 

Jetzt Buttons auf der Fernbediehnung druecken, und mode2 sollte eine Ausgabe liefern.