Un pinguino per ogni bambino/Guida per gli sviluppatori

Da Lecco.

Con questa guida viene spiegato passo passo come realizzare BimboTux "from scratch", ovvero partendo da un sistema Debian minimale. BimboTux infatti non è altro che una Debian altamente personalizzata, pensata attorno ad un unico scopo: fornire un sistema operativo completo a misura di bambino.

Alla fine della guida viene anche spiegato come costruire l'immagine da masterizzare su un CD-ROM che distribuiamo.

Indice

Documentazione

Chi volesse contribuire al progetto potrebbe iniziare leggendo questa guida, comprendente una buona bibliografia.

Per quanto riguarda la scelta dei software da includere, si può iniziare scavando tra le pagine del Servizio Documentazione Software Didattico.

Infine questo è il sito che si occupa di software libero nella scuola della Italian Linux Society.

Dipendenze

Partendo da un sistema Debian 6 (Squeeze) minimale, bisogna aggiungere

  • ALSA: il server audio
  • CUPS: il server di stampa
  • XOrg: il server grafico
  • nodm: per l'avvio automatico di XOrg
  • FVWM: il window manager
  • Some Juicy Fonts: font in stile "scrittura a mano"
  • LXLauncher: interfaccia stile EeePC
  • Sudo: per permettere agli utenti di spegnere il pc
  • GNOME Themes: per cambiare il tema GTK+
  • Tux Paint: programma di disegno per bambini
  • Tux Typing: per imparare ad usare la tastiera
  • KTouch: per imparare ad usare la tastiera
  • GCompris: giochi didattici per bambini dai 2 anni in su
  • Childsplay: giochi educativi per bambini
  • Uomo Patata: giochino
  • PySyCache: giochi didattici per imparare l'uso del mouse
  • Linux Letters and Numbers: giochino didattico per imparare numeri e lettere
  • lbreakout2: giochino
  • Circus Linux!: giochino circense
  • Ri-li: giochino ferroviario
  • SuperTux: gioco d'avventura
  • Frozen-Bubble: giochino
  • Pingus: gioco d'avventura e strategia
  • KHangMan: il classico gioco dell'impiccato

Le dipendenze si risolvono con

# aptitude install alsa-base cups xorg nodm fvwm ttf-sjfonts lxlauncher sudo \
gnome-themes kde-l10n-it tuxpaint tuxtype ktouch gcompris-sound-it gnucap gnuchess \
childsplay-alphabet-sounds-it ktuberling pysycache lletters \
lbreakout2 circuslinux ri-li supertux frozen-bubble pingus khangman

Configurazione di FVWM

Il Desktop Environment proposto è utilizzabile dall'utente finale in modo semplicissimo ed estremamente intuitivo. Essendo destinato all'età prescolare, le scritte sono pochissime mentre le icone, molto grosse, permettono ai bambini di gestire il computer autonomamente.

Il desktop è organizzato a schede (tab), in modo del tutto analogo all'Easy Mode dell'EeePc. Il risultato è ottenuto grazie ad LXLauncher, uno dei programmi facenti parte del Desktop Environment LXDE.

Per le scritte in stampatello minuscolo viene utilizzato il font SteveHand; Delphine per quelle interamente in stampatello maiuscolo.

Rappresentazione grafica

           +--- .fvwm2rc   <-- file di configurazione
           |
~/.fvwm ---+

.fvwm2rc

Il file è rilasciato dagli autori sotto pubblico dominio. C'è un commento esplicativo quasi per ogni riga. Scaricarlo ed inserirlo in ~/.fvwm/, come illustrato qui sopra.

Configurazione di Sudo

Per permettere ad un utente normale di spegnere la macchina, occorre configurare Sudo come indicato.

Lanciare il comando

# visudo

e aggiungere la seguente riga:

ALL	ALL=NOPASSWD: /sbin/shutdown

Ora il file /etc/sudoers dovrebbe assomigliare a questo:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults	env_reset

# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL) ALL
ALL	ALL=NOPASSWD: /sbin/shutdown

Cambiare il tema GTK+ e le icone

Creare il file ~/.gtkrc-2.0 contenente queste righe:

include "/usr/share/themes/Glossy/gtk-2.0/gtkrc"
gtk-icon-theme-name = "Tango"

dove Tango è il nome del tema delle icone.

Configurare le librerie Qt con tema GTK+

Impostare il tema Qt per integrarsi come aspetto con le GTK+ usando il programma Qt Configuration.

Aggiungere l'icona a SuperTux

In attesa che questa patch venga inclusa in una nuova versione del pacchetto ufficiale Debian, per avere disponibile l'icona del gioco occorre metter mano nel file /usr/share/applications/supertux.desktop, modificando la riga riguardante l'icona come segue:

