|
Digitaal fotolijstje
Het fotolijstje (hier zonder de sierlijst)
Werk in uitvoering!!! Project gestart maart 2008... En, ben bang
dat dit meer een Linux verhaal is geworden, dan een
verhaal over fotolijstjes.
Ik heb een oude laptop omgebouwd tot digitaal fotolijstje. Op die manier
krijg je voor een lagere prijs een digitale fotolijst met hogere kwaliteit
(800x600 pixels, 30 cm diagonaal), en de mogelijkheid deze zelf zo aan te
passen als je wilt... Video, tijd, buienradar, geluid, je kan alles toevoegen
wat de laptop nog aan kan.
In mijn geval ga ik uit van een
IBM ThinkPad 380ED, een oud gevalletje dat ik voor €25 op de kop heb
getikt. 166 MHz Pentium, 80 MB geheugen, 3 GByte harde schijf (voor de
foto's). In eerste instantie had ik er Windows opgezet, maar dat bleek
ontzettend instabiel; crashte om de 3 minuten. Daarom maar met Linux aan de
slag gegaan, en geen stabiliteitsproblemen meer gehad.
DSL Damn Small Linux
Vanwege het geringe geheugen maar niet een uitgebreid systeem als Ubuntu er op gezet, maar DSL: Damn Small Linux (gebruikt nog
geen 20 MB van het geheugen). Is wel even wennen, heel wat zoeken in het
begin vanwege de opzet van DSL. Het voordeel is dat al heel wat mensen mij
waren voorgegaan, maar toch was het nog heel wat puzzelwerk (vooral omdat de
IBM weinig interfaces heeft; geen usb, geen netwerk, alleen floppy en CD).
Niet alle beschrijvingen waren nog even bij de tijd; en diverse opties en
instellingen kloppen niet meer met de beschrijvingen. Uiteindelijk toch de
zaak aan het lopen gekregen.
DSL is uitbreidbaar met veel extra packages, met name de myDSL extensies.
Zie de Damn
Small Linux myDSL Application Extensions lijst.
De installatie
Zorg voor een up-to-date ThinkPad BIOS (eventueel de
nieuwste versie downloaden en installeren)! Voor de installatie heb ik
voornamelijk de tips op Digital Picture
Frame gevolgd (alleen eerste gedeelte), al is die niet specifiek voor de
ThinkPad. Pas wel op, bij stukje 'Install DSL' staat 'select option 4'; dat
moet tegenwoordig optie 3 zijn (denk ik). Voor een goede schermweergave heb
je bij booten de volgende parameters nodig voor de scherm-instellingen van de
IBM 380ED: fb800x600 vga=788
Een andere opzet (lijkt achteraf wat netter) is te vinden op DSL Tips&Tricks:
Frugal Install. Zie ook de tips op de
inleiding op de DSL Wiki. En verder installing-dsl-on-an-old-thinkpad-380ed.
DSL 4.2.5 gedownload (dsl-4.2.5-syslinux.iso) en op CD gezet,
en in de laptop gestoken. Ik ben gekozen voor een zogeheten 'frugal'
installatie, waarbij eigenlijk de hele zaak als het ware iedere keer schoon
wordt opgestart (en dus niet echt mis kan gaan), waarna je eigen instellingen
apart geladen worden. Wel moet je even doorkrijgen hoe en waar dan je
instellingen en uitbreidingen staan opgeslagen. De harde schijf heb ik in
drie partities ingedeeld:
- 80 MB voor DSL zelf (
hda1) met ruimte vooreventuele
uitbreidingen/updates
- 20 MB voor mijn uitbreidingen als scripts, mydsl programma's
(
hda2)
- en de rest (haast 3 Gbyte) voor de foto's en zo
(
hda3)
De eerste partitie hda1 bevat het eigenlijke systeem en is
read-only, dus je kan de zaak nooit vernaggelen. De tweede partitie bevat
veranderlijke data, instellingen en zo, en een deel daarvan (onder andere
alles in /home/dsl) wordt automatisch bewaard, en wordt hersteld
bij starten. En de derde, daar blijft het systeem gewoon van af (sterker nog,
als je niets doet ziet'ie hem niet eens).
DSL aanpassen aan eigen smaak
Waar laat Linux zijn files?
Voor standaard Linux systemen zijn er afspraken waar programma's en zo
voort staan in het systeem: de Filesystem Hierarchy
Standard. Anders dan Windows, maar wel heel gestructureerd.
Bootprocedure
Opstarten: GRUB boot-parameters aanpassen aan je wensen. GRUB
parameters kan je bewerken met een teksteditor: 'sudo beaver
/cdrom/boot/grub/menu.lst' (soms even zoeken waar wat staat in
DSL...). Niet nodig om grub-install te draaien! Zie hier mijn
GRUB boot regels om het fotolijstje te starten, waarbij ik veel wat toch niet
op mijn laptop zit heb uitgeschakeld (pas op, 3 regels, middelste zie je
vermoedelijk in twee of drie stukken geknipt):
title DSL FotoFrame
kernel /boot/linux24 root=/dev/hda1 quiet vga=788 noacpi noapm nodma
noscsi nousb noagp nodhcp nofirewire noddc nosmp fb800x600 mydsl=hda2
frugal fotos
initrd /boot/minirt24.gz
Ik heb een zelfbedacht keyword 'fotos' toegevoegd; wordt later in een
script ('autoexec', zie verderop) op getest, indien aanwezig dan start de
fotoshow vanzelf.
Instellingen
Op de tweede partitie (hda2) houd DSL de instellingen en
uitbreidingen van de gebruikers bij. De directory /home/dsl
wordt automatisch gebackup'd (voor een beschrijving en volledige lijst files,
zie de DSL
Wiki over Persistence en de /opt/.filetool.lst files), en
wordt hersteld bij opnieuw booten. In deze directory heb ik twee
subdirectories gemaakt:
scripts, hier plaats ik scripts ('batch files') die ik
makkelijk wil kunnen gebruiken. Het pad naar scripts neem ik op in PATH
(zie verderop bij .bash_profile)
myfiles, voor andere diverse files die ik bewaard wil
hebben.
Gewend na gebruik de zaak gewoon uit te zetten, kan omdat het als het
ware vanaf CD draait... Maar, heb je files ge-update, dan uiteraard netjes
herstarten etc (sudo reboot); anders ben je je
wijzigingen kwijt (of is je file system corrupt)! Of handmatig de files
saven (één regel):
/usr/sbin/filetool.sh backup noprompt
Daarnaast heb ik de opstartcode aangepast. Meer info hierover is te vinden
op de DSL Wiki, met name op de pagina voor de configuratiefiles.
Er zijn er drie speciaal van belang (alhoewel ik ook in .bashrc
nog wat heb zitten spitten):
/opt/bootlocal.sh
bevat een aantal systeem-wijde boot-instellingen, als een soort
autoexec.bat uit de DOS tijd (bijvoorbeeld als je een vast
IP adres wilt instellen).
.bash_profile
bevat per gebruiker de command line instellingen voor bash (de shell), en
wordt eenmalig uitgevoerd, vroeg in het opstarten.
.xinitrc is
per gebruiker als het ware de 'autoexec' op grafisch niveau, en wordt
uitgevoerd tijdens het opstarten van het X-windows systeem.
Wijzigingen van deze files kan je bijvoorbeeld met de standaard
'beaver' editor, maar omdat het een systeemfile is moet dit wel
in super user mode (standaard heeft DSL overigens geen wachtwoord
ingesteld):
sudo beaver /home/dsl/.xinitrc &
bootlocal.sh
Gebruikt tijdens het booten, maar het systeem is nu al aardig op weg, bv
al na het herstellen van de bewaarde user files uit de vorige sessie (met
name de ssh initialisatie). Gebruik ik om ssh te starten;
vanuit de eerder genoemde bootprocedure is dit te vroeg... Oftewel toegevoegd
(zie verderop bij SSH):
/etc/init.d/ssh start
.bash_profile
Deze file wordt gestart bij de login van een gebruiker (de vergelijkbare
.bash_rc
wordt gestart voor elke nieuwe xterm). In het begin van .bash_profile
heb ik twee regels toegevoegd: de eerste puur om te zien of het script wel
wordt gestart (ja hoor, al tijdens de tekst-fase van het booten is deze regel
te zien), de tweede om mijn eigen scripts makkelijk te kunnen starten zonder
een volledig pad te hoeven typen:
echo "running .bash_profile"
export PATH=/home/dsl/scripts:$PATH
.xinitrc
In het grafische opstartscript .xinitrc heb
ik ook wat gewijzigd: ik heb het opstarten van de browser met help-tekst
uitgeschakeld (een '#' voor de regel beginnend met 'dillo' ), en
net voor de laatste regels (startend met 'exec' ) de volgende
regel toegevoegd (dit zorgt er voor dat mijn eigen autoexec ook
wordt geladen):
/home/dsl/scripts/autoexec &
autoexec
Mijn 'autoexec' (a la DOS/Windows), als aangeroepen vanuit
.xinitrc
#!/bin/bash
# my autoexec... started at X level
# if needed: mount hda3, rename as /c (Windows-like...)
if [ ! -f /mnt/hda3/dummy ]; then
mount /dev/hda3
sudo mkdir /c
sudo mount --bind /mnt/hda3 /c
fi
# start default slide show if requested during
boot if cat /proc/cmdline | grep
fotos
then
sleep 3
slideshow india
fi
Deze zorgt dat de derde partitie wordt gemount en zichtbaar is als
/c (als dat nog niet gebeurd is: check of file
/mnt/hda3/dummy al zichtbaar is?). Verder start deze de default
slideshow (zie verderop) met foto's van India, mits op de boot commando regel
het keyword 'fotos' is opgenomen.
DSL maakt standaard gebruik van de JWM windows interface (op
X windows), en niet van Fluxbox zoals ik eerst
dacht. Dat verklaart waarom ik de task bar niet weg kreeg (zie JWM configuration uitleg:
voeg toe autohide="true" in de Tray tag in
.jwmrc-tray, restart windows manager).
Het slideshow-programma
Als programma voor de slide-show gebruik ik feh. Dit programma is verkrijgbaar
als DSL extensie feh.dsl (nu
als feh.unc
extensie?). Daarnaast gebruik ik ook unclutter (unclutter.dsl):
dit zorgt dat de cursor buiten beeld blijft gedurende de slide show, zodat
dat pijltje niet hinderlijk in beeld blijft. En met xset heb ik
gezorgd dat de screen saver niet na verloop van tijd het scherm op zwart zet.
Het script ziet er op dit moment als volgt uit:
#!/bin/bash
# Thanks to Adam Franco
# stop previous slide shows
killall feh unclutter
# no screen saver
xset s off
# no cursor
unclutter &
# the photo viewer in slide show mode
feh -ZFr -D 30 /mnt/hda3/fotos/$1
# The feh options I used are as follows:
# -z — randomize the order of images
# -Z — zoom images to fit the window
# -F — make the window full-screen
# -r — recursively search the target directory for images
# -D — Delay (in seconds) between images
Maar, mogelijk ga ik op een andere opzet over: de Firefox browser is ook
standaard geïnstalleerd in DSL, dit is misschien ook wel een goed
startpunt. Het voordeel is dat je dan met Javascript extra's kunt doen, als
een extra laag met een klokje in beeld, of (als je een netwerkverbinding
hebt) bijvoorbeeld het weerbericht (buienradar) of zo. Vermoedelijk het handigst
om de foto als achtergrond in de CSS op te nemen, en via JavaScript met een
timer te veranderen? Blijft'ie mooi achter eventuele uitbreidingen zichtbaar.
Kan Firefox full-screen in DSL?
De hardware
Hoe bouw ik hem om... zie plaatje bovenaan deze pagina: beeldscherm
losgehaald, en op een beugel geplaatst (heb het deksel hergebruikt voor
stevigheid, maar wel een gat voor de kabeldoorvoer achterin gemaakt). Nog een
keer meer foto's maken.
Bij het loshalen van het beeldscherm is het reparatiemanual (Hardware
Maintenance Manual) handig! De hele laptop hangt er dus eigenlijk nog
achter. Aluminium frame er om heen, dit is de drager voor de sierlijst (niet
op de foto). Rechts een kleine uitsparing in het frame: hier zit de
hoogspanningsgenerator voor het backlight. Net een millimeter te hoog, maar
steekt niet uit boven het frame, dus OK voor de sierlijst. Ook is via deze
opening de helderheidsregelaar nog bereikbaar. De sierlijst is verwisselbaar,
en klikt op dit frame.
Mogelijk later: harde schijf vervangen door oude Compact Flash kaart, en
dan de laptop body strippen tot alleen het noodzakelijkste... Laag
energiegebruik; geen schijf dus geen geluid. Ook nog eens kijken of ik
knoppen ook op de voorkant bereikbaar wil hebben (forward/back, andere
fotoserie, etc).
De communicatie (SSH)
Nu nog het lijstje op afstand kunnen besturen (via SSH), bijvoorbeeld vanaf mijn normale PC. Helpt veel als je
het toetsenbord niet meer echt bereikbaar hebt (al kan er veel met een
externe muis); plus makkelijk om er nieuwe foto's op te zetten. Helaas nog
niet draadloos (zie verderop), maar via een kabeltje en een oude PCMCIA
insteekkaart van 3COM (10 Mb/s, was geloof ik 1 Euro op een rommelmarkt).
Om te beginnen: hoe kan je makkelijk experimenteren? Ik ben begonnen met
een DSL te draaien op mijn normale PC, in een 'virtual machine' (VMware
player). Dus nog niet op het fotolijstje zelf, hoef ik niet steeds te
wisselen van toetsenbord. Een kant-en-klare DSL virtual machine image is te
downloaden op ibiblio
DSL: dsl-4.4.10-vmx.zip (50 MB). Na het uitpakken dubbel-klikken op de
.vmx file (wel uiteraard de VMware player
geïnstalleerd hebben). Bij het opstarten booten met 'dsl
vga=788', dit start in 800x600 mode (houd ik nog wat ruimte over op
mijn desktop).
Nu eerst SSH initialiseren: sshd met de hand starten gaat met
/etc/init.d/ssh start. Dit maakt de eerste keer ook de benodigde
keys etc aan. Omdat blijkbaar (berichten op DSL forums)
je niet met het normale 'dsl' gebruikersaccount of met root kan ssh'en
(reden: geen wachtwoorden), heb ik een extra user (genaamd
kees) aangemaakt, met wachtwoord. Rechts klikken op de
desktop, kies 'Setup', Kies 'Adduser', en vul naam en wachtwoord in.
Files bewerken op Windows via SSH/Putty?Je kan de
standaard aanwezige nano editor gebruiken,
maar dit is nogal primitief (tekst-schermpje).
Maar, je kan ook via een X-server een full-screen editor (als beaver)
vanaf je fotolijstje op je PC laten verschijnen. Dit kan bijvoorbeeld
met Ubuntu (onder Windows in een virtual machine;
gebruik ik als gratis Windows X server). Een goed alternatief is om
Xming te
installeren, een gratis X server voor Windows, inclusief OpenGL 3D graphics
support.
ssh met de -X optie starten! De DSL file manager kan
je ook starten in een X-window: /usr/X11R6/bin/emelfm
&
Ps: in DSL .Xdefault background transparency uit
zetten...
Wouw, werkt. Als ik nu vanuit een gewone terminal op dezelfde DSL-machine
inlog met 'ssh -l kees 127.0.0.1' krijg ik keurig het
verzoek om een wachtwoord, en daarna ben ik ingelogd. En nog mooier, zelfs
vanaf windows (dus buiten de virtual machine) kan ik met Putty inloggen op
het netwerk adres van de DSL machine (bij mij iets als 192.168.1.xxx)! Ook
vervolgens naar root overschakelen (sudo etc) lukt. Ps: je kan vanuit DSL je
IP adres opvragen met het commando ifconfig, heb je nodig voor
Putty (beter om op een gegeven moment een fixed IP
adres te configureren).
Nu hetzelfde op de echte fotolijst, met m'n 'nieuwe'
ethernet-kaartje. Ik heb het commando /etc/init.d/ssh start
in de eerder genoemde bootlocal.sh
gezet. Sowieso nodig de eerste keer handmatig te draaien om keys etc te
genereren. Opnieuw opstarten: jawel, kaartje wordt herkend, en ik kan een
ssh-verbinding opzetten! Ik heb de directory /etc/ssh toegevoegd
aan de lijst files in de /opt/.filetool.lst file (zie de
DSL Wiki over
Persistence); zodat de SSH-instellingen bewaard worden voor de volgende
keer.
En, met FileZilla kan ik ook een SFTP verbinding opzetten. Eindelijk
makkelijk foto's heen en weer slepen (nu nog een keer draadloos). En rebooten
gaat netjes via 'sudo reboot'.
Upgrade van DSL
In de 'frugal' install staan alle gebruikerswijzigingen op de
hda2 partitie, en kan je het onderliggende systeem wijzigen. Ik
heb DSL ondertussen ge-upgrade naar de laatste versie 4.4.10 (Linux kernel
2.4.31, 18 november 2008): de dsl-4.4.10.iso gedownload en in
een tijdelijke directory van het lijstje gezet (/hda3/temp).
Vervolgens DSL opstarten met de toram optie zodat de harde
schijf partitie hda1 vrij blijft, en de KNOPPIX
file en zo van de .iso naar de harde schijf gekopiëerd.
Oftewel, vrij precies (6 regels, behalve eerste beginnen ze allemaal met
sudo):
cd /mnt/hda3/temp
sudo mount /dev/hda1
sudo mount -o loop dsl-4.4.10.iso /mnt/test
sudo cp /mnt/test/KNOPPIX/KNOPPIX /mnt/hda1/KNOPPIX/KNOPPIX
sudo cp /mnt/test/boot/isolinux/linux24 /mnt/hda1/boot/linux24
sudo cp /mnt/test/boot/isolinux/minirt24.gz
/mnt/hda1/boot/minirt24.gz
En zowaar, na een sudo reboot meldt hij zich netjes als DSL
4.4.10, en start het fotolijstje weer. Maar, er zijn wel wat files in je
lokale backup die vermoedelijk aangepast moeten worden, zie het forum
hierover.
Diversen/nog te doen
Wil nog eens de zaak draadloos maken, ik heb een PCMCIA insteekkaart met
draadloos netwerk (DynaLink L11HDT), gebaseerd op de Intersil Prism2 chip
(Linux--wlan-ng). Eens
opzoeken hoe ik die aan de praat moet krijgen (en of'ie al beveiligde
netwerken op kan; denk dat alleen het zwakke WEP kan). Hiermee moet het
mogelijk zijn om met de bij DSL meegeleverde SSH
verbinding een veilige draadloze link te leggen naar het lijstje (al moet ik
de security van mijn netwerk dan misschien naar WEP verlagen). De kaart lijkt
herkend te worden, maar een verbinding opzetten lukt niet? Zie ook de
DSL wiki.
Nog niet duidelijk hoe ik de floppy drive netjes gemount krijg.
mount /dev/floppy werkt niet; type flop (vfat)
wordt niet goed herkend, en fstab aanpassen werkt niet in DSL.
Voorlopig provisorisch met het script 'flop' dat er als volgt
uit ziet (maar de floppy alleen als super user goed bruikbaar maakt). Moet
beter kunnen, maar nu ik mijn normale netwerkverbinding OK heb...
#!/bin/bash
sudo mount -t vfat /dev/fd0
/mnt/auto/floppy
# umount /dev/fd0
echo "Done"
En nog een keer een daglichtsensor op de helderheidsregeling; geeft in de
avond nu wat veel licht...
Sound? Cirrus Logic Audio controller CS4236B. This sound chip is supported
by the snd-cs4236 kernel module. Use the following options line when loading
this module (create file in /etc/modprobe.d): options
snd-cs4236 snd_index=0 snd_port=0x530 snd_cport=0x538 snd_isapnp=0 snd_dma1=1
snd_dma2=0 snd_irq=5 . Disabling module(s): place line with
blacklist <module> in a file in modprobe.d
|