Da lcd4linux aktuell nicht in den Paketquellen von Alpine Linux enthalten ist und der Prozess zum Bauen eines Alpine-Paketes (siehe https://wiki.alpinelinux.org/wiki/Creating_an_Alpine_package) auch nicht „mal eben schnell“ zu durchlaufen ist, wurde es kurzerhand wie im Folgenden beschrieben statisch gelinkt auf einem anderen System gebaut und von dort auf den Snapclient kopiert und dort dem Overlay hinzugefügt.
Voraussetzung: ein 32-bittiges x86-Linux, im Beispiel ein Debian 6.0 i386 in einem chroot, Details weichen bei anderen Versionen oder Distributionen natürlich ab.
apt-get updateapt-get install build-essential autoconf automake libgd2-noxpm-devapt-get build-dep lcd4linuxapt-get source lcd4linuxcd lcd4linux-<version>./bootstrapmake clean && CFLAGS="-static -m32 -mcpu=i486" ./configure --enable-static --disable-shared '--with-drivers=all,!EFN,!SamsungSPF,!HD44780-I2C,!LEDMatrix,!X11' '--with-plugins=all,!dbus,!hddtemp,!imon,!kvv,!mpris_dbus,!pop3' && make -j8 CCLD='$(CC) -all-static' && strip lcd4linux
make clean räumt eventuelle Reste von frühreren Bauvorgängen aufCFLAGS=…-static))-m32)-mcpu=i486)./configure … erstellt das Makefile anhand der Parameter und Systemkonfiguration–enable-static)–disable-shared)!<Treiber> angegeben sind, da diese unerfüllbare Abhängigkeiten haben oder sonstwie Probleme bereiten beim statischen Linken ('–with-drivers=all,!EFN,!SamsungSPF,!HD44780-I2C,!LEDMatrix,!X11')!<Plugin> angegeben sind, da diese unerfüllbare Abhängigkeiten haben oder sonstwie Probleme bereiten beim statischen Linken ('–with-plugins=all,!dbus,!hddtemp,!imon,!kvv,!mpris_dbus,!pop3')make … compiliert alle Quelldateien und linkt anschließend das Programm-j8)./configure einstellen, aber hier scheint das nicht vorgesehen zu sein, deswegen dieser „Trick“ (CCLD='$(CC) -all-static')strip lcd4linux Entferne nicht benötigte Daten aus dem fertigen Program (vor allem Debug-Informationen)ldd lcd4linux folgende Ausgabe erzeugen: not a dynamic executable linux-gate.so.1 => (0xf7f98000)
libncurses.so.5 => /lib/libncurses.so.5 (0xf7f4c000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xf7e2f000)
libgd.so.2 => /usr/lib/libgd.so.2 (0xf7ded000)
...
/lib/ld-linux.so.2 (0xf7f9a000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xf7530000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xf752b000)
scp lcd4linux root@lounge.snapcast.shack:/usr/local/bin/lcd4linux
Damit lcd4linux als Service automatisch gestartet werden kann, braucht es noch ein einfaches OpenRC-Initscript:
cat > /etc/init.d/lcd4linux <<< EOF
#!/sbin/openrc-run
CONFIG=/etc/lcd4linux.conf
PID=/var/run/lcd4linux.pid
depend() {
after lm_sensors modules hwdrivers networking
}
checkconfig() {
if [ ! -f ${CONFIG} ]; then
eerror "Configuration file ${CONFIG} not found"
return 1
fi
}
start() {
checkconfig || return 1
ebegin "Starting lcd4linux"
start-stop-daemon --start --quiet --background --pidfile ${PID} \
--exec /usr/local/bin/lcd4linux -- -f ${CONFIG} -v
eend ${?}
}
stop() {
ebegin "Stopping lcd4linux"
start-stop-daemon --stop --pidfile ${PID}
eend ${?}
}
EOF
Nun einfach mit rc-update add lcd4linux default lcd4linux dem Default-Runlevel hinzufügen und, wenn man nicht neustarten möchte, noch starten mit rc-service lcd4linux start
Einige Snapclients haben ein 20×4 Zeichen umfassendes, HD44780-kompatibles Text-LCD am Parallelport angeschlossen. Die für die verwendete Verdrahtung nötige Konfig ist wie folgt:
Display HD44780-20x4 {
Driver 'HD44780'
Model 'generic'
Port '/dev/parport0'
Size '20x4'
Icons '4'
Wire {
RW 'GND'
RS 'AUTOFD'
ENABLE 'STROBE'
ENABLE2 'GND'
GPO 'GND'
}
}