Dit is een archief-pagina

Dit is een archief-pagina. Ik werk deze pagina niet meer actief bij.
Informatie kan verouderd zijn, en links lopen mogelijk dood.
Maar, misschien heeft iemand er nog wat aan.


Digitaal fotolijstje

Digitaal fotolijstje met IBM ThinkPad 380 (nog zonder sierlijst)

Het fotolijstje (hier zonder de sierlijst)

Ondertussen is dit project in de ijskast gestopt; heb een tablet en een TV die foto's kan weergeven. Apparaat werkt nog wel, maar ontwikkeling is verder gestopt.

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

DSL: Damn Small Linux is een volledige maar kleine Linux systeem. Het geheel past in 50 Mbyte, inclusief een verzameling programma's. Het is eenvoudig verder uit te breiden, met veel kant-en-klare pakketten. Zie ook de Wiki.

Zorg voor een up-to-date ThinkPad BIOS (eventueel de nieuwste versie downloaden en installeren)! Voor de installatie heb ik voornamelijk de tips op Dead Link? '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:

  1. 80 MB voor DSL zelf (hda1) met ruimte voor eventuele uitbreidingen/updates
  2. 20 MB voor mijn uitbreidingen als scripts, mydsl programma's (hda2)
  3. 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 feh.unc extensie? Het lijkt echter dat het project zelf dood is (Dead Link? http://linuxbrit.co.uk/software/feh/). Daarnaast gebruik ik ook unclutter (Dead Link? 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

Links