Icon=/usr/share/games/supertux/images/icon.xpm

Regolazione di ALSA

Avviare alsamixer e controllare la configurazione attuale di ALSA. Di default i canali dovrebbero essere tutti a 0 e muti: attivare quelli che interessano premendo il tasto "M" e regolare il volume con i tasti freccia "Su" e "Giù".

Realizzazione di un CD live

La versione di BimboTux da noi proposta è un CD live installabile: questo significa che è possibile usare l'intero sistema operativo direttamente da CD-ROM, senza installare né modificare alcunché sul disco rigido del computer, ma che volendo è anche installabile la distribuzione in modo molto semplice, attraverso una procedura guidata.

Per lo scopo si farà uso di una macchina Debian con installati i pacchetti ufficiali cdebootstrap e live-build: occorre pescarli dai repository di Squeeze o Sid. Per ogni necessità di chiarimento fare riferimento al manuale.

Creare una cartella di lavoro; dal suo interno lanciare

$ lh config --bootappend-live "live-config.hostname=bimbotux live-config.locales=it_IT.UTF-8 \
live-config.timezone=Europe/Rome live-config.keyboard-layouts=it" \
-d squeeze --mirror-bootstrap "URL" --mirror-binary "http://ftp.it.debian.org/debian/" --debian-installer live [-b usb-hdd] \
[--debian-installer-distribution daily] [--debian-installer-gui disabled]

sostituendo ad URL l'URL del mirror da cui scaricare i pacchetti necessari all'assemblaggio della live; nel caso in cui si sia creata una cache locale usando approx, l'indirizzo sarà un qualcosa di analogo a http://localhost:9999/debian/. L'opzione -b usb-hdd serve a generare un'immagine da copiare su chiavetta USB bootabile. Per copiare la live ottenuta su chiavetta bisognerà lanciare il comando

$ dd if=binary.img of=/dev/sdx bs=1M

dove x sta per la lettera equivalente al vostro dispositivo. Usando il ramo testing di Debian, a volte può capitare che l'installer presenti dei bug; per scavalcare il problema può essere utile, in questi casi, l'opzione --debian-installer-distribution daily, che permette di utilizzare l'ultima versione dell'installer, nella quale può darsi che i bug siano stati risolti.

Verrà a questo punto creato lo scheletro dei file di configurazione necessari a live-helper per generare l'immagine della nostra live.

Scaricare all'interno della directory config/chroot_local-packageslists il file bimbotuxpkg.list, contenente l'elenco dei pacchetti da installare.

Inserire in config/chroot_local-includes/etc/skel/.fvwm/ il file .fvwm2rc: creare il percorso con mkdir -p.

Mettere sudoers in config/chroot_local-includes/etc/ e cambiargli i permessi:

$ chmod 440 sudoers

In attesa che questo bug venga chiuso, inserire il file .profile appositamente modificato in config/chroot_local-includes/etc/skel/.

Inserire in config/chroot_local-includes/etc/skel/ il file .gtkrc-2.0.

Inserire nella directory config/chroot_local-includes/usr/share/applications/ il file supertux.desktop modificato; creare il percorso con mkdir -p.

Per avere Ri-li già localizzato in italiano, scaricare in config/chroot_local-includes/etc/skel/ questo file.

Infine, premunirsi di adeguata pazienza e far partire la costruzione dell'immagine:

# lh build

Nel caso si riscontrassero errori nella generazione dell'immagine, è utile creare un file di log con

# lh build 2>&1 | tee build.log

Da fare

Live CD

  • personalizzare i vari campi dell'header dell'immagine ISO tramite le varie opzioni lh config --iso-*
  • Cambiare immagine del boot loader: levare lo Swirl e mettere qualcosa di più mirato; probabilmente questo si fa con l'opzione lh config --syslinux-splash FILE
  • Al momento il comando dato in fase di costruzione della live per impostare la tastiera come italiana non funziona: attendere la chiusura di questo bug
  • l'ora è sbagliata: probabilmente è colpa di Virtualbox che non usa l'orologio del BIOS senza Guest Addition (verificarlo con un CD vero); altrimenti forse bisogna giocare con live-config.utc=* (in questo caso capire perché)

Installer

  • GUI install non funziona: la versione giornaliera dell'installer è al momento buggata e di conseguenza l'ho disabilitata con un'opzione di lh config (altrimenti il build fallisce); riprovare tra qualche giorno
  • text install non funziona: se si usa la daily dell'installer fallisce la procedura poco dopo aver installato il sistema base; altrimenti il testo già alla prima schermata è tutto rimpicciolito e distorto e risulta illeggibile
  • La tastiera è americana, anche se in fase di installazione si è scelta la tastiera italiana
  • L'installer propone debian come hostname; mettere bimbotux come default; forse si fa con lh config --bootappend-install PARAMETRO

