Un pinguino per ogni bambino

Da Lecco.
Attenzione: questo progetto è partito da poco, il materiale è già assolutamente
utilizzabile, ma si tratta di una versione ancora abbastanza primitiva.

Questa è la pagina che tratta di tutto ciò che gira intorno alla prima distro made in Glux. Il progetto è partito nell'agosto 2008 con questo scambio di e-mail in lista.

Indice

Obiettivo

Realizzazione di una distribuzione GNU/Linux a misura di bimbo. L'età a cui ci rivolgiamo è quella dell'ultimo anno della scuola materna, cioè 5-6 anni. In futuro si potranno eventualmente prevedere anche altre fasce d'età.

Guida per gli sviluppatori

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.

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
  • 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
  • Circus Linux!: giochino
  • Ri-li: giochino ferroviario
  • SuperTux: giochino
  • Frozen-Bubble: giochino
  • Pingus: giochino
  • KHangMan: il classico gioco dell'impiccato

Le dipendenze si risolvono con

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

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

Lo script seguente è rilasciato dall'autore sotto pubblico dominio. C'è un commento esplicativo quasi per ogni riga.

################################## .fvwm2rc  ##################################
# Version: BimboTux 0.1.0                                                     #
# Authors: Carlo Stemberger, Gianni Fioretta                                  #
# Last updated: 02/Apr/2009                                                   #
# Released by the authors into the public domain.                             #
###############################################################################

#----------------------------------------------------- Impostazioni globali --#
# percorso immagini
#ImagePath /usr/share/pixmaps: /usr/include/X11/pixmaps

# un'unica pagina (niente desktop virtuali)
DeskTopSize 1x1

# mini-icone
#Style *		MiniIcon mini.x.xpm

#----------------------------------------------------------------- Finestre --#
# COMPORTAMENTO
# posizionamento: ignora la posizione suggerita dal programma lanciato
Style * NoPPosition

# attivazione finestra con un click
Style * ClickToFocus

# riduzione a icona: non appare nessuna icona sul desktop
Style * NoIcon

# BARRA DEL TITOLO
# font: SteveHand
Style * Font "StringEncoding=UTF-8:xft:Steve:bold:pixelsize=20"
#Style * Font -adobe-helvetica-bold-r-*-*-20-*-*-*-*-*-*-*

# colore del testo e dello sfondo, finestra attiva: bianco e blu acciaio
Style * HilightFore white, HilightBack steelblue

# colore del testo e dello sfondo, finestre inattive: nero e grigio
Style * Color Black/Grey

# spessore del bordo e delle maniglie: 7
Style * BorderWidth 7, HandleWidth 7

# barra del titolo "piatta", niente effetto "bottone"
TitleStyle -- Flat

# BOTTONI
# mini-icona del programma lanciato, a sinistra
ButtonStyle 1 MiniIcon -- Flat

# icona "chiudi"
#ButtonStyle 2 Pixmap mini.cross.xpm -- Flat # non funziona ###################

# icona "riduci a icona"
#ButtonStyle 4 Pixmap mini.lower2.xpm -- Flat # non funziona ##################

# COMPORTAMENTO DEL MOUSE
# mini-icona del programma lanciato
Mouse 0 1 A # non fa niente

# bottoni della barra del titolo
Mouse 0 2 A Close
Mouse 0 4 A Maximize 100 100
Mouse 0 6 A Iconify

#---------------------------------------------------------------- Menu Esci --#
AddToMenu "HaltMenu"
+ "Arresta la macchina%mini.stop.xpm%"  Exec    sudo shutdown -h now

#------------------------------------------------- Barra delle applicazioni --#
Style FvwmTaskBar NoTitle, Sticky, BorderWidth 0, HandleWidth 0
AddToFunc InitFunction I Module FvwmTaskBar
AddToFunc RestartFunction I Module FvwmTaskBar
*FvwmTaskBarStartName Esci
*FvwmTaskBarStartMenu HaltMenu
*FvwmTaskBarStartIcon mini.stop.xpm
*FvwmTaskBar: UseSkipList
WindowsSkipList: lxlauncher

#--------------------------------------------- Programmi lanciati all'avvio --#
DestroyFunc StartFunction
AddToFunc StartFunction
+ I Exec exec /usr/bin/lxlauncher &

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.

Partenza di X automatica dopo il login da console

Innanzitutto occorre settare l'opzione allowed_users=anybody nel file /etc/X11/Xwrapper.config. Il risultato dovrebbe essere simile a così:

# Xwrapper.config (Debian X Window System server wrapper configuration file)
#
# This file was generated by the post-installation script of the x11-common
# package using values from the debconf database.
#
# See the Xwrapper.config(5) manual page for more information.
#
# This file is automatically updated on upgrades of the x11-common package
# *only* if it has not been modified since the last upgrade of that package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command as root:
#   dpkg-reconfigure x11-common
allowed_users=anybody
nice_value=0

Bisogna ora creare (da superutente) lo script di controllo startx.sh che va inserito in /usr/bin

#!/bin/bash
 
function check {
if [[ -f /tmp/login ]]; then
if [[ ! -f /tmp/.X0-lock ]]; then
rm /tmp/login
return 0
else
return 1
fi
else
touch /tmp/login
return 0
fi
}
 
check
 
if [[ $? -eq 0 ]]; then
 
startx 1>/dev/null 2>/dev/null
 
