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