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
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
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 voor eventuele
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 feh.unc
extensie? Het lijkt echter dat het project zelf dood is (
http://linuxbrit.co.uk/software/feh/). 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