fi

senza dimenticarsi di dargli i permessi di esecuzione con chmod a+x /usr/bin/startx.sh.

A questo punto lo script va richiamato in automatico, mettendo in ~/.bash_profile le seguenti righe:

case "$TERM" in
linux) /usr/bin/startx.sh & ;;
*) ;;
esac

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

Realizzazione di un CD live

Questo paragrafo è da aggiornare

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 Lenny con installati i pacchetti ufficiali cdebootstrap e live-helper. Per ogni necessità di chiarimento fare riferimento al manuale -- purtroppo al momento ancora in fase di realizzazione -- e al wiki del progetto Debian Live.

Creare una cartella di lavoro; dal suo interno lanciare

$ lh_config --bootappend-live "locale=it_IT.utf8 keyb=it" --hostname bimbotux \
--mirror-bootstrap "URL" --mirror-binary "http://ftp.it.debian.org/debian/" --debian-installer live [-b usb-hdd]

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 apt-proxy, l'indirizzo sarà un qualcosa di analogo a http://localhost:9999/debian/. Attenzione: apt-proxy sembra avere una qualche incompatibilità con l'installer Debian, quindi non usarlo quando si mette l'opzione --debian-installer live.

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.

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

Creare all'interno della directory config/chroot_local-packageslists un file chiamato ad esempio bimbotuxpkg contenente l'elenco dei pacchetti da installare:

### bimbotuxpkg ###
alsa
cups
xorg
fvwm
ttf-sjfonts
lxlauncher
sudo
gnome-themes
tuxpaint
tuxtype
gcompris-sound-it
gnucap
gnuchess
childsplay-alphabet-sounds-it
ktuberling
kde-i18n-it
pysycache
lletters
lbreakout2
circuslinux
ri-li
supertux
frozen-bubble
pingus

In config/chroot sostituire

LH_PACKAGES_LISTS="standard"

con

LH_PACKAGES_LISTS="standard bimbotuxpkg"

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

Copiare tutta la cartella gnome-brave in config/chroot_local-includes/usr/share/icons/: creare il percorso con mkdir -p.

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

Inserire il file Xwrapper.config modificato in config/chroot_local-includes/etc/X11/; creare il percorso con mkdir -p.

Inserire nella directory config/chroot_local-includes/usr/share/desktop-directories/ i quattro file di localizzazione; creare il percorso con mkdir -p.

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

# lh_build

Da fare

ALSA

  • L'audio non funziona: capire perché

.bash_profile

  • Quando si passa ad una console tty, fatto il login compare un errore, in quanto .bash_profile prova ad avviare X che sta già girando

Live CD

  • Cambiare immagine del boot loader: levare lo Swirl e mettere qualcosa di più mirato

Installer

  • L'installer propone debian come hostname; mettere bimbotux come default

LXLauncher

  • Cambiare sfondo, vedi qui.

/etc/apt/sources.list

  • Non è adeguatamente configurato: risultano attivi solo i repository security

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
    • Cambiare font
    • Fare in modo che, massimizzando le finestre, la barra non venga coperta

LBreakout2

  • Da localizzare
  • Manca il bottone su LXLauncher, vedi qui; nell'attesa che il pacchetto entri in Squeeze, occorre pescarlo da Sid.
  • Decidere se tenerlo o meno

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

Ri-li

  • Fare in modo che sia già configurato (localizzato italiano) al promo avvio. La configurazione è in ~/.ri-li.pref, che però è un file binario

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

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

  • Installare la localizzazione italiana: dovrebbe essere questo pacchetto
  • Tra le dipendenze mette Iceweasel: perché?

Pacchetti Debian

  • Installare CUPS
  • SLiM, ma unicamente quando installato (non nella live)

Funzionalità da implementare

  • Lettore multimediale
  • Lettore e-book
  • Tema musicale

Suggerimenti

Download

L'ultima immagine da noi realizzata (solo per architettura x86 32bit, al momento) è scaricabile via BitTorrent attraverso LinuxTracker.

Versione: 0.1.0
Dimensione: 553MB
Torrent
md5: 9d02ab355885a4776ca7c24116765b13

In alternativa si può scaricare via FTP dai seguenti server:

  • [1]
    • Nome utente: Glux
    • Password: Glux
  • [2]
    • Nome utente: tux
    • Password: bimbotux

Guida per l'utente

Realizzare l'immagine ISO come indicato oppure, più semplicemente, scaricarla direttamente via BitTorrent (consigliato) o FTP, poi scriverla su un CD-ROM vergine con un qualunque programma di masterizzazione in grado di gestire le immagini ISO.

Inserire il CD-ROM nel lettore e riavviare il computer.

Live

Alla schermata che si presenta, premere invio; attendere il caricamento del sistema operativo.

Cliccare (con un solo click) sui grossi bottoni presenti sul desktop per lanciare le varie applicazioni.

Per spegnere la macchina è presente un bottone in basso a sinistra.

Installazione

Alla schermata che si presenta digitare install seguito da invio per far partire l'installatore; seguire la procedura guidata.

Al riavvio, dopo essersi autenticati con il nome utente e la password scelti in fase d'installazione, si trova una distribuzione in tutto identica alla versione live.

In caso di difficoltà cercare in rete la soluzione o contattarci di persona o in mailing-list. Ogni suggerimento è benvenuto.

Progetti simili

Strumenti personali