|
Configurazione Hardware
Partizionamento
Perchè sprecare 500 MB per una partizione di servizio?
La scelta della versione di Linux
La scelta dei pacchetti
Gli utenti e le password
L'hardware esterno
Configurazione Hardware
Rispetto alle precedenti esperienze (relative a qualche anno fà), il laboratorio
ha subito una radicale trasformazione:
- Sono state abbandonate le macchine diskless (sia DOS che Linux)
- L'hardware è stato aggiornato prima con dei Pentium II a 350 MHz, con disco
da 4GByte e 64 MB di RAM (laboratorio 'A') quindi con Pentium III a 600 MHz con 128 MB
di RAM e disco da 8GB (laboratorio 'B') (entrambi i laboratori son attualmente in funzione)
- Si è adottata una soluzione dual boot con Windows 98 e due partizioni di Linux (una
di produzione ed una di servizio, per poter intervenire in caso di inconvenienti)
Partizionamento
Per prima cosa sono state create le opportune partizioni (ad esempio nel laboratorio 'B'):
hda1 | VFat 32 | 3 GBPartizione
Windows | |
hda2 | Estesa | 6,6 GB |
hda5 | 256 MB | Linux Swap | Area di Swap di Linux, il doppio
della RAM instllata |
hda6 | 500 MB | Ext 2 | Partizione di 'servizio'
di Linux |
hda7 | 2,2 GB | Ext 2 | Partizione principale di
Linux |
| 3,6 GB | Libero | Spazio libero, per
compatibilità parziale con Laboratorio 'A' |
Per scegliere la partizione da avviare, si è installato il boot loader LILO.
Perchè sprecare 500 MB per una partizione di servizio?
La partizione di servizio contiene una installazione minima di Linux, in grado di
connettersi in rete.
Questa partizione contiene tutti i tool per:
- Formattare una partizione
- Riparare una partizione
- Copiare file da un'altra macchina tramite la rete (nfs o FTP)
- ripristinare completamente il contenuto di una partizione (Linux o Windows)
recuperando i dati dalla rete o da un secondo hard disk installato
Utilizzando questa partizione è quindi possibile eseguire la prima installazione
della partizione di lavoro, oppure riparare una partizione di lavoro nella quale siano
stati fatti dei guai. Occorre ricordare che gli studenti hanno l'accesso di root alle
macchine.
Inoltre, se una macchina viene spenta senza prima dare un comando halt o simile,
la partizione di servizio risulta estremamente utile per eseguire un fsck su una
partizione di produzione con errori.
Si potrebbe in alternativa utilizzare un 'CD live' con un file system adeguato, ma questo
non potrebbe contenere i dati di configurazione della rete della singola macchina.
Non si esclude di individuare in futuro un metodo per realizzare un simile CD live che
si adatti bene alla nostra architettura.
La scelta della versione di Linux
La scelta della distribuzione di Linux è caduta su
Debian. Debian è
la distribuzione GNU, con una politica molto restrittiva riguardo alla licenza dei pacchetti.
In realtà non è questa la motivazione della scelta, sebbene questa politica
non mi dispiaccia affatto. In alcuni casi, come nella scelta del paccheto per sviluppo Java - il
JDK della Sun - ho fatto scelte diverse.
Debian è anche conocsiuta come la distribuzione più stabile sul mercato. Questo
è certamente un argomento molto forte. Purtroppo questa stabilità ha portato al fatto
che la corrente distribuzione stabile (Debian 2.2, detta Potato) è stata
rilasciata il 14 Agosto 2002. Da allora sono stati pubblicati sei aggiornamenti (attualmente
la versione corrente è la 2.2r6), che pero' hanno solo corretto bachi e problemi di
sicurezza, senza aggiornare i pacchetti.
Attualmente anche con Linux utilizziamo estesamente l'interfaccia grafica. Negli ultimi due
anni i pacchetti hanno avuto uno sviluppo molto importante, in quanto molto del lavoro si
è attualmente spostato sull'interfaccia.
In particolare sia le suote di sviluppo sia i pacchetti di office si sono enormemente
sviluppati in quest'ultimo periodo.
Ho quindi valutato di adottare per il nuovo laboratorio la futura versione (in stato di
testing, quindi, si presumeva, già stabile e molto vicina alla fase di
freeze, vale a dire del test finale della distribuzione su CD),
nome in codice Woody.
Dopo una serie di prove, visto anche che il tanto agognato freeze e seguente rilascio
di Woodycontinuava a farsi attendere, ho alla fine deciso di adottare la
versione unstable, di nome Sid. Questa versione comprende le ultime versioni
dei pacchetti, comunque ritenute stabili. Malgrado sia chiamata unstable (instabile)
presenta comunque una stabilità che nulla ha da invidiare alle altre distribuzioni
di grido.
Un argomento a favore della scelta di Debian è il metodo di gestione dei pacchetti che consente di installare o rimuovere pacchetti con un ottimo livello di dettaglio (tanti
pacchetti, ognuno con un preciso componente) direttamente in linea, senza dover fermare la
macchina e fare operazioni di 'reinstallazione'. La gestione delle dipendenze è ottima:
i pacchetti necessari per l'installazione di un nuovo pacchetto vengono individuati in
maniera automatica e molto precisa.
Per finire, la struttura delle directory di confiurazione e di avvio (l'albero /etc)
è molto ben organizzata e molto chiara. È relativamente facile manutenere una
cnfigurazione del sistema, ed anche replicarla, modificandola con semplici script, da una
macchina all'altra.
La scelta dei pacchetti
Ai tempi del laboratorio diskless, l'interfaccia d'uso del sistema era l'interfaccia
carattere. Attualmete una scelta del genere non è più proponibile, se si vuole
presentare il sistema come utilizzabile.
Sò che mi tirerò addosso le ire di tutti i fan di Emacs, ma
è molto più semplice programmare utilizzando un ambiente integrato grafico che
vi, gcc, make e gdb direttamente.
Inoltre, una parte del programma và svolta utilizzando un foglio elettronico, ed
i fogli elettronici con interfaccia console nopn sono molto usabili.
Le attività che verranno svolte sulle macchine saranno:
- Sviluppo di fogli di calcolo
- Attività con programmi specifici
(automi
per la programmazione degli automi, appunto)
- Programmazione Assembler 8051
- Programmazione Assembler x86
- (in prospettiva) Programmazione PIC
- Programmazione C/C++
- Programmazione Java
- Programmazione PHP
- Editing di pagine WEB
- Programmazione SQL
- Editing di immagini, per creazione di siti Web
- Consultazione di documentazioni in Internet o Intranet
Come interfaccia grafica si è scelto Gnome,
sotto XFree4, con window maneger
Sawfish.
Per quanto riguarda l'editing HTML, si è scelto di non adottare un editor grafico,
ma di editare l'HTML a mano, anche perchè questo prepara alla scrittura degli script.
- Sviluppo di fogli di calcolo
- Dato che l'interfaccia scelta è Gnome, il foglio elettronico utilizzato
è GNumeric
- Attività con programmi specifici (automi per la programmazione degli
automi, appunto)
- Il programma automi è un programma sviluppato internamente, per
la simulazione degli automi. Partendo da una descrizione testuale dell'automa, realizza
una finestra con i controlli dell'automa stesso, in grado di emularlo.
Fintantochè il programma non avrà un editor incorporato per le tabelle,
useremo GNotepad+ o
Gedit per editare la definizione delle tabelle
La home page del programma Automi è http://www.salvi.mn.it/stefano/software/automi/
- Programmazione Assembler 8051
- Anche in questo caso viene utilizzato pcmon, un programma autopordotto che
ha funzione di:
- Editor
- Loader seriale sulla scheda target
- debugger simbolico
- emulatore
- assemblatore (tramite un assemblatore esterno)
Per assemblare i programmi viene usato l'assembler esterno
as31.
- Programmazione Assembler x86
- Per la programmazione assemble X86 si è optato per utilizzare gas,
l'assemblatore del gcc. Questo consente sia di vedere una seconda sintassi
per l'assembler, sia di prepararsi alla programmazione mista c-assembler, utilizzando
l'assembler in linea (che appunto è gas)
- (in prospettiva) Programmazione PIC
- Attualmente la programmazione del microcontrollore PIC non fà parte del programma di
Sistemi, però diversi studenti lo usano per le tesine di quinta. Si è scelto di
installare vari strumenti già inclusi nella distribuzione Debian rigruardo a questo micro e
il programmatore Ponyprog.
- Programmazione C/C++
- La programmazione in C (più che in C++, per il corso di Sistemi) è la parte
fondamentale del lavoro. Si è scelto di utilizzare
anjuta come ambiente di sviluppo, in quanto già
molto completo e abbastanza stabile. Sembra nettamente all'altezza di prodotti concorrenti sotto
Windows, come il Borland C 5 utilizzato in altre materie.
- Programmazione Java
- Per la programmazione Java si è scelto il JDK della
Javasoft (già disponibile come pacchetto .deb)
in quanto la controparte open source (jikes, kaffe ecc.) non è risultata completa,
almeno per lo sviluppo degli applet (sono stati riscontrati problemi con AppletViewer)
- Programmazione PHP
- La programmazione in PHP stà a cavallo tra Informatica (come ionterfaccia tra
Web e database) e sistemi (architetture distribuite, architetture three thier).
La programmazione viene eseguita con comune editor (
GNotepad+ o
Gedit) e l'esecuzione viene ottenuta tramite un
server Apache con inteprete PHP4 sulle singole macchine.
- Editing di pagine WEB
- L'editing di pagine Web non è propriamente curricolare, ma ricorre nelle aree di
progetto. Come detto in precedenza, si è privilegiato l'editing diretto del codice,
anche perchè spesso la problematica non è quella di produrre pagine direttamente
in HTML, ma di trasformare testi diversi in pagine HTML, inserendoli in pagine campione.
Quest'ultimo lavoro non può essere svolto agevolmente tramite editor grafici.
- Programmazione SQL
- In realtà questa parte riguarda più il programma di Informatica che
di Sistemi.
Sulle macchine è comunque installato PostgreSQL.
Questa scelta è stata in realtà dettata dal fatto che PostgreSQL è
parte delle distribuzioni Debian, ma si è poi dimostrata valida, in quanto Postress
è una delle implementazioni libere di SQL più complete.
Postgress è installato anche sul server, e spesso viene utilizzato da lì.
Viene utilizzato in maniera interattiva con psql, tramite ODBC da Visual Basic
(spiace, ma siamo praticamente obbligati ad usarlo, spinti dalla pressione del territorio),
oppure da PHP, nella programmazione di pagine attive.
- Editing di immagini, per creazione di siti Web
- Nella specializzazione di Informatica molto spesso capita di dover produrre documenti
HTML, sia tecnici che non. Ad esempio, la produzione del Giornalino d'Istituto, così
come alcuni documenti di carattere culturale sono delegati alla specializzazione di Informatica,
svolti sotto forma di area di progetto.
Naturalmente questi lavori coinvolgono parecchio lavoro di editing fotografico. Attualmente
lo scanner non viene ancora gestito sotto Linux, con
SANE, ma l'editing viene spesso svolto
con GIMP.
- Consultazione di documentazioni in Internet o Intranet
- Ovviamente non è possibile strutturare una workstation di questo tipo
priva di un browswe WEB. Dato che si produrranno pagine HTML, occorrerà un mezzo
per verificarle. Parte della documentazione che gli studenti usano è pubblicata
sul sito intranet della scuola ed altra viene consultata sulla rete.
La scelta del browser è caduta su Mozilla che
è sembrato abbastanza completo e stabile, anche per la visualizzazione di applet (che
fanno parte a loro volta del corso di Sistemi).
L'alternativa Galeon, sebbene leggermente
più leggera, non è stata presa in considerazione perchè giudicata non
ancora matura al tempo dell'installazione.
Gli utenti e le password
I ragazzi in laboratorio lavorano normalmente in gruppi di due studenti.
Ogni gruppo ha a disposizione un suo login ed una sua area di lavoro (home). Inoltre
anche gli insegnanti hanno a disposizione un loro login.
Nel sistema troveremo quindi un login per ogni gruppo di ogni classe, più i login
degli insegnanti.
Per consentire agli insegnanti ed ai gruppi di non essre legati ad una particolare macchina,
le home sono immagazzinate su di un server e vengono montate in nfs.
Il laboratorio è servito da un server Linux Reh Rat 7.2, che oltre a conenere le
home directroy delle partizioni Linux, ospita un server Samba che serve le macchine in Win98 e
consente la condivisione delle stampanti di rete, oltre a fungere da router per la connessione
alle altre risorse dell'Istituto e ad Internet.
Questo server serve tre laboratori, dotati di macchine dual boot. I tre laboratori condividono
le stesse directory degli utenti. Il server possiede quindi una directory /home_linux
nella quale vengono create le directory home degli utenti Linux.
Per fare delle prove individuali di laboratorio è però invece necessario
rendere le macchine indipendenti ed eliminare le risorse condivise.
Per prima cosa è stato creato nelle workstaition un utente plab la cui home
directory è in root (/) invece che in home. Tramite il file
/etc/fstab di ogni singola workstaiton nella directory /plab viene montata
tramite nfs la directory /plab/<nome macchina>.
Sul server è quindi presente una directroy /plab che contiene una diversa
sottodirectory per ognuna delle workstation dei tre laboratori. In questa maniera è
estremamente agevole raccogliere i risultati a prova finita, ed anche preparare il laboratorio
per il prossimo turno, se la prova si svolge in due turni.
Resta il problema di evitare che gli studenti possano 'condividere' i risultati delle prove
tramite le home directory comuni.
Tenendo conto che è possibile che in un laboratorio si svolga una prova, mentre in un altro
si svolge la normale attività, è stato predisposto un link simbolico per ogni
laboratorio, che punta alla directory comune /home_linux. In pratica la situazione
egrave la seguente:
/home_380 -> /home_linux
/home_550 -> /home_linux
/home_363 -> /home_linux
Nel file /etc/exports del server la directory /home_linux non viene esportata.
Vengono esportate invece le singole directory /home_380, /home_550 e
/home_363, ma ciascuna visibile solamente agli IP del relativo laboratorio. In questo
modo, se si elimina o rinomina uno dei tre symlink, il rispettivo laboratorio non potrà
più monate una directory comune. Per finire, le directory in /plab sono esportate
singolarmente, ognuna visibile solo alla relativa macchina. Questo consente di avere un ambiente
realtivamente sicuro per le prove di laboratorio.
Si è visto nel tempo che serve ogni tanto fare qualche ritocco alle configurazioni
delle macchine. A questo scopo sono stati predisposti due meccanismi:
- È stata creata una directory /usr/global montata in nfs readonly sul
server.
- È stato aggiunto uno script alla sequenza di avvio, che verifica se ci sono
aggiornamenti da fare.
La directory /usr/global possiede le seguenti sottodirectory:
- /usr/global/bin
- è inserita nella variabile PATH e contiene eseguibili aggiuntivi
- /usr/global/sbin
- è inserita nella variabile PATH di root e contiene eseguibili aggiuntivi
per il superutente
- /usr/global/lib
- è inserita nel percorso di ricerca delle librerie e contiene librerie aggiuntive
- /usr/global/man
- è inserita nella percorso di ricerca delle pagine di manuale e contiene pagine di
manuale aggiuntive
- /usr/global/script
- Viene scandita dallo script di cui al punto 2. Contiene degli script che vengono eseguiti
all'avvio, per riconfigurare le workstation
Lo script di avvio a sua volta scandisce la directory /usr/global/script e, se trova
degli script che non ha ancora eseguito, li esegue.
Questi due meccanismi, insieme, consentono sia rendere un programma disponibile immediatamente
alle workstation, sia di installare nuovi programmi sulle workstation o modificarne la
configurazione.
Per quanto riguarda l'autentica delgi utenti, si è optato per utilizzare
OpenLDAP, tramite PAM.
Sul server del laboratorio è stato attivato il server LDAP, mentre le workstation sono
state configurate per autenticarsi su LDAP prima che tramite /etc/passwd, e per
modificare le password nella directory LDAP tramite il comando passwd.
In questo modo la gestione delle password è centralizza ed una modifica della password
di un gruppo fatta da una workstation si rispecchia su tutte le altre.
Per poter aggiungere e togliere nuovi utenti, creando la directory nella home condivisa e
creando l'utente nella directory LDAP invece che nel file /etc/passwd si sono dovuti modificare
gli script adduser e deluser. Questi comandi, in Debian sono due script PERL,
che eseguono alcune operazioni e richiamano alcuni comandi esterni. Sono stati modificati
utilizzando la libreria libnet-ldap-perl, per interfacciarsi con il server LDAP.
Gli script sono stati modificati estendendo i parametri di configurazione, per poter scegliere
se aggiornare LDAP e per creare anche una riga in /etc/passwd oltre all'entry in LDAP. La
configurazione di LDAP /etc/pam_ldap.conf e /etc/ldap_secret in modo da non
dover duplicare la configurazione rispetto a quella di PAM.
L'hardware esterno
Due argomenti del programma richiedono dell'hardware esterno per essere svolti correttamente.
- La parte (svolta tra terza e quarta) sul microcontrollore, che prevede un cross-sviluppo
su di un processore 8051 richiede una scheda a microporcessore esterna
- La parte di quarta sull'interfacciamento prevede dell'hardware nesterno da interfacciare.
Per la parte sul controllore 8051, dopo una serie di tentativi di autocostruzione di schede,
che hanno dato origine a schede assolutamente inaffidabili, ci siamo rivolti ad un prodotto
commerciale. La nostra scelta è caduta sulla scheda
GPC F2 della
Grifo di S. Giorgio in Piano,
associata con la scheda periferica
TI/O 16.
La scelta è caduta su questa coppia di schede in quanto consentono di fare le operazioni
di base, utilizzando un normale processore 8032 e non un derivato.
La scheda GPC F2 monta una EPROM da 32K con un monitor in linguaggio macchina ed una RAM da 64 K.
Gli indirizzi bassi della RAM (da 0000H a 7fffH) sono visibili nello spazio XDATA del processore,
mentre i restanti 32K (da 8000H fino al limite dell'I/O mappato, F9FFH) sono condivisi tra
XDATA e CODE, in modo da poter ospitare dei programmi scaricati tramite il Monitor ed
eseguirli.
La scheda prevede due LED connessi direttamente a due piedini del port P1. P1.2 è connesso
al LED rosso e ad un cicalino piezoelettrico, P1.5 è connesso al LED giallo (ed alla
tensione di programmazione della EPROM).
Oltre a questi LED, la scheda mette a disposizione un'interfaccia RS232, un'interfaccia parallela
a 24 bit realizzata con un PPI 8255, 8 di questi bit sono connessi ad uno zoccolo interno
con un dip switch, mentre gli altri 16 sono connessi al connettore esterno. Troviamo poi
due timer 82C54 ed un Real Time Clock 6242b.
Il connettore di I/O esterno a 16 bit può essere connesso alla schedina TI/O 16, che
visualizza lo stato dei sedici pin e consente di usarli come input, tramite 16 pulsanti.
In alternativa al TI/O 16, sono stati reperiti sul mercato del surplus dei display Citizen H2010,
che sono dei display grafici LCD da 200x16 pixel. Questo display monta i controller Hitachi HD44102 e HD44103. Tramite una semplice
scheda di interfaccia questo display, insieme con
quattro tasti, può essere connesso al connettore di interfaccia della scheda.
Per alimentare la scheda, si è realizzata una piccola
schedina con un regolatore ed il tasto di reset,
per poter alimentare la scheda con un economico alimentatore da parete da 1A.
Per quanto riguarda l'interfacciamento, invece, si è optato per utilizzare l'I/O
già incorporato nel PC, vale a dire l'interfaccia parallela.
Questa interfaccia mette a disposizione due porte in uscita (03f8H, ad 8 bit e 03faH,
a quattro bit) ed una in ingresso (03f9H, a 5 bit).
Conettendo dei LED alle porte in uscita e dei bottoni alla porta in ingresso è possibile
fare una serie di esperimenti. A questo scopo si è realizzata una
schedina da connettere alla parallela.
Ci sono poche osservazioni da fare.
- Scrivendo un valore 1 su di un qualunque bit di uscita
si accende il rispettivo LED.
- Per garantire un valore 1 sugli ingressi, quando i tasti sono rilasciati,
si è usata una resistenza da una delle uscite di controllo. Se si pongono ad 1
le uscite del port di controllo (all'indirizzo 03faH), la corrente fluirà attraverso
le resistenze forzando stabilmente ad 1 gli ingressi.
- Su alcune porte parallele si legge un valore 1 anche senza resistenza o con la resistenza
indicata e l'uscita relativa a 0, ma la resistenza connessa e l'uscita ad 1 garantiscono un
livello stabile.
- Gli ingressi sono connessi ai bit dal 3 al 7 della porta 03f9H.
- Una lettura della porta 03f9H ritorna 1 per ogni tasto rialsciato, eccetto ACK (bit 7)
e 0 per ogni tasto premuto (sempre eccetto ACK - bit 7)
- Se il pulsante ACK è rilasicato, si legge un valore 0 sul bit 7 del port 03f9H,
se è premuto si legge un valore 1.
- Il valore dei bit da 0 a 2 del port 03f9H non è determinato, quindi và
scartato e non vanno fatte ipotesi sul loro valore.
Schemi:
- Basetta con i LED per esperimenti con l'interfaccia parallela
leds.png (17.435 byte)
- Alimentatore per scheda GPC F2
alim.png (17.254 byte)
- Interfaccia per display Citizen H2010H
display.png (13.680 byte)
[Home Page dell'ITIS "Fermi"]
[Indice Angolinux]
[Precedente]
[Successivo]
© Ing. Stefano Salvi - Released under GPL licence
|