so.di.linux in classe

Transcript

so.di.linux in classe
SO.DI.LINUX IN CLASSE
Associazione Culturale LugAnegA
Linux user group Not Eggs Group
Autore : Cartini Umberto ­ e­mail [email protected] – settembre 2008
Introduzione:
la seguente documentazione non si prefigge lo scopo di essere una vera e propria guida, quanto piuttosto una raccolta di informazioni ed osservazioni raccolte durante la configurazione di un piccolo laboratorio di informatica.
Sarà aggiornato pertanto mano a mano che tale laboratorio sarà implementato con nuove funzionalità .
Pertanto intendo subito chiarire che non assumo nessuna responsabilità nella applicazione di quanto sotto andrò ad esporre.
Questa documentazione può essere liberamente distribuita e/o modificata mantenendo il riferimento all'autore.
Caratteristiche hardware:
L'aula è composta di un server e di 11 clients.
● SERVER Fujitsu­Siemens:
CPU: Pentium D820 2,8 GHz
Ram: 4 Gb DDR II ECC
Hard Disk: 2 x 160 Gb SATA 7200 rpm
Drive Ottico: DVD­RW DL
Scheda video: on board
Scheda di rete: 2 x 1 Gbit
Raid: raid 0,1 controller on board
Audio: on board
Sistema Operativo: Debian Lenny
● CLIENTS Case: Nokia 350 w usb frontali
Mother Board: Asus M2V­TVM KM 890
CPU: AMD Sempron 3000+ SKT AM2
Ram: DIMM 512 Mb DDR II 533 MHz
Hard Disk: Maxtor 80 Gb EIDE 7200 rpm
Cdrom/DVDrom: LG DVD rom 16x 48x EIDE
VGA: integrata
Scheda audio: integrata
Scheda rete: 10/100 Mb PCI
Floppy drive: 3,5” 1,44 Mb
SO: So.Di.Linux ( Ubuntu Feisty )
● MONITOR Fujitsu­Siemens LCD 17”
● STAMPANTE HP Photosmart Multifunzione C5180
Osservazioni: Sebbene dalla descrizione si evinca che la richiesta era stata fatta per avere 11 clients gemelli nella realtà le macchine ci sono state consegnate con delle differenze, ad esempio schede madri diverse, schede di rete di produttori diversi etc.
Questo alla fine ha condizionato non poco la scelta verso la quale orientarsi al fine di avere un sistema semplice, robusto, funzionale ed il più possibile completo.
Infatti, questa diversità ha portato parecchi problemi sia su un sistema LTSP che con i tentativi di replica previa clonazione dei clients, non li descriverò in questa sede, ma se siete interssati contattatemi via e ­mail e vi chiarirò la cosa.
Altro punto decisamente a favore di questa distribuzione è il fatto che può essere ridistributa agli studenti ed agli insegnanti che a casa possono così esercitarsi in un ambiente uguale a quello usato nella didattica (...e senza spendere un cent ) in live o fisso.
Caratteristiche del sistema :
In questo primo step di configurazione si è scelto di limitare i servizi minimi necessari ad implementare un sistema clients/server ossia: su ogni singolo client viene installata una copia propria del sistema operativo visto anche il limitato numero di macchine non comporta notevoli problemi, mentre nel server si gestiscono le Home dei singoli utenti ed eventuali risorse condivise.
Questo naturalmente signica che gli utenti di conseguenza sono creati esclusivamente sul server.
Il tutto è reso possibile basandosi sui servizi NIS + NFS ( magari qui qualcuno potrebbe suggerire o impletare l'autentificazione dell'utente via LDAP ).
Il fatto poi di gestire le home in un punto unico permette elasticità nell'uso del clients in caso di avaria: l'utente può accedere da una macchina alternativa; per la sicurezza del dato ci appoggiamo al raid e si possono applicare politiche di backup dati più robuste.
Server:
Il sistem operativo installato è Debian Lenny .
Modalità di lavoro esclusivamente testuale, volendo, si possono pensare a controlli dei servizi più
gradevoli installando qualora disponibili, front end web, al momento non lo abbiamo fatto.
Pacchetti necessari:
● nfs­kernel­server
● portmap
● nis
● openssh­server
● openssh­client
● cups
Vista l'entità modesta del laboratorio ci siamo fermati qui, ma in previsione si può pensare ad
integrare :
● bind
● dhcp
● server di posta ( da scegliere )
● apache ( per attività interne )
● ftp
● samba
● proxy (squid)
dipenderà anche dal fatto se verrà portata o meno la banda larga.
Client:
Nei clients è stata installata la versione corrente di So.Di.Linux basato su Ubuntu 7.04 Feisty Fawn.
Non entreremo nel dettaglio dell'installazione di So.Di.Linux in quanto ben spiegata nel sito ufficiale della distribuzione : http://sodilinux.itd.cnr.it/index.php
e davvero semplice da seguire partendo anche da Live.
Anche per i clients comunque sono da attivare alcuni servizi tramite i pacchetti:
● nis
● nfs­common
● portmap
● openssh­server
● openssh­client
● hplip
Sono necessari anche i seguenti pacchetti per poter gestire la stampante multifunzione:
● libsane­dev
● libsnmp­base
● libsnmp9
● libsnmp9­dev
● hpijs
● ubuntu­restricted­extra (questo pacchetto serve per reperire la “librt.so.1”)
Va da sé che ho dato per scontato che siano stati impostati i repositori per ubuntu nel file
/etc/apt/source.list e che si abbia il minimo di dimestichezza con apt o dselect o synaptic al fine di poter aggiungere i pacchetti desiderati.
Nel caso abbiate una connessione veloce i repository di default di So.Di.linux sono sufficienti al
più potete integrare con i “contrib” e “non­free”; se invece questa disponibilità non ce l'avete il consiglio che vi do è quello di creare un cdrom contenente i pacchetti necessari da aggiungere poi con il comando:
#apt­cdrom add
Vediamo quindi come creare questo cdrom (deve essere installato il pacchetto “dpkg­dev”):
iniziamo creando una directory destinata a contenere i nostri pacchetti
#mkdir /tmp/archives
copiateci dentro i vostri file.deb destinati al progetto.
Ora creiamo il repository e come primo passo ci portiamo presso la directory padre del nostro archives ossia nell'esempio in /tmp e poi eseguiamo l'istruzione :
#cd /tmp
#sh ­c “scanpackages archives indice | gzip > archives/Packages.gz”
Non è obbligatorio per il corretto funzionamento della cosa creare il file “indice “ ma se così decidete dovete sostituire “indice” con “/dev/null” lasciando invariato il resto della istruzione.
Molto bene , a questo punto creiamo l'immagine iso (controllate di avere installato il pacchetto mkisofs):
#dd if=/tmp/archives of=/path/repository.iso
oppure
#mkisofs ­f ­J ­l ­r /tmp/archives > repository.iso
oppure
#mkisofs ­R ­J ­o repository.iso /tmp/archives
Ed infine masterizziamo:
#cdrecord ­eject driveropts=burnfree speed=4 dev=/dev/sdcx ­v ­data repository.iso
ATTENZIONE: sostituite dev=/dev/sdcx con il riferimento alla vostra unità ottica se non lo conoscete potete spulciare nel file “/etc/fstab”.
Il mio cdrom aggiuntivo al momento contiene i seguenti pacchetti:
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
autofs_4.1.4­13build1_i386.deb cabextract_1.2­2_i386.deb flashplugin­nonfree_9.0.48.0.0ubuntu1~7.04.1_i386.deb gstreamer0.10­plugins­ugly_0.10.5­0ubuntu2_i386.deb gstreamer0.10­plugins­ugly­multiverse_0.10.5­2_i386.deb hpijs_2.7.2+1.7.3­0ubuntu1.1_i386.deb hplip_1.7.3­0ubuntu1.1_i386.deb hplip­data_1.7.3­0ubuntu1.1_all.deb libevent1_1.1a­1_i386.deb libgssapi2_0.10­4build1_i386.deb libieee1284­3­dev_0.2.10­4build1_i386.deb liblame0_3.96.1­2ubuntu1_i386.deb libnfsidmap2_0.18­0build1_i386.deb libperl5.8_5.8.8­7ubuntu0.1_i386.deb librpcsecgss3_0.14­2ubuntu1.2_i386.deb libsane­dev_1.0.18­3ubuntu1_i386.deb libsensors­dev_1%3a2.10.1­2ubuntu2_i386.deb libsidplay1_1.36.59­4_i386.deb libsnmp9_5.2.3­4ubuntu1.1_i386.deb libsnmp9­dev_5.2.3­4ubuntu1.1_i386.deb libsnmp­base_5.2.3­4ubuntu1.1_all.deb libsnmp­perl_5.2.3­4ubuntu1.1_i386.deb libssl0.9.8_0.9.8c­4ubuntu0.3_i386.deb libssl­dev_0.9.8c­4ubuntu0.3_i386.deb libusb­dev_2%3a0.1.12­2_i386.deb ✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
msttcorefonts_1.8ubuntu1_all.deb nfs­common_1%3a1.0.12­4_i386.deb nis_3.17­2ubuntu2_i386.deb openssh­blacklist_0.1­1ubuntu0.7.04.1_all.deb openssh­client_1%3a4.3p2­8ubuntu1.4_i386.deb openssh­server_1%3a4.3p2­8ubuntu1.4_i386.deb perl_5.8.8­7ubuntu0.1_i386.deb perl­base_5.8.8­7ubuntu0.1_i386.deb perl­modules_5.8.8­7ubuntu0.1_all.deb portmap_5­24_i386.deb ubuntu­restricted­extras_2.2_i386.deb
Bene ora possiamo passare alla configurazione delle macchine.
Configurazione del Server:
Nel nostro caso vista la esigua quantità di pc abbiamo fornito le macchine di IP statici, questo lo potete ottenere tramite la configurazione del dhcp sfruttando i MAC addresses delle schede di rete oppure lasciando disattivato tale servizio e assegnare ad ogni singolo pc il proprio indirizzo.
Nel primo caso il file dhcpd.conf assomiglia a qualcosa del tipo (naturalmente dovete sostituire gli indirizzi sotto con quelli relativi alla vostra rete!!) nell'esempio in nostro server avrà indirizzo IP 192.168.1.254:
#dhcpd.conf
authoritative;
option subnet­mask
255.255.255.0;
option broadcast­address
192.168.1.255;
option routers
192.168.1.254;
option domain­name­servers 192.168.1.254;
option domain­name
“mio_dominio.lan”;
get­lease­hostnames
next­server
true;
192.168.1.254;
subnet 192.168.1.0 netmask 255.255.255.0{
default­lease­time
21600;
max­lease­time
86400;
}
group {
option nis­domain
“mio_dominio.lan”;
host pc­1 {
ddns­updates on;
hardware ethernet 00:50:8b:aa:f3:24;
fixed­address 192.168.1.10;
}
host pc­2 {
ddns­updates on;
hardware ethernet 00:40:96:38:7d:42;
fixed­address 192.168.1.11;
}
}
In questo modo all'avvio ogni singolo client riceverà sempre lo stesso ip.
Riavviamo dhcp:
#/etc/init.d/dhcp3­server restart
Dobbiamo a questo punto modificare il file “/etc/hosts” in modo che contenga la definizione di ogni singolo host:
127.0.0.1 localhost 127.0.1.1 mioserver 192.168.1.254 server.mio_dominio.lan
server
# host aula
192.168.1.10 pc­1
192.168.1.11 pc­2
#.........a seguire tutti gli altri
# The following lines are desirable for IPv6 capable hosts ::1 ip6­localhost ip6­loopback fe00::0 ip6­localnet ff00::0 ip6­mcastprefix ff02::1 ip6­allnodes ff02::2 ip6­allrouters ff02::3 ip6­allhosts
e modifico anche il “/etc/resolv.conf”:
nameserver
192.168.1.254
Bene proseguiamo con l'installazione dei pacchetti visti all'inizio per il server con l'istruzione:
#apt­get install nomepacchetto
Quando installerete “nis” vi chiederà il nome di dominio nis per praticità io gli passo lo stesso del dominio attuale quindi nel nostro caso “mio_dominio.lan” può essere diverso ma poi dovete ricordarvi della cosa in fase di configurazione.
Cominciamo a modificare il file /etc/exports per NFS dove dovranno essere presenti ls righe:
/home
192.168.1.10(rw,async,subtree_check)
/home 192.168.1.11(rw,async,subtree_check)
...................... per ogni host ripetere.........................
oppure in alternativa si può scrivere:
/home
*(rw,async,subtree_check)
per controllare si riavvia nfs :
#/etc/init.d/nfs­kernel­server restart
e si guarda cosa è stato esportato:
#showmount ­ ­export
Sistemiamo a questo punto anche nis, editiamo il file “/etc/default/nis” in modo tale che “NISSERVER=master” .
Lanciate il comando :
#/usr/lib/yp/ypinit ­m
dovrà comparire in fondo qualcosa come:
next host to add: server.mio_dominio.lan
next host to add: se vedete il vostro server premete ctrl­D per continuare, altrimenti, editatelo e date ctrl­D.
Visionate il file /etc/nsswitch.conf dovrà essere simile a:
passwd:
group:
shadow:
compat
compat
compat
hosts:
networks:
files dns
files
protocols:
services:
ethers:
rpc:
db files
db files
db files
db files
netgroup:
nis
Per controllare il nome del dominio nis:
#cat /etc/defaultdomain
Fatto; ora non resta che inserire gli utenti nel server con la solita procedura:
#adduser utente
ricordatevi che ogni volta che aggiungete un utente dovete aggiornae la mappa con il comando:
#cd /var/yp
/var/yp#make
Per ultimo assicuratevi che tutti i servizi richiesti siano attivi, potete fare come ultima manovra un
riavvio macchina : a questo punto il server è ok.
Configurazione del Client:
Eseguita l'installazione dei pacchetti indicati all'inizio passiamo alla configurazione dei file.
Il primo che andiamo ad editare è “nsswitch.conf” che in questo caso è leggermente diverso dal suo omologo nel server e riporta le seguenti righe:
passwd:
group:
shadow:
netgroup:
files nis
files nis
files nis
nis
hosts:
files nis mdns4_minimal [NOTFOUND=return] dns mdns4
Modifichiamo il file “/etc/host.conf” order
multi on
hosts,nis,bind
Aggiungiamo in ondo al fil “/etc/group” la seguente riga:
+:::
in fondo a “/etc/passwd”:
+::::::
ed infine in fondo a “/etc/shadow”
+::::::::
Passiamo a sistemare le cose per NFS; nel file “/etc/fstab aggiungiamo la riga:
192.168.1.254:/home /home nfs
defaults,_netdev,nosuid,rsize=8192,wsize=8192,hard,intr
Attivate i servizi cupsys e hplip o tramite l'interfaccia grafica assando dal menu di “Amministrazione → Servizi” oppure da shell con i seguenti comandi:
ln ­s /etc/init.d/cupsys /etc/init.d/rcS.d/S98cupsys
ln ­s /etc/init.d/hplip /etc/init.d/rcS.d/S99hplip
Finito ora facciamo ripartire i servizi uno ad uno oppure effettuate un riavvio macchina.
Se doveste avere problemi nel montare la home potete “forzare la cosa” inserendo il seguente comando:
/bin/mount ­a
come ultima riga in /etc/rc.local e /etc/rc2.d/S99rc.local.
Un modo alternativo per ottenere lo scopo è quello di utilizzare automount.
Siccome desiderate avere il controllo di quella macchina iniziamo con il fornire a root una password nota:
#passwd root
inserite la nuova password come richiesto; a questo punto avrete la possibilità di accedere alla macchina direttamente come root evitando il passaggio per il comando “sudo”.
Salvate la “/home” locale in una diversa cartella (fatelo da uno dei terminali a carattere a cui accedete con i tasti “ctrl+alt+F1” ad esempio eloggandovi come root ovviamente) :
#mv /home /home_old
e ricreate la home in modo che il sistema possa completare il montaggio correttamente all'avvio:
mkdir /home
Il sistema risulta ora disponibile e funzionante, ultima raccomandazione:
può succedere che al login il sistema non vi si avvii dicendovi che non ha la home disponibile, tranquilli potreste avere installato So.Di.Linux con il nome utente che ha la home in remoto in questo caso il problema sussiste nei diversi id assegnati ossia, stesso nome utente con id diversi.
Controllate che l'id utente sulla macchina client sia uguale all'id utente creato nel server, se fosse diverso nel client, entrando nella gestione utenti della voce amministrazione del menu cambiatene il valore facendo in modo che l'uguaglianza sia soddisfatta.
Controllate che il vostro utente sia presente nel file “/etc/group” nei gruppi audio,cdrom,floppy, dialout,scanner,netdev,powerdev,plugdev,dip e se volete tenere pulito l'ambiente evitando che poi l'utente sia troppo curioso togliete il suo nome dal gruppo “admin”.
Conclusione:
Il sistema client­server è ora disponibile, le periferiche locali sono funzionanti: usb,cdrom; stessa cosa dicasi per scanner e stampante.
Il software disponibile per la didattica è davvero molto, se proprio proprio vogliamo essere pignoli ho notato la mancanza di un ambiente di programmazione sì lo so che pesa in termini di spazio ma non sarebbe davvero male avere la possibilità di avere una ide per scrivere almeno nei due linguaggi didattici attuali quali c++ e java .