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.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 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:
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.
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.