Qt Configuration

  • Impostarlo di default come GTK+
  • Verificare se si riesce a fare a meno di questo programma, usando direttamente uno o più file di configurazione

LXLauncher

  • Cambiare sfondo, vedi qui. WiildOs usa LXLauncher: qui qualche riferimento per la personalizzazione.

/etc/apt/sources.list

  • Non è adeguatamente configurato: risulta attivo solo il cd e i repository security (di Sid, che non esistono neppure) sono commentati

FVWM

  • Finestre
    • Bottoni graficamente personalizzati
    • Rendere il bottone in alto a sinistra (mini-icona) non "cliccabile"
    • Fare in modo che i bottoni non restino cliccati anche quando si allontana il mouse
    • Capire perché chiudendo una finestra a volte non ne resta neppure una selezionata e sistemare
  • Barra delle applicazioni
    • L'icona "stop" non è più visibile, è cambiato il path: da /usr/include/X11/pixmaps/mini.stop.xpm a /usr/share/pixmaps/fvwm/mini.stop.xpm
    • Cambiare font
    • Fare in modo che, massimizzando le finestre, la barra non venga coperta

LBreakout2

  • Da localizzare: occorre scaricare i sorgenti e inviare la patch all'autore

GCompris

  • Fare in modo che di default, già dall'installazione, parta a schermo intero
  • L'icona GCompris Admnistration è da localizzare e da spostare nella scheda Preferenze

KTouch

La disposizione delle dita sulla tastiera è strana, non coerente ad esempio con questa: verificare qual è lo standard e modificare la configurazione di conseguenza.

Ri-li

  • Probabilmente c'è un bug nella gestione dell'audio: sembra che dopo un po' si auto-setti al massimo volume. Verificare e segnalarlo allo sviluppatore

Linux Letters and Numbers

  • Da localizzare, qui le istruzioni.

PySyCache

  • Non si riesce a lanciare da LXLauncher, mentre funziona da terminale e (testato su una Debian) dal menu di Gnome: capire perché e sistemare. Vedi qui.
  • Parzialmente da localizzare: contattare l'autore per chiedergli se lo sviluppo è ancora attivo, perché la procedura presente sul sito ufficiale non funziona, oppure i contenuti inseriti vengono ignorati. Ho fatto io: aspettare che la patch venga applicata in Debian, oppure applicarla manualmente.
  • PySyCache Admin è da spostare nella scheda Preferenze, e bisogna correggere la grafia del nome (maiuscole)

Pingus

  • Non funziona su alcune macchine: indicare i requisiti minimi
  • Refusi:
    • nel capitolo "Troppo in alto, il Pingus morirà", "a reparare la strada" → "a preparare la strada"

Uomo Patata

  • Tra le dipendenze mette Iceweasel: perché? R: forse basta usare lh config --apt-recommends false

KHangMan

  • Impostare di default l'italiano come lingua delle parole

Pacchetti Debian

  • Installare CUPS
  • Valutare se sostituire nodm con SLiM (utile quando BimboTux viene installato)
  • Capire se si riesce a levare KNetAttach; l'eseguibile è /usr/lib/kde4/libexec/knetattach (vedi anche qui)

Funzionalità da implementare

  • Lettore multimediale
  • Lettore e-book: FBReader o forse calibre (da provare) o ancora Sigil
  • Tema musicale

Elenco e-book

Aggiungere qui sotto i libri che si desidera aggiungere nella prossima versione di BimboTux. Attenzione: deve esserne possibile la redistribuzione, quindi fate attenzione alla licenza sotto cui sono rilasciati (da segnare nell'elenco).

Suggerimenti

  • Provare i seguenti programmi (qui una guida):
  • Valutare se includere Educazionik ed eventualmente pacchettizzarlo
  • Sviluppare un programma basato su festival per far capire ai bambini il risultato dell'associazione tra le varie lettere
  • Aggiungere un semplice mixer (tipo quello di Gnome) per regolare il volume senza dover passare da alsamixer
  • Aggiungere OOo4Kids come "suite per ufficio" adatta a dei bambini
  • Aggiungere programma di riconoscimento vocale, per scrivere sotto dettatura; forse sphinx2-bin (o la libreria su cui si basa) potrebbe essere utile
  • Valutare se includere Gnome Nanny (controllo parentale)
  • Verificare bene di cosa si tratti e se può tornarci utile
  • Testare Klavaro, Tipptrainer, TIPP10 e GNU Typist
  • Provare KToon
  • Tenere d'occhio LXDM: potrebbe essere il display manager che fa per noi
  • Altro software da valutare: Anagrammi
  • Aggiungere FloboPuyo
  • Provare StoryMaps
Strumenti personali