+ All Categories
Home > Documents > Appunti di informatica libera Volume VII Matematica e...

Appunti di informatica libera Volume VII Matematica e...

Date post: 09-Oct-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
250
Appunti di informatica libera 2003.01.01 Volume VII Matematica e disegno 3735
Transcript
Page 1: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Appunti di informatica libera 2003.01.01

Volume VII

Matematica e disegno

3735

Page 2: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Appunti Linux

Copyright© 1997-2000 Daniele Giacomini

Appunti di informatica libera

Copyright© 2000-2003 Daniele Giacomini

Via Morganella Est, 21 -- I-31050 Ponzano Veneto (TV) --daniele @ swlibero.org

Le informazioni contenute in questa opera possono essere diffuse e riutilizzate in base alle con-dizioni poste dalla licenza GNU General Public License, come pubblicato dalla Free SoftwareFoundation.

In caso di modifica dell’opera e/o di riutilizzo parziale della stessa, secondo i termini della licen-za, le annotazioni riferite a queste modifiche e i riferimenti all’origine di questa opera, devonorisultare evidenti e apportate secondo modalità appropriate alle caratteristiche dell’opera stes-sa. In nessun caso è consentita la modifica di quanto, in modo evidente, esprime il pensiero,l’opinione o i sentimenti del suo autore.

L’opera è priva di garanzie di qualunque tipo, come spiegato nella stessa licenza GNU GeneralPublic License.

Queste condizioni e questo copyright si applicano all’opera nel suo complesso, salvo ove indicatoespressamente in modo diverso.

The informations contained inside this work can be spread and reused under the terms of theGNU General Public License as published by the Free Software Foundation.

If you modify this work and/or reuse it partially, under the terms of the license, the notices aboutthese changes and the references about the original work, must be evidenced conforming to thework characteristics. IN NO EVENT IS ALLOWED TO MODIFY WHAT ARE CLEARLYTHE THOUGHTS, THE OPINIONS AND/OR THE FEELINGS OF THE AUTHOR.

This work is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; wi-thout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULARPURPOSE. See the GNU General Public License for more details.

These conditions and this copyright apply to the whole work, except where clearly stated in adifferent way.

Una copia della licenza GNU General Public License, versione 2, si trova nell’appendiceA.

A copy of GNU General Public License, version 2, is available in appendixA.

3736

Page 3: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

The main distribution forAppunti di informatica liberais described below. For every distributionchannel the maintainer’s name and address is also reported.

Internet

• direct reading:<http://a2.swlibero.org/>

download:<ftp://a2.swlibero.org/a2/> and<http://a2.swlibero.org/ftp/>

Michele Dalla Silvestra,mds @ swlibero.org

• direct reading:<http://appuntilinux.torino.linux.it/>

download:<ftp://ftp.torino.linux.it/appunti- linux/>

Carlo Perassi,carlo @ linux.it

• direct reading:<http://sansone.crema.unimi.it/linux/a2/HTML/>

download:<http://sansone.crema.unimi.it/linux/a2/>

Fabrizio Zeno Cornelli,zeno @ filibusta.crema.unimi.it

• direct reading:<http://www.pctime.it/servizi/appunti- linux/>

download:<http://www.pctime.it/servizi/appunti- linux/a2- prelievo/>

Franco Lazzero, PCTIME,pctime @ pctime.net

• direct reading:<http://www.a2.prosa.it/>

download:<ftp://ftp.a2.prosa.it/>

Davide Barbieri,paci @ prosa.it

• direct reading:<http://linux.pueste.it/>

download:<http://linux.pueste.it/filearea/AppuntiLinux/>

David Pisa,david @ iglu.cc.uniud.it

• direct reading:<http://www.informasiti.com/Appunti/HTML/>

download:<http://www.informasiti.com/Appunti/>

Claudio Neri, Sincro Consulting,neri.c @ sincroconsulting.com

GNU distributions

• GNU/Linux Debian<http://packages.debian.org/appunti- informatica- libera>

Massimo Dal Zotto,dz @ cs.unitn.it

Italian magazine’s CD-ROM

• inter-punto-net <http://www.interpuntonet.it>

Michele Dalla Silvestra,mds @ swlibero.org

• Internet News<http://inews.tecnet.it>

Francesco Facconi,francescofacconi @ libero.it

Fabio Ferrazzo,fabio.fr @ tiscalinet.it

• Linux Magazine <http://www.edmaster.it/prodotti/linux/ult- riv.html>

Emmanuele Somma,esomma @ ieee.org

La diffusione di questa opera è incoraggiata in base ai termini della licenza.The spread of this work is encouraged under the terms of the license.

3737

Page 4: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Parte lxvii Foglio elettronico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3739

329 Concetti generali sui fogli elettronici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3740

330 Spreadsheet Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3750

Parte lxviii Applicazioni matematiche e grafiche varie. . . . . . . . . . . . . . . . . . . . . . . . . .3767

331 Gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3768

332 Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3777

333 Applicazioni matematiche varie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3783

Indice analitico del volume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3787

3738

Page 5: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Parte lxvii

Foglio elettronico329 Concetti generali sui fogli elettronici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3740

329.1 Coordinate di celle e di zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3740

329.2 Tipi di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3741

329.3 Espressioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3742

329.4 Riferimenti relativi e riferimenti assoluti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3746

329.5 Titoli, protezione delle celle e aree nascoste . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3747

329.6 Grafici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3748

329.7 Riordino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3749

330 Spreadsheet Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3750

330.1 Concetti generali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3750

330.2 Avvio e opzioni di funzionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3753

330.3 Inserimento e modifica dei valori nelle celle . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3754

330.4 Formato delle celle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3756

330.5 Comandi per intervenire sui file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3758

330.6 Comandi per intervenire su zone del foglio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3759

330.7 Comandi vari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3761

330.8 Espressioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3762

330.9 Formato del file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3764

3739

Page 6: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 329

Concetti generali sui fogli elettroniciIl foglio elettronico è un insieme dicelleaccessibili attraverso delle coordinate, organizzate gene-ralmente in forma bidimensionale. Le celle in questione sono delle variabili, rappresentate dallecoordinate relative.

Figura 329.1. Schema tipico di un foglio elettronico bidimensionale.---------------------------------------------------------------------------.

| A | B | C | D | E | F |---|-----------|-----------|-----------|-----------|-----------|-----------|1 | | | | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|2 | | | | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|3 | | | | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|4 | | | | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|5 | | | | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|6 | | | | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|7 | | | | | | |---------------------------------------------------------------------------’

Solitamente, le coordinate sono composte dall’accoppiamento di una lettera a un numero (in-tero), come per esempio A1, B25 e F43, ricordando ciò che si fa normalmente nelle notazionimatematiche: a1, b25, f43. Visivamente, le celle di un foglio vengono disposte su una tabella, dovele colonne sono identificate da una o più lettere e le righe sono identificate da un numero intero.Secondo la tradizione, nelle coordinate delle celle non si distingue tra lettere maiuscole o lettereminuscole.

La dimensione di una tabella di un foglio elettronico varia a seconda delle potenzialità elaborativedisponibili. In linea di principio non ci sono limiti teorici, dal momento che si possono indicarecolonne anche attraverso l’abbinamento di più lettere alfabetiche.1

329.1 Coordinate di celle e di zone

La rappresentazione delle celle in forma tabellare è la caratteristica fondamentale del foglio elet-tronico. Questa disposizione facilita l’identificazione di gruppi di celle, ovvero dizone, dispostesu aree rettangolari, dove una cella singola equivale alla zona più piccola disponibile.

Mentre il riferimento a una cella singola avviene in modo abbastanza uniforme tra i fogli elettro-nici comuni, l’individuazione di una zona avviene attraverso forme di rappresentazione differenti.In generale rimane un elemento comune: si individua una zona indicando due celle opposte. Peresempio, osservando la figura329.2, si vede che è stato circoscritto un gruppo di celle rettan-golari; per individuare tutto il gruppo basterebbe fare riferimento alla zona che va da C3 a E6,oppure da E3 a C6, oppure da C6 a E3, oppure da E6 a C3. In pratica, di solito non ha importanzal’ordine in cui si indicano le due celle opposte.

1Si osservi che la numerazione alfabetica è diversa da quella che avviene solitamente attraverso cifre numeriche. Perla precisione, il problema nasce dal fatto che nella numerazione alfabetica non esiste lo zero. Infatti, se 01 è uguale a 1,in questo contesto «A» non è uguale ad «AA».

3740

Page 7: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Concetti generali sui fogli elettronici 3741

Figura 329.2. Individuazione di una zona.---------------------------------------------------------------------------.

| A | B | C | D | E | F |---|-----------|-----------|-----------|-----------|-----------|-----------|1 | | | | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|2 | | | | | | |---|-----------|-----------#####################################-----------|3 | | # | | # |---|-----------|-----------#-----------|-----------|-----------#-----------|4 | | # | | # |---|-----------|-----------#-----------|-----------|-----------#-----------|5 | | # | | # |---|-----------|-----------#-----------|-----------|-----------#-----------|6 | | # | | # |---|-----------|-----------#####################################-----------|7 | | | | | | |---------------------------------------------------------------------------’

Per abbinare le celle opposte che descrivono una zona, si usano simbologie differenti. La tabella329.1riassume le modalità comuni.

Tabella 329.1. Forme comuni di rappresentazione delle zone.

Descrizione Applicativo Rappresentazionezone normali Gnumeric xm:yn

SC xm:ynStarOffice xm:ynMS-Excel xm:yn1-2-3 xm..yn

intervalli di colonne SC x:yintervalli di righe SC m:n

Alcuni tipi di foglio elettronico consentono di attribuire un nome a delle zone di celle, per potervifare riferimento in modo più intelligibile all’interno delle espressioni.

329.2 Tipi di dati

Lo scopo del foglio elettronico è il calcolo automatico di espressioni contenute nelle celle. Ingenerale, le celle possono essere vuote, possono contenere una costante oppure un’espressioneda calcolare. Volendo fare una classificazione più dettagliata, si può distinguere tra:

• celle vuote, nel senso che non contengono alcunché;

• celle contenenti una costante numerica;

• celle contenenti un’espressione che genera un risultato numerico;

• celle contenenti una costante stringa;

• celle contenenti un’espressione che genera un risultato stringa.

Alcuni fogli elettronici prevedono la rappresentazione di informazioni logiche (booleane). Inquesti casi si utilizzano valori numerici che nel contesto sono interpretati come logici: lo zerovale comeFalso, qualunque altro valore vale comeVero.

Page 8: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3742 Concetti generali sui fogli elettronici

Nell’ambito dei fogli elettronici hanno una rilevanza particolare le indicazioni di date e diorari. Generalmente, questi tipi di valori sono gestiti attraverso l’attribuzione di un significatospeciale ai numeri comuni. Di solito, un numeron intero positivo indica l’n-esimo giorno apartire da un certo riferimento, mentre un numero positivo, minore o uguale a uno, rappresentauna frazione di giorno, ovvero un’ora particolare.

329.3 Espressioni

Tutto ciò che si inserisce all’interno di una cella ha la forma di un espressione; anche la costanteè un’espressione. In particolare, le costanti vanno inserite secondo una forma prestabilita, per di-stinguere tra stringhe e numeri. Generalmente, i numeri si introducono nella forma cui si è abituatidi solito, oppure vengono inseriti in un’espressione esplicita, mentre le stringhe possono richie-dere un prefisso per poterle distinguere, oppure vanno inserite anche queste in un’espressioneesplicita.

Tabella 329.2. Forme comuni di inserimento delle costanti.

Descrizione Applicativo Espressionestringa normale Gnumeric stringa

SC (non disponibile)StarOffice stringaMS-Excel stringa1-2-3 stringa

stringa esplicita Gnumeric (non disponibile)SC "stringaStarOffice ’stringaMS-Excel ’stringa

stringa allineata a sinistra 1-2-3 ’stringastringa allineata a destra 1-2-3 "stringastringa centrata 1-2-3 stringaespressione Gnumeric =espressione

SC =espressioneStarOffice =espressioneMS-Excel =espressione1-2-3 espressione

Il caso di1-2-3 è eccezionale. Come si vede nella tabella329.2, si distinguono tre prefissi dif-ferenti per inserire una stringa, in base al tipo di allineamento desiderato. In generale i foglielettronici non pongono questa limitazione, gestendo l’allineamento in modo indipendente.

Le espressioni vere e proprie si realizzano generalmente attraverso degli operatori e dellefunzioni. La tabella329.3cerca di riassumere gli operatori comuni nei vari tipi di fogli elettronici.

Tabella 329.3. Elenco degli operatori comuni nei fogli elettronici.

Descrizione Applicativo Espressionenessun effetto Gnumeric +n

SC +nStarOffice +nMS-Excel +n1-2-3 +n

inversione di segno Gnumeric - nSC - nStarOffice - nMS-Excel - n

Page 9: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Concetti generali sui fogli elettronici 3743

Descrizione Applicativo Espressione1-2-3 - n

somma Gnumeric m+nMS-Excel m+nSC m+nStarOffice m+n1-2-3 m+n

sottrazione Gnumeric m- nSC m- nStarOffice m- nMS-Excel m- n1-2-3 m- n

moltiplicazione Gnumeric m* nSC m* nStarOffice m* nMS-Excel m* n1-2-3 m* n

divisione Gnumeric m/nSC m/nStarOffice m/nMS-Excel m/n1-2-3 m/n

concatenamento di stringhe Gnumeric m& nSC m#nStarOffice m& nMS-Excel m& n1-2-3 m& n

raggruppamento, precedenza Gnumeric (...)SC (...)StarOffice (...)MS-Excel (...)1-2-3 (...)

Ciò che non si può fare con gli operatori normali, si ottiene generalmente attraverso delle funzio-ni, la cui notazione varia a seconda dell’applicativo. Generalmente, una funzione è costituita daun nome seguito da dei parametri tra parentesi:

nome_funzione( parametro...)

Si pongono due tipi di problemi: la distinzione dei parametri e il modo in cui si riesce a distin-guere che si tratta di una funzione. La separazione dei parametri avviene generalmente attraversol’uso di virgole o di punti e virgola, a seconda dei casi. Per quanto riguarda il riconoscimentodella funzione, potrebbe essere necessario iniziare ogni nome con un simbolo speciale.

Le funzioni dei fogli elettronici sono solitamente già stabilite. Purtroppo, la tradizione ha portatoalla traduzione di questi nomi in base alla localizzazione. Dalla localizzazione può dipendereanche la scelta tra la virgola o il punto e virgola per separare i parametri delle funzioni, dalmomento che si pone la scelta del simbolo usato per rappresentare la separazione tra parte interae parte decimale di un numero. La tabella329.4elenca alcune funzioni tipiche nella tradizionedei fogli elettronici, secondo la localizzazione italiana.2

2Per completezza si indica anche l’espressione condizionale diSC, che usa operatori e non una funzione.

Page 10: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3744 Concetti generali sui fogli elettronici

Tabella 329.4. Elenco di funzioni comuni nei fogli elettronici.

Descrizione Applicativo Espressionesommatoria Gnumeric sum(zona)

SC @sum(zona)StarOffice somma(zona)MS-Excel somma(zona)1-2-3 @somma(zona)

radice quadrata Gnumeric sqrt(n)SC @sqrt(n)StarOffice radq(n)MS-Excel radq(n)1-2-3 @radq(n)

arrotondamento Gnumeric round(n;decimali)SC @round(n,decimali)StarOffice arrotonda(n;decimali)MS-Excel arrotonda(n;decimali)1-2-3 @arrot(n;decimali)

selezione condizionale Gnumeric if(condizione;risultato_vero;risultato_falso)SC condizione?risultato_vero:risultato_falsoStarOffice se(condizione;risultato_vero;risultato_falso)MS-Excel se(condizione;risultato_vero;risultato_falso)1-2-3 @se(condizione;risultato_vero;risultato_falso)

Il caso della sommatoria è speciale, in quanto si usa generalmente passando come parametro unazona intera. In tale situazione, se non fosse disponibile una funzione del genere, capace di accet-tare una zona intera come argomento, sarebbe necessario scrivere un’espressione, eventualmentemolto lunga, utilizzando sempre l’operatore‘+’ .

I parametri delle funzioni possono essere costituiti da costanti o da espressioni di vario genere,anche se questo poi si paga con una difficile leggibilità. In questo contesto, le costanti stringasono rappresentate generalmente delimitandole tra apici doppi.

Anche se nelle celle di un foglio non dovesse essere stato previsto il tipo di dati logico, ci sonofunzioni che prevedono tra i parametri dei valori logici. In questi casi, può trattarsi solo di espres-sioni che restituiscono un valoreVeroo Falso. Queste espressioni si realizzano attraverso opera-tori di comparazione, assieme a operatori o funzioni logiche, che generalmente corrispondono aquanto elencato nella tabella329.5.

Tabella 329.5. Elenco degli operatori di confronto, degli operatori logici e dellefunzioni logiche, comuni nei fogli elettronici.

Descrizione Applicativo Espressioneuguale Gnumeric x=y

SC x=yStarOffice x=yMS-Excel x=y1-2-3 x=y

diverso Gnumeric x<>ySC x!=yStarOffice x<>yMS-Excel x<>y1-2-3 x<>y

minore Gnumeric x<ySC x<yStarOffice x<yMS-Excel x<y1-2-3 x<y

Page 11: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Concetti generali sui fogli elettronici 3745

Descrizione Applicativo Espressionemaggiore Gnumeric x>y

SC x>yStarOffice x>yMS-Excel x>y1-2-3 x>y

minore o uguale Gnumeric x<=ySC x<=yStarOffice x<=yMS-Excel x<=y1-2-3 x<=y

maggiore o uguale Gnumeric x>=ySC x>=yStarOffice x>=yMS-Excel x>=y1-2-3 x>=y

AND Gnumeric and(x;y[;z...])

SC x& y

StarOffice e(x;y[;z...])

MS-Excel e(x;y[;z...])

1-2-3 x#AND#y

OR Gnumeric or(x;y[;z...])

SC x|y

StarOffice o(x;y[;z...])

MS-Excel o(x;y[;z...])

1-2-3 x#OR#yNOT Gnumeric not(x)

SC ~xStarOffice non(x)MS-Excel non(x)1-2-3 #NOT#x

329.3.1 Date e orari

Esistono diversi modi per rappresentare il tempo nei fogli elettronici. In generale esistono due fi-loni fondamentali; nelle situazioni più comuni si utilizza un numero la cui parte intera rappresentala quantità di giorni trascorsi a partire da un tempo di riferimento, mentre le frazioni dell’unitàrappresentano le stesse frazioni di 24 ore; in altri casi, si usa un numero intero che esprime laquantità di secondi trascorsi da un tempo di riferimento. In generale, non ha importanza saperequale sia il tempo di riferimento, tranne per il fatto che non si possono gestire date precedenti aquello. Al contrario, il modo in cui si annota effettivamente il tempo ha poi delle implicazionioperative significative, che verranno descritte.

Per gestire questi numeri, si utilizzano solitamente delle funzioni apposite, che generano il nu-mero corretto per la rappresentazione del tempo desiderato. La tabella329.6riassume le funzionipiù comuni a questo proposito.

Page 12: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3746 Concetti generali sui fogli elettronici

Tabella 329.6. Elenco delle funzioni comuni per l’inserimento di valori legati al tempo.

Descrizione Applicativo Espressionedata Gnumeric date(anno;mese;giorno)

SC @dts(mese,giorno,anno)StarOffice data(anno;mese;giorno)MS-Excel data(anno;mese;giorno)1-2-3 @data(anno;mese;giorno)

orario Gnumeric time(ore;minuti ;secondi)SC @tts(ore,minuti ,secondi)StarOffice orario(ore;minuti ;secondi)MS-Excel orario(ore;minuti ;secondi)1-2-3 @orario(ore;minuti ;secondi)

Quando il tempo è rappresentato da un numero che rappresenta una quantità di giorni e frazionidi giorno, è facile fare delle operazioni; per esempio è facile calcolare quanti giorni sono conte-nuti in un intervallo di date, perché basta fare una sottrazione e il valore intero che si ottiene èproprio ciò che si cerca. Lo stesso tipo di operazione diventa più complicato quando il tempo èrappresentato in una quantità di secondi.

Generalmente, oltre alle funzioni che generano il valore corrispondente al tempo, ce ne sono altreper estrapolare alcune componenti: il giorno, il mese, l’anno, l’ora, i minuti e i secondi.

329.3.2 Rappresentazione dei dati

Esiste una distinzione importante tra la sostanza dei dati, il modo di memorizzarli e il modo dirappresentarli. Generalmente, il tipo di memorizzazione dei dati è anche il limite alla realtà chepuò essere rappresentata. A titolo di esempio, si può prendere in considerazione il problema giàdescritto della forma in cui vengono annotate le informazioni legate al tempo: il tempo, a livelloumano, ha un significato che si traduce in qualche modo in un numero; poi, questo numero devepoter essere rappresentato in un qualche modo comprensibile a livello umano.

All’inizio del capitolo è stato chiarito che normalmente i dati inseriti nelle celle sono numeri,stringhe o espressioni che si risolvono in questi due tipi di dati. Un numero può avere un signi-ficato diverso a seconda del contesto. I fogli elettronici più recenti sono in grado di interpretarequesto contesto, cercando di rappresentare i valori nel modo ritenuto più appropriato; quandoquesto non basta, occorre intervenire chiarendo il significato che l’informazione deve avere.

Volendo fare un esempio più semplice di quanto riferito alla gestione del tempo, basta pensareai valori percentuali: il numero 0,1 può trovarsi in un contesto per cui sia giusto rappresentarloproprio così, oppure potrebbe rappresentare un valore percentuale, ovvero il 10 %.

329.4 Riferimenti relativi e riferimenti assoluti

Una delle caratteristiche fondamentali di un foglio elettronico è la possibilità di copiare o spo-stare intere zone in punti diversi da quelli originali, inoltre deve essere possibile l’inserimento el’eliminazione di righe e colonne.

In questa prospettiva, quando si scrivono delle espressioni che fanno riferimento a delle celle, o adelle zone, questi riferimenti sono generalmente relativi. Si osservi la figura329.3, in cui si vedela zona A1:B3 che si desidera copiare in D2:E4.

Page 13: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Concetti generali sui fogli elettronici 3747

Figura 329.3. Si vuole copiare la zona A1:B3 in D2:E4.---------------------------------------------------------------------------.

| A | B | C | D | E | F |---|-----------|-----------|-----------|-----------|-----------|-----------|1 | Primo | 23456 | | | | |---|-----------|-----------|-----------#########################-----------|2 | Secondo | 87654 | # | # |---|-----------|-----------|-----------#-----------|-----------#-----------|3 | Totale | 111110 | # | # |---|-----------|-----------|-----------#-----------|-----------#-----------|4 | | | # | # |---|-----------|-----------|-----------#########################-----------|5 | | | | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|6 | | | | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|7 | | | | | | |---------------------------------------------------------------------------’

Si intuisce che la cella B3 debba contenere un’espressione per il calcolo del totale, per esempioSOMMA(B1:B2); evidentemente ci si aspetta che la copia della zona A1:B3 in D2:E4 avvenga inmodo «logico», ovvero che l’espressione in E4 sia modificata correttamente in SOMMA(E2:E3).

In modo analogo, ci si aspetta un comportamento «logico» se si desidera inserire un riga nuovatra la prima e la seconda. In tal modo, la terza riga diventerebbe la quarta, per cui l’espressioneche prima si trovava in B3 andrebbe a finire in B4. A questo punto, sarebbe auspicabile chel’espressione fosse aggiornata in modo coerente, diventando SOMMA(B1:B3).

Quando si scrive una coordinata e si vuole evitare che questa venga modificata da tali compor-tamenti, apparentemente logici, si deve aggiungere l’indicazione di quale parte della coordinatanon può essere modificata. Generalmente si aggiunge il simbolo‘$’ davanti alla lettera dellacolonna, davanti al numero della riga, o davanti a entrambi. Per esempio, $A3 è un riferimen-to alla cella A3, in cui l’indicazione della colonna non può essere alterata per nessun motivo;nello stesso modo, A$3 è un riferimento alla cella A3, in cui la riga non può essere modificata.Ovviamente, per impedire qualunque modifica si indica semplicemente $A$3.

329.5 Titoli, protezione delle celle e aree nascoste

Il foglio elettronico si presta particolarmente per la realizzazione di modelli già pronti, in cui puòbastare l’inserimento di alcuni dati in celle prestabilite, per ottenere il completamento necessarioin modo automatico. A titolo di esempio si può pensare al modello di una fattura, in cui bastainserire la descrizione dell’articolo, la quantità e il prezzo unitario per aggiornare tutte le altreinformazioni. In questa situazione, può essere utile fare in modo di proteggere tutto il foglioliberando solo alcune celle. In pratica, si consente l’inserimento di dati solo nelle celle previste,impedendo errori che potrebbero costare l’alterazione di espressioni eventualmente complesse.

Generalmente si usa un approccio di questo tipo: le celle si possono considerare protette o nonprotette, ma si possono alterare comunque finché non viene attivata la protezione del foglio.In pratica, solo quando si richiede la protezione del foglio, nel suo complesso, viene preso inconsiderazione lo stato individuale di protezione delle celle. In base a questa logica, tutte le celledi un foglio nuovo sono protette in modo predefinito, fino a quando l’utilizzatore non toglie,singolarmente o a zone, la loro protezione; solo dopo questo lavoro di selezione si può abilitarele protezione globale del foglio, attraverso cui le celle protette non possono essere più modificate.

Alcuni applicativi del genere attivano e disattivano la protezione globale semplicemente a ri-chiesta, mentre altri richiedono l’inserimento di unaparola d’ordine, che rende la protezione piùefficace.

Page 14: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3748 Concetti generali sui fogli elettronici

Nel momento in cui si usa il foglio elettronico per realizzare modelli complessi, diventa interes-sante la possibilità di nascondere delle righe o delle colonne. Questo consente di inserire al lorointerno espressioni per calcoli intermedi di qualche risultato che non conviene mostrare all’utentea cui verrà fatto utilizzare poi tale lavoro. Questa funzionalità, quando disponibile, si abbina con-venientemente alla protezione del foglio, che può impedire eventualmente l’estrazione di questeinformazioni nascoste.3

A completamento di queste funzionalità di protezione, si può aggiungere la possibilità di bloccarelo scorrimento di alcune righe e colonne iniziali. Si fa riferimento a questo concetto parlando di«titoli» o di «riquadri». Lo scopo di tale meccanismo è il mantenere in vista alcune righe e alcunecolonne che permettono di interpretare i dati delle celle, quando si realizzano tabelle di dati moltograndi che superano l’estensione visuale dello schermo.

329.6 Grafici

Attraverso i dati contenuti nelle celle di un foglio elettronico è possibile ottenere generalmenteun grafico, scelto in base al tipo di informazioni che si intendono rappresentare. Il comporta-mento dei programmi di questo tipo può variare di molto nel modo di richiedere le informazioninecessarie alla realizzazione di tali grafici. In generale, per quanto riguarda i grafici che si di-spongono su assi cartesiani, vengono distinti due gruppi di informazioni fondamentali: una seriedi stringhe descrittive che vanno disposte sull’asse X e più insiemi di valori da disporre sull’asseY in corrispondenza dei riferimenti sull’asse X.

Per fare un esempio, osservando la figura329.4, si vedono tre gruppi di valori abbinati alle de-scrizioni «Primo», «Secondo» e «Terzo». Si intende che le stringhe contenute nella zona A1:A3vanno collocate nell’asse X, mentre le zone B1:B3, C1:C3 e D1:D3 sono i valori relativi darappresentare.

Figura 329.4. Si vuole realizzare il grafico dei dati contenuti nella zona A1:D3.---------------------------------------------------------------------------.

| A | B | C | D | E | F |---|-----------|-----------|-----------|-----------|-----------|-----------|1 | Primo | 10 | 15 | 20 | | |---|-----------|-----------|-----------|-----------|-----------|-----------|2 | Secondo | 20 | 17 | 15 | | |---|-----------|-----------|-----------|-----------|-----------|-----------|3 | Terzo | 30 | 19 | 5 | | |---|-----------|-----------|-----------|-----------|-----------|-----------|4 | | | | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|5 | | | | | | |---------------------------------------------------------------------------’

In questo caso, i valori da rappresentare, ovvero leserie di valori, sono organizzati in modoverticale. Quando il programma che si utilizza guida alla realizzazione del grafico, potrebbeproporre delle soluzioni errate; in questo caso potrebbe proporre la lettura delle serie di valori inmodo orizzontale. È evidente, quindi, che quando si realizza un grafico occorre poi controllareche ciò che si ottiene corrisponda effettivamente a ciò che si vuole rappresentare. Ci si puòallenare su questo problema provando a ottenere lo stesso grafico orientando diversamente latabella dei dati, come si vede nella figura329.5.

3Non si deve considerare questa come una misura di sicurezza molto potente. Si tratta piuttosto di una possibilità piùutile allo scopo di evitare errori all’utente inesperto a cui si fa compilare un modello del genere già pronto.

Page 15: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Concetti generali sui fogli elettronici 3749

Figura 329.5. Si vuole realizzare il grafico dei dati contenuti nella zona A1:C4.---------------------------------------------------------------------------.

| A | B | C | D | E | F |---|-----------|-----------|-----------|-----------|-----------|-----------|1 | Primo | Secondo | Terzo | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|2 | 10 | 20 | 30 | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|3 | 15 | 17 | 19 | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|4 | 20 | 15 | 5 | | | |---|-----------|-----------|-----------|-----------|-----------|-----------|5 | | | | | | |---------------------------------------------------------------------------’

329.7 Riordino

Il foglio elettronico non è un sistema adatto per l’elaborazione di dati al livello di unabase didati. Tuttavia, può essere utile inserire elenchi brevi che poi conviene riordinare in base a qualchecriterio.

Generalmente tali dati vengono inseriti suddivisi in righe. Successivamente il riordino può av-venire in base alla selezione della zona rettangolare in cui si trova l’elenco, specificando qualicolonne usare come criterio di ordinamento. Il riordino fatto in questo modo riguarda solo la zonaselezionata, senza interferire con il resto del foglio, sia in orizzontale che in verticale.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 16: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 330

Spreadsheet CalculatorSC, 1 ovveroSpreadsheet Calculator, è un applicativo per l’elaborazione di fogli elettronici divecchia concezione che è tuttora valido. La sua origine è molto lontana, a partire da un lavoroapparso suUsenet, modificato successivamente da più autori. Oggi esistono diverse varianti diquesto applicativo, ognuna con un nome particolare; è disponibile anche una versione per Dos.

A prima vista, l’uso di questo foglio elettronico è piuttosto complicato. In effetti, si tratta di unodi quei programmi che richiede studio e anche un po’ di memoria per i comandi che non sono cosìintuitivi. Nonostante tutti questi problemi, rimane un applicativo fondamentale nell’informaticadel software libero.

330.1 Concetti generali

In condizioni normali, una volta avviatoSC, si vede una schermata simile a quanto riportato infigura330.1.

Figura 330.1. Aspetto iniziale del foglio elettronico su uno schermo di 80 colonne per24 righe.

A0 (10 2 0) []

A B C D E F G0 <123456789101112131415161718192021

Sullo schermo si distinguono quattro parti. La prima riga in alto, serve per visualizzare il conte-nuto delle celle e per l’inserimento dei comandi da parte dell’utilizzatore. La seconda riga vieneusata dal programma per mostrare dei messaggi, che si solito servono per conoscere l’esito di uncomando appena impartito. La terza riga e le prime quattro colonne mostrano le coordinate dellecelle, dove le righe sono identificate attraverso un numero e le colonne attraverso una lettera.Infine, la parte restante dello schermo è riservata alle celle del foglio elettronico.

Le coordinate delle celle sono indicate usando prima la lettera e poi il numero, per esempioA0. È possibile usare lettere maiuscole o minuscole indifferentemente.

1SC dominio pubblico

3750

Page 17: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Spreadsheet Calculator 3751

Sono disponibili due cursori: uno per navigare tra le celle; l’altro per scrivere i comandi. Osser-vando la figura330.1si può notare che il cursore del foglio si trova sulla cella A0, alla cui destraappare il simbolo‘<’ . In condizioni normali, la cella è anche evidenziata con un colore adatto.

È interessante interpretare ciò che appare nella prima parte della prima riga dello schermo. Nelcaso della figura, si vede:

A0 (10 2 0) []

Significa che il cursore si trova sulla cella A0, che il formato della cella è espresso in qualchemodo dalle cifre «10 2 0» e che si il suo contenuto è nullo (è vuota). Il formato si interpreta nelmodo schematizzato nella figura330.2.

Figura 330.2. Interpretazione delle cifre che descrivono il formato numerico di unacella.

A0 (10 2 0) []| | || | || | tipo di formato:| | 0 = quantità fissa di cifre decimali| | 1 = notazione scientifica| | 2 = notazione ingegnieristica| | 3 = data (senza orario)| || numero di cifre decimali|

larghezza della colonna in caratteri

Il formato numerico espresso in questo modo, può essere definito solo su una colonna interae non si può circoscrivere a un gruppo più limitato di celle. In un gruppo di celle è possibi-le intervenire successivamente per modificare la rappresentazione dei valori numerici, senzaalterare la larghezza della colonna.

Prima di descrivere i comandi diSC è bene sapere subito che un comando non completato puòessere annullato premendo il tasto[ Esc], anche più volte se necessario.

330.1.1 Zona

In tutti gli applicativi per l’elaborazione di fogli elettronici, la zona è un rettangolo di celle che vada un minimo di una sola cella fino al massimo della dimensione del foglio. Per delineare questorettangolo si indicano le coordinate di due celle che si trovano negli angoli opposti di questorettangolo. ConSC si usano i due punti (verticali) per unire queste due coordinate.

Per esempio, A0:A0 è la zona che si riduce alla sola cella A0; A0:B1 è una zona di quattro celletotali, composta in pratica da A0, B0, A1 e B1. Di solito, salvo situazioni particolari, l’inversionenell’ordine delle coordinate e l’utilizzo degli altri due estremi non cambia il significato, per cuiA0:B1 è uguale a B1:A0, così come è uguale a A1:B0 e a B0:A1.

In certe situazioni, quando si vuole sottolineare il fatto che si sta facendo riferimento a un in-tervallo di colonne, si usa una forma simile, in cui non appaiono le coordinate numeriche dellerighe. per esempio, A:C rappresenta le colonne A, B e C. Nello stesso modo è possibile indicareun intervallo di righe; per esempio, 1:3 indica le righe 1, 2 e 3.

Page 18: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3752 Spreadsheet Calculator

330.1.2 Navigazione nel foglio

La navigazione all’interno del foglio potrebbe non essere così intuitiva come ci si aspetterebbe.Teoricamente, si possono usare i tasti freccia; in pratica, questo potrebbe non essere vero. Quandoci sono difficoltà bisogna affidarsi alla tradizione, ovvero al metodo diVI, con l’aggiunta diqualche altra possibilità. La tabella330.1riepiloga i comandi per lo spostamento del cursore nelfoglio.

Bisogna considerare che per ottenere l’inserimento di un’informazione in una cella, occorreusare prima il comando apposito che permette di entrare nella fase di inserimento. Pertanto, lapressione «casuale» di un tasto si traduce quasi sempre in un comando.

Tabella 330.1. Comandi principali per la navigazione tra le celle del foglio.

Comando Alternativa Spostamentoh Ctrl+b A sinistra di una cella.j Ctrl+n In basso di una cella.k Ctrl+p In alto di una cella.l Ctrl+f A destra di una cella.

Esistono anche una serie di comandi utili per raggiungere posizioni particolari in modo rapido.In particolare, può essere utile raggiungere solo celle che contengono già qualcosa (nella docu-mentazione originale si parla di «celle valide»). La tabella330.2riepiloga altri comandi per lospostamento nel foglio.

Tabella 330.2. Comandi speciali per la navigazione nel foglio.

Comando Spostamento^ Sulla prima riga della colonna attuale.# Sull’ultima riga che contiene qualcosa, della colonna attuale.0 Sulla prima colonna della riga attuale.$ Sull’ultima colonna che contiene qualcosa, della riga attuale.b Sulla cella precedente che contiene qualcosa.w Sulla cella successiva che contiene qualcosa.gcoordinata Sulla cella indicata dalla coordinata.

330.1.3 Inserimento e modifica di dati nella riga di comando

L’aspetto più complicato per un principiante alle prese con questo applicativo è probabilmentela modifica del testo nella riga di comando. Ci sono varie situazioni in cui occorre inserire un’in-formazione; di solito si tratta di introdurre il valore di una cella, oppure si deve completare uncomando specificando una zona, o altro. In queste situazioni, si accede alla parte superiore delloschermo, in quella che qui viene chiamata la riga di comando.

Quando il contesto porta a inserire qualcosa, tutto avviene come ci si potrebbe aspettare, inseren-do normalmente il testo, dove il tasto[ backspace] funziona regolarmente per cancellare. Tuttavia,la cosa non è così semplice come appare, perché si tratta di una riga che riconosce i comandi diVI: è sufficiente premere[ Esc] per passare alla modalità di comando. La tabella330.3riepilogale funzionalità più importanti della modalità di comando, quando si sta lavorando sulla primariga dello schermo.

Page 19: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Spreadsheet Calculator 3753

Tabella 330.3. Comandi disponibili quando si modifica qualcosa sulla prima riga delloschermo.

Comando Descrizionei Termina la modalità di comando e inizia l’inserimento.a Termina la modalità di comando e inizia l’inserimento dopo il cursore.h Va a sinistra di un carattere.l Va a destra di un carattere.x Cancella il carattere corrispondente al cursore.[ Invio ] Conferma e conclude.

330.2 Avvio e opzioni di funzionamento

L’avvio di questo programma è molto semplice. Sono disponibili alcune opzioni che hanno deicomandi corrispondenti in fase di funzionamento del programma.

sc [ opzioni] [ file]

La tabella330.4riepiloga le opzioni più importanti. Successivamente vengono mostrate altretabelle contenenti la descrizione di comandi interattivi.

Tabella 330.4. Opzioni principali da dare all’avvio dell’eseguibile.

Opzione Descrizione- r Ricalcola per righe (predefinito).- c Ricalcola per colonna.- m Disabilita il ricalcolo automatico.- n Inserimento numerico rapido.

Durante il funzionamento sono disponibili due gruppi di comandi per modificare l’impostazionedel programma. Si tratta di comandi che scambiano alcune modalità, attivandole o disattivandole,in funzione dello stato precedente, oppure di comandi che impostano in modo preciso. I comandiche scambiano le modalità iniziano con la combinazione[ Ctrl+t ] e seguono con un’altra lettera; icomandi di impostazione iniziano con la lettera‘S’ (maiuscola), che richiede poi l’inserimento diun comando scritto per esteso. Per esempio, la sequenza[ Ctrl+t ][ a ] attiva o disattiva la modalitàdi ricalcolo automatico; nello stesso modo, il comando[ S] seguito da‘ iterations=7 ’ stabilisceche le iterazioni da eseguire per ricalcolare i valori delle espressioni devono essere sette. Latabella330.5riepiloga i comandi più importanti da impartire in questo modo.

Tabella 330.5. Alcuni comandi che modificano la modalità di funzionamento, distin-guendo tra quelli di scambio, che iniziano con [ Ctrl+t ] e quelli di impostazione, cheiniziano con [ S ].

Comando DescrizioneCtrl+t a Attiva o disattiva il ricalcolo automatico delle celle.Ctrl+t c Attiva o disattiva l’evidenziamento della cella corrente.Ctrl+t n Attiva o disattiva la modalità di inserimento numerico rapido.Ctrl+t t Attiva o disattiva la visualizzazione di informazioni sulla prima riga.S byrows Definisce un ricalcolo delle celle per righe.S bycols Definisce un ricalcolo delle celle per colonne.S iterations=n Definisce il numero massimo di cicli per il ricalcolo delle celle.S tblstyle=0 Esporta la tabella con i campi separati da due punti.S tblstyle=tbl Esporta la tabella in formatoTbl (*roff).S tblstyle=latex Esporta la tabella in formatoLaTeX.S tblstyle=tex Esporta la tabella in formatoTeX.S tblstyle=frame Esporta la tabella in formatoFrameMaker.

Page 20: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3754 Spreadsheet Calculator

È opportuno sottolineare che le impostazioni di esportazioni si riferiscono al comando‘T’ , con ilquale si esporta il contenuto della tabella in un altro formato.

330.3 Inserimento e modifica dei valori nelle celle

Questo tipo di elaboratore di fogli elettronici, distingue tra diversi contesti di funzionamento. Ini-zialmente ci si trova in una modalità di comando, dove molti dei tasti (lettere o numeri) possonorappresentare l’inizio di un comando. In base a questa logica, l’inserimento dei dati nelle celle de-ve essere preceduto da un comando apposito:‘ " ’ inizia l’inserimento di una cella che rappresentaun valore stringa;‘=’ inizia l’inserimento di una cella che rappresenta un valore numerico.

Tale premessa permette di comprendere che questo tipo di foglio elettronico è in grado di gestiresoltanto due tipi di dati: stringhe e numeri (reali). Questi valori possono essere inseriti in formacostante, oppure si possono indicare delle espressioni che generano un risultato del tipo previsto.

L’uso del comando‘=’ o ‘ " ’ porta il programma in un contesto di funzionamento particolare, incui si digita l’espressione (costante o meno) sulla prima riga dello schermo, che mostra l’invito‘ i> ’ (insert).

i>

Tale digitazione è sottoposta al controllo che è già stato descritto in precedenza: è come se fossestato iniziato un comando di inserimento con il programmaVI, dal quale, se si preme il tasto[ Esc] si passa alla modalità di comando relativa, che viene fatta notare attraverso l’invito ‘e>’(edit).

e>

Questo è riassunto nella tabella330.3che è già stata mostrata in precedenza. L’informazione vie-ne memorizzata nella cella solo se si conclude l’inserimento con la pressione di[ Invio ]; pertanto,se si passa alla modalità di comando (attraverso il tasto[ Esc]) e poi si preme nuovamente[ Esc],si annulla l’inserimento.

L’inserimento di qualcosa in una cella, viene filtrato attraverso un comando di un linguaggiointerno al foglio elettronico. Se si assegna una stringa, il comando è

label cella = stringa_delimitata| espressione_stringa

mentre se si assegna un valore numerico, il comando è

let cella = costante_numerica| espressione_numerica

Quando si inserisce un valore, bisogna fare attenzione a non modificare la parte iniziale delcomando, a meno che si tratti di un’azione voluta.

Per modificare il contenuto di una cella, in generale è possibile cancellarlo prima, per poi inserirequello nuovo, dove la cancellazione si ottiene con il comando‘x ’ . La modifica del contenutorichiede invece di passare a un contesto di funzionamento analogo a quello di inserimento, incui però ci si trova inizialmente in modalità di modifica. In pratica, ci si trova subito di fronteall’ invito ‘e>’ e ci si deve comportare di conseguenza.

Per passare alla modifica del contenuto di una cella, si usano due comandi differenti, a secondache si intenda modificare un valore stringa,‘E’ , o un valore numerico,‘e’ . Questo serve a cam-biare il comando interno del foglio elettronico, che nel primo caso è‘ label ’ , mentre nel secondoè ‘ let ’ . Tutto questo ha un significato che diventerà più chiaro in seguito, quando verrà descrittoil formato in cui vengono salvati i dati.

Page 21: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Spreadsheet Calculator 3755

Per il momento, è importante comprendere che una cella può contenere simultaneamente duevalori: uno numerico e uno stringa. In generale, una cosa del genere non dovrebbe essereammissibile, ma la logica diSC porta a tale situazione.

Tabella 330.6. Comandi di inserimento e modifica dei valori delle celle. I comandiparticolari che sono disponibili durante il contesto di modifica, sono già stati descrittiin un’altra tabella.

Comando Descrizione= Inizia l’inserimento di un valore numerico." Inizia l’inserimento di un valore stringa (centrato).< Inizia l’inserimento di un valore stringa a sinistra.> Inizia l’inserimento di un valore stringa a destra.e Inizia la modifica di un valore numerico.E Inizia la modifica di un valore stringa.

330.3.1 Particolarità dell’inserimento di valori ed espressioni stringa

L’inserimento di una stringa, inizia con il comando‘ " ’ , che porta ad attivare la riga di comandosulla prima riga dello schermo. Supponendo di intervenire sulla cella A7, si ottiene questo:

i> label A7 = "_

Il cursore per la digitazione della stringa si trova subito dopo gli apici doppi che si vedono nell’e-sempio. Quello che si sta inserendo è un’istruzione del foglio elettronico, con la quale si assegnala stringa (label) alla cella A7. Si intuisce che gli apici doppi iniziali servono a delimitare unastringa costante. Supponendo di voler inserire la parola «ciao», si può procedere come di seguito:

i> label A7 = "ciao_

Alla fine, si può concludere la stringa con un altro apice doppio, oppure si può anche farne ameno. In ogni caso, al termine si conclude con un[ Invio ].

La stringa può essere collocata al centro della cella, a sinistra o a destra. Il comando‘ " ’ inizial’inserimento di una stringa centrata; per l’allineamento a sinistra si usa il comando‘<’ ; per l’al-lineamento a destra si usa il comando‘>’ . A questi comandi corrispondono altrettante istruzioniinterne del foglio elettronico, che vengono generate automaticamente:

• label cella = espressione

stringa centrata;

• leftstring cella = espressione

stringa allineata a sinistra;

• rightstring cella = espressione

stringa allineata a destra.

Fino a questo punto è stato mostrato l’inserimento di stringhe costanti. Per quanto riguarda leespressioni che generano un risultato stringa, bisogna considerare che l’apice doppio iniziale,inserito automaticamente, deve essere eliminato. Per esempio, se la cella A0 contiene una stringa,volendo fare riferimento al suo contenuto nella cella B3, si deve usare il riferimento alla cella A0,senza delimitazioni. In pratica, all’inizio si ha questa situazione:

i> label B3 = "

Page 22: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3756 Spreadsheet Calculator

Quindi, si cancella l’apice doppio e si inserisce l’espressione desiderata:

i> label B3 = A0 [ Invio ]

Probabilmente, in una stringa costante è impossibile indicare un apice doppio; inoltre, si puòusare una barra obliqua iniziale per ottenere la ripetizione della parte successiva, per tutta lalarghezza della colonna. In pratica,

i> label A10 = "\-= [ Invio ]

si traduce in pratica nella cella nel modo seguente:

-=-=-=-=-=

330.3.2 Particolarità dell’inserimento di valori ed espressioninumerici

L’inserimento di valori numerici non presenta situazioni particolari. Infatti, un valore numericocostante non richiede alcuna delimitazione, così come le espressioni che generano un risultatonumerico. A questo proposito, si può valutare la possibilità di abilitare l’inserimento numericorapido, con il comando[ Ctrl+t ][ n ], oppure attraverso l’opzione‘ -n ’ .

In generale, per coerenza, non è il caso di intervenire in questo modo; tuttavia, di fronte al-la necessità di inserire un gran numero di costanti numeriche, può essere conveniente questoapproccio.

330.4 Formato delle celle

La gestione del formato delle celle è piuttosto strana, per cui è necessario trattare l’argomento inmodo particolare.

Per prima cosa occorre considerare la larghezza della colonna che viene determinata attraversoil comando‘ f ’ . Questo attende l’inserimento di tre valori numerici: la larghezza in caratteri, laquantità di cifre decimali e il tipo. Questa cosa è già stata anticipata nella figura330.2, in cui èdescritto dettagliatamente il significato dell’ultimo valore.

Per fare un esempio molto semplice, il formato‘10 2 0 ’ , che è quello predefinito, rappresentauna colonna di 10 caratteri di larghezza, in cui i valori vengono rappresentati con due decimali,attraverso una notazione normale a virgola fissa. In pratica, in queste condizioni, si possonorappresentare numeri da‘ -999999.99 ’ a ‘9999999.99 ’ .

Anche la notazione scientifica e quella ingegnieristica, definite rispettivamente dal tipo uno edue, utilizzano l’informazione sulla quantità di decimali. Al contrario, il formato delle date (ilnumero tre), non dipende dalla quantità dei decimali.

In pratica, il comando‘ f ’ definisce il formato numerico generale di una colonna, cosa chesi traduce anche nella definizione della larghezza della colonna stessa. Evidentemente, perquanto riguarda le stringhe, queste risentono solo della larghezza della cella e non delle altreinformazioni.

Nell’ambito di una sola cella, è possibile cambiare il formato generale della colonna attraverso ilcomando‘F’ , mentre per un gruppo di celle si usa il comando analogo‘ /F ’ . Questo richiede l’in-serimento di una stringa speciale, composta da caratteri che servono a rappresentare un formatonumerico. Il significato di questi simboli appare descritto nella tabella330.7.

Page 23: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Spreadsheet Calculator 3757

Tabella 330.7. Comandi per il controllo del formato delle colonne e dellavisualizzazione dei valori numerici.

Comando Descrizionef larghezza decimali tipo Formato generale della colonna.tipo:0 Virgola fissa.1 Notazione scientifica.2 Notazione ingegnieristica.3 Data.

F stringa_formato Formato particolare della cella.# Cifra numerica eventuale.0 Cifra numerica fissa.. Separatore decimale., Separatore delle migliaia.% Inserisce il simbolo e mostra in forma di percentuale.\x Trattax in modo letterale.

E+|e+ Notazione scientifica.

E-|e- Notazione scientifica mostrando il segno solo quando negativo.; Divide due formati per i valori positivi e i valori negativi.

/F zona stringa_formato Formato particolare di una zona di celle.

Si possono osservare i comandi interni del foglio elettronico nel momento in cui si definisce ilformato della colonna, oppure il formato specifico di un gruppo di celle. Nel primo caso si trattadell’istruzione‘ format ’ :

format colonna larghezza decimali tipo

Nel secondo caso, l’istruzione si abbrevia:

fmt zona stringa_di_formato_delimitata

Nel seguito vengono mostrati alcuni esempi, cercando di riprodurre nel modo migliore possibilela situazione che si vede sullo schermo. Si deve tenere presente che l’istruzione interna del foglioelettronico viene generata automaticamente; quello che serve, semmai, è di fare attenzione a noncancellarla.

L’informazione che appare tra parentesi quadre nell’istruzione del foglio elettronico (‘ [for

column] ’ e ‘ [format] ’), non fa parte dell’istruzione stessa. Viene collocata per facilitareall’utilizzatore la comprensione dell’azione che si sta compiendo.

I comandi‘F’ e ‘ /F ’ sono identici dal punto di vista del foglio elettronico, perché generano lastessa istruzione interna. Nel primo caso, la zona viene indicata automaticamente, riferendolaalla cella corrente.

Esempi

[ f ]

i> format [for column] A 15 3 0 [ Invio ]

Modifica il formato della colonna A, in modo da avere 15 caratteri di larghezza, riservandotre cifre per i decimali, mostrando valori a virgola fissa.

[ f ]

i> format [for column] A 15 3 1 [ Invio ]

Page 24: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3758 Spreadsheet Calculator

Come nell’esempio precedente, utilizzando però una notazione scientifica.

[ F ]

i> fmt [format] A1 "########.000 [ Invio ]

Modifica il formato particolare della cella A1, in modo da rappresentare valori che vannoda un minimo di- 9999999,999 a un massimo di 99999999,999.

[ F ]

i> fmt [format] A2 "###% [ Invio ]

Modifica il formato particolare della cella A1, in modo da rappresentare valori percentualiinteri.

[ F ]

i> fmt [format] A3 "########.000;\(########.000\) [ Invio ]

Modifica il formato particolare della cella A3, in modo da rappresentare valori che vannoda un minimo di- 99999999,999 a un massimo di 99999999,999. In particolare, i valorinegativi sono rappresentati tra parentesi.

330.5 Comandi per intervenire sui file

Per caricare o salvare il foglio, si interviene con comandi composti da una lettera, seguita dalnome del file e forse da altre indicazioni. Vengono descritti brevemente questi comandi.

• G file_da_caricare

Il comando‘G’ sta perGete permette di caricare un foglio elettronico che in precedenza erastato salvato su un file. Appena si preme la lettera‘G’ , si passa sulla parte superiore delloschermo a scrivere il nome di tale file, che deve essere conosciuto preventivamente, perchénon viene dato alcun ausilio di ricerca:

i> get ["source"] "prova [ Invio ]

L’esempio mostra in pratica il completamento del comando per caricare il file‘prova ’ chesi trova nella directory corrente.

• M file_da_caricare

Il comando‘M’ sta perMergee permette di caricare un altro foglio elettronico che vada asommarsi a quanto appare già sullo schermo. In pratica, le celle che dovessero già contenerequalcosa, vengono sovrascritte, perdendo l’informazione precedente.

• P [[ file_da_salvare] zona]Il comando‘P’ sta perPut e permette di salvare il foglio elettronico in un file. Appena sipreme la lettera‘P’ , si passa sulla parte superiore dello schermo a scrivere il nome di talefile, che però non è necessario se in precedenza il foglio era già stato salvato.

i> put ["dest" range] "prova [ Invio ]

L’esempio mostra in pratica il completamento del comando per salvare il foglio nel file‘prova ’ . Se il nome era già stato stabilito in precedenza, è sufficiente premere[ Invio ] perconfermare l’operazione con il nome precedente.

Volendo, è possibile salvare solo una parte del foglio elettronico, definendo le coordinatedella zona a cui si è interessati.

Page 25: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Spreadsheet Calculator 3759

i> put ["dest" range] "prova-1" A0:F10 [ Invio ]

In questo caso, si vuole salvare la zona delimitata dalle coordinate A0:F10 nel file‘prova-1 ’ . Si noti che in questo caso è stato necessario concludere la delimitazione delnome del file attraverso gli apici doppi finali.

• W[[ file_di_testo] zona]Il comando‘W’ sta perWrite e si comporta in modo analogo a‘P’ , con la differenza chegenera un file di testo contenente la rappresentazione finale del foglio. In pratica, si trattadi una forma di esportazione che potrebbe essere diretta anche alla stampa.

i> write ["dest" range] "| lpr" A0:F10 [ Invio ]

Con questo comando si vuole stampare la zona A0:F10, attraverso l’invio della stessa alcomando‘ lpr ’ .

• T [[ file_da_esportare] zona]Il comando‘T’ sta perTablee serve a esportare una zona, o tutto il foglio, in un formatodifferente, definito attraverso il comando‘S tblstyle ’ , già descritto nella tabella330.5.Il funzionamento è analogo ai comandi‘P’ e ‘W’ .

Tabella 330.8. Comandi per la gestione dei file.

Comando DescrizioneG file Carica il file.M file Sovrappone il file al foglio attuale.

P[file [zona]] Salva il foglio o solo una zona particolare.

W[file [zona]] Salva (esporta) in formato testo.

T[file [zona]] Esporta in un altro formato.

In generale, tutti i comandi che servono a salvare o a esportare dati, permettono l’indicazionedi un file su disco, oppure di un comando del sistema operativo da alimentare attraverso unapipeline. In pratica, se il nome del file inizia con il simbolo‘ | ’ , si intende che si tratti di unapipeline.

330.6 Comandi per intervenire su zone del foglio

Per qualche ragione, i comandi che intervengono su una zona rettangolare del foglio, inizianotutti con la barra obliqua normale (‘ / ’) e continuano con una lettera, dopo la quale, di solito, si èinvitati a inserire la zona a cui si fa riferimento.

Da questo si intende che le coordinate delle zone vanno scritte sempre dopo aver iniziato ilcomando, nel modo che è già stato mostrato:

coordinata_iniziale: coordinata_finale

In alternativa, si può indicare il nome della zona, che eventualmente gli fosse stato assegnato inprecedenza con il comando‘ /d ’ .

Il programma offre anche qualche accorgimento per facilitare l’inserimento delle zone, ma in ge-nerale non si tratta di soluzioni convenienti, per cui di solito è meglio usare la digitazione norma-le. La tabella330.9riepiloga brevemente i comandi principali di questo tipo, mentre nel seguitosono mostrati alcuni esempi, in cui si vede anche l’istruzione interna del foglio elettronico, checomunque viene generata automaticamente.

Page 26: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3760 Spreadsheet Calculator

Tabella 330.9. Comandi per la gestione delle zone del foglio.

Comando Descrizione/x zona Cancella il contenuto delle celle nella zona indicata./c zona_destinazione zona_origine Copia una zona./c zona_destinazione cella_origine Copia una cella riempiendo una zona./f zona_destinazione n_iniziale incremento Riempie una zona di valori./d stringa_nome zona Assegna un nome a una zona di celle./u zona Cancella il nome assegnato alla zona in precedenza./s Mostra l’elenco delle zone che hanno un nome./l zona Impedisce la modifica della zona./U zona Libera la zona indicata che così può essere modificata./F zona stringa_formato Assegna un formato a una zona di celle.

Esempi

[ / ][ x ]

i> erase A0:F20 [ Invio ]

Elimina il contenuto delle celle che si trovano nella zona delimitata da A0:F20.

[ / ][ c ]

i> copy A0:A7 D0:D7 [ Invio ]

Copia la zona D0:D7 in A0:A7.

[ / ][ c ]

i> copy A0:A7 D0 [ Invio ]

Copia la cella D0 in tutta la zona A0:A7.

[ / ][ f ]

i> fill B0:B7 10 2 [ Invio ]

Riempie le celle della zona B0:B7 a partire dal numero 10, per continuare con numeri chesi incrementano di due unità ogni volta.

[ / ][ d ]

i> define "elenco" B0:B7 [ Invio ]

Assegna alla zona B0:B7 il nome‘elenco ’ .

[ / ][ s ]

Mostra l’elenco delle zone che hanno un nome, inviando l’elenco sotto il controllo diLess o di un altro programma analogo secondo quanto indicato nella variabile di ambiente‘PAGER’ . Per uscire dalla visualizzazione, occorre usare i comandi di quel programma. ConLess basta premere la lettera‘q’ .

[ / ][ F ]

i> fmt B0:B7 "####.0000" [ Invio ]

Assegna alla zona B0:B7 il formato‘####.0000 ’ .

Page 27: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Spreadsheet Calculator 3761

330.6.1 Aiuto alla definizione delle celle e delle zone

Una volta entrati nell’idea di funzionamento di questo tipo di foglio elettronico, le cose non so-no più tanto difficili e può essere utile sfruttare qualche accorgimento che facilita l’inserimentodi coordinate riferite a celle o zone. Nel momento in cui ci si trova nella fase di inserimen-to, nella prima riga dello schermo, sono disponibili alcuni comandi. In particolare i comandi[ Ctrl+b ], [ Ctrl+n ], [ Ctrl+p ] e [ Ctrl+f ] sono ancora disponibili, per evidenziare una zona nel fogliosottostante.

Usando questi comandi, la zona evidenziata diventa la zona «predefinita», che si può inserireautomaticamente con il tasto[ Tab]. Bisogna provare un po’ e poi si comprende il senso di questo.

Tabella 330.10. Comandi speciali disponibili durante la digitazione nella prima rigadello schermo.

Comando EffettoCtrl+b Back, estende a sinistra la zona predefinita.Ctrl+n Next, estende in basso la zona predefinita.Ctrl+p Previous, estende in alto la zona predefinita.Ctrl+f Forward, estende a destra la zona predefinita.Tab Inserisce la zona predefinita nella riga.Ctrl+v Inserisce la cella corrente nella riga.

330.6.2 Coordinate relative o assolute

Le espressioni del foglio elettronico vengono descritte in seguito. Tuttavia, in questa fase è im-portante rendersi conto della rappresentazione delle celle e delle zone di celle, che in pratica sonole variabili di un foglio elettronico.

Quando un’espressione contiene un riferimento a una cella o a una zona, se questa cella viene co-piata in un’altra posizione, questi riferimenti vengono modificati in modo relativo. Per esempio,se la cella A0 contiene un riferimento alla cella B1, copiando la cella A0 in C2, il riferimentointerno alla cella C2 sarà alla cella D3. Per indicare un riferimento assoluto, si aggiunge nel-le coordinate il simbolo‘$’ , davanti alla componente che si vuole «bloccare». Si osservino gliesempio seguenti:

• ‘X4’ riferimento relativo alla cella X4;

• ‘$X$4’ riferimento assoluto alla cella X4;

• ‘$X4’ riferimento alla cella X4, dove la colonna è un’informazione assoluta, mentre la rigarimane un’indicazione relativa;

• ‘X$4’ riferimento alla cella X4, dove la riga è un’informazione assoluta, mentre la colonnarimane un’indicazione relativa;

330.7 Comandi vari

Nelle sezioni precedenti sono stati esclusi alcuni comandi. In particolare non è ancora stato spie-gato come si termina il lavoro con questo programma: ciò si ottiene con[ Q ], [ q ], oppure[ Ctrl+c ];se il foglio attuale non è stato salvato viene chiesto se si vogliono salvare i dati, oppure se siintende rinunciare. La tabella330.11riepiloga questi comandi.

Page 28: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3762 Spreadsheet Calculator

Tabella 330.11. Comandi vari.

Comando DescrizioneQ Conclude il funzionamento del programma.q "Ctrl+c "Esc Annulla il comando in corso.Ctrl+g "Ctrl+l Ridisegna lo schermo.Ctrl+r Evidenzia le celle che contengono costanti numeriche.Ctrl+x Evidenzia le celle che contengono espressioni.@ Ricalcola le espressioni.m Copia il contenuto della cella in un’area transitoria.c Incolla il contenuto dell’area transitoria nella cella corrente.+ In condizioni normali, incrementa il valore numerico della cella.- In condizioni normali, decrementa il valore numerico della cella.[ Invio ] Passa all’inserimento di un’istruzione libera.? Mostra la guida interna.

330.8 Espressioni

Le celle del foglio sono fatte per contenere delle espressioni. Queste possono essere semplice-mente dei valori costanti, numerici o stringa, oppure può trattarsi di qualcosa di più complesso.Le espressioni si ottengono attraverso l’uso di operatori e anche attraverso funzioni che hanno lacaratteristica di iniziare con il simbolo‘@’ . Nel seguito vengono mostrate alcune tabelle che rias-sumono gli operatori e le funzioni di uso più comune. Resta sempre la documentazione originaleper conoscere le altre possibilità a disposizione.

Si può osservare che è possibile rappresentare un risultato booleano. In pratica,Verocorrisponde al valore numerico uno;Falsocorrisponde al valore numerico zero.

Le espressioni possono essere raggruppate attraverso l’uso di parentesi tonde, più o menoannidate.

Tabella 330.12. Elenco degli operatori utilizzabili in presenza di valori numerici e logici.

Espressioni Descrizione- op Inverte il segno dell’operando.op1+op2 Somma i due operandi.op1- op2 Sottrae dal primo il secondo operando.op1* op2 Moltiplica i due operandi.op1/op2 Divide il primo operando per il secondo.op1%op2 Modulo: il resto della divisione tra il primo e il secondo operando.op1 op2 Eleva il primo operando alla potenza del secondo.op1<op2 Verose il primo operando è minore del secondo.op1>op2 Verose il primo operando è maggiore del secondo.op1<=op2 Verose il primo operando è minore o uguale al secondo.op1>=op2 Verose il primo operando è maggiore o uguale al secondo.op1=op2 Verose gli operandi si equivalgono.op1!=op2 Verose gli operandi sono differenti.~op NOT, inversione logica.op1& op2 AND logico.op1|op2 OR logico.op1?op2:op3 Restituisce il secondo operando se il primo èVero, altrimenti il terzo.

Page 29: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Spreadsheet Calculator 3763

Tabella 330.13. Elenco di alcuni operatori e di alcune funzioni che hanno a che farecon le stringhe.

Espressioni Descrizionestr1 # str2 Concatena le due stringhe.@substr(str1,n,m) La sottostringa dalla posizionen perm caratteri.@fmt(stringa_printf ,n) Converte un numero in stringa, in base al formato indicato.@upper(str1) Converte in maiuscolo.@capital(str1) La prima lettera di ogni parola in maiuscolo.@eqs(str1,str2) Verose le due stringhe sono uguali.

Tabella 330.14. Elenco di alcune funzioni che intervengono su zone.

Espressioni Descrizione@sum(zona) Sommatoria dei valori della zona.@prod(zona) Prodotto dei valori delle celle.@avr(zona) Media aritmetica di tutti i valori validi.@count(zona) Quantità di celle contenenti valori validi.@max(zona) Valore massimo.@min(zona) Valore minimo.

Tabella 330.15. Elenco di alcune funzioni matematiche comuni.

Espressioni Descrizione@sqrt(n) Radice quadrata.@exp(n) Funzione esponenziale.@ln(n) Logaritmo naturale.@log(n) Logaritmo a base 10.@floor(n) L’intero più grande non superiore del valore fornito.@ceil(n) L’intero più piccolo non inferiore del valore fornito.@rnd(n) Arrotonda all’intero.@round(n,m) Arrotondan all’ m-esima cifra decimale.@abs(n) Valore assoluto.@pow(n,m) n elevato alla potenza dim.@pi P-greco.@dtr(n) Converte da gradi a radianti.@rtd(n) Converte da radianti a gradi.@sin(n) Seno.@cos(n) Coseno.@tan(n) Tangente.@asin(n) Arco-seno.@acos(n) Arco-coseno.@atan(n) Arco-tangente.

Tabella 330.16. Elenco di alcune funzioni relative a date e orari.

Espressioni Descrizione@now Tempo attuale in secondi (dal riferimento del 31 dicembre 1969).@dts(mese,giorno,anno) Tempo in secondi corrispondente alla data fornita.@tts(ore,minuti ,secondi) Orario in secondi a partire dalla mezzanotte.@date(tempo_in_secondi) Restituisce la data corrispondente in forma di stringa.@year(tempo_in_secondi) Restituisce l’anno.@month(tempo_in_secondi) Restituisce il mese.@day(tempo_in_secondi) Restituisce il giorno.@hour(orario_in_secondi) Restituisce l’ora.@minute(orario_in_secondi) Restituisce i minuti.@second(orario_in_secondi) Restituisce i secondi.

Page 30: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3764 Spreadsheet Calculator

330.9 Formato del file

I file gestiti daSC sono file di testo contenenti direttive del linguaggio interno al foglio elettro-nico. Per fare un esempio iniziale, basti pensare a un foglio in cui siano state assegnate solo lecelle A0 e B1, come si vede nell’esempio:

A B C D E F G0 123.001 ciao <

In pratica, la cella A0 contiene il numero 123, mentre la cella B1 contiene la stringa‘ciao ’ . Tuttoil resto si considera inutilizzato. Salvando questo lavoro in un file, si ottiene ciò che segue:

# This data file was generated by the Spreadsheet Calculator.# You almost certainly shouldn’t edit it.

let A0 = 123label B1 = "ciao"goto B1

Si intuisce che le righe che iniziano con il simbolo‘#’ , assieme a quelle che sono bianche o sem-plicemente vuote, vengono ignorate. Tutto il resto viene definito in forma di direttiva, corrispon-dente a istruzioni del foglio elettronico. In particolare, è stata anche memorizzata la posizionedel cursore, che si presume si trovasse sulla cella B1.

Nell’ambito delle direttive, ciò che appare racchiuso tra parentesi quadre viene considerato uncommento; di conseguenza viene ignorato. Per esempio, se si modifica il file a mano, nel modoseguente,

# This data file was generated by the Spreadsheet Calculator.# You almost certainly shouldn’t edit it.

let [ciao ciao] A0 = 123label B1 = "ciao" [ciao ciao]goto B1

tutto funziona regolarmente, senza che queste cose influiscano.

Negli esempi che sono già stati mostrati nel capitolo, al riguardo di queste istruzioni interne delfoglio elettronico, sono già apparse indicazioni tra parentesi quadre, usate per suggerire all’utentele informazioni da inserire. Evidentemente, tali indicazioni non fanno parte delle istruzioni.

La tabella330.17riepiloga le istruzioni principali del foglio elettronico, con le quali si può rea-lizzare direttamente un file perSC. Altre istruzioni possono essere individuate semplicementeosservando il comportamento di questo programma.

Tabella 330.17. Alcune istruzioni interne del foglio elettronico, utili per la realizzazionediretta dei suoi file.

Espressioni Descrizionelet cella = espr_num Assegna alla cella un’espressione numerica.labelcella = espr_str Assegna alla cella un’espressione stringa.formatcolonna= larghezza decimali tipo Modifica il formato di una colonna.fmt zona str_formato Modifica il formato di una zona.set byrows Ricalcola per righe.set bycols Ricalcola per colonne.set iterations =n_iterazioni Iterazioni per il ricalcolo.set tblstyle =stile Definisce lo stile di esportazione delle tabelle.set autocalc Ricalcola automaticamente.set !autocalc Non ricalcola automaticamente.set numeric Inserimento numerico rapido.set !numeric Inserimento numerico normale.set cellcur Evidenzia la cella corrente.

Page 31: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Spreadsheet Calculator 3765

Espressioni Descrizioneset !cellcur Non evidenzia la cella corrente.set toprow Mostra le informazioni sulla prima riga.set !toprow Non mostra le informazioni sulla prima riga.gotocella Porta il cursore sulla cella indicata.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 32: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3766 Spreadsheet Calculator

Page 33: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Parte lxviii

Applicazioni matematiche egrafiche varie

331 Gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3768

331.1 Avvio e interazione normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3769

331.2 Comandi comuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3769

331.3 Espressioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3771

331.4 Script e file di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3774

331.5 Controllare l’uscita grafica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3775

332 Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3777

332.1 Avvio e interazione normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3777

332.2 Variabili di Octave e calcoli elementari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3778

332.3 Vettori e matrici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3779

332.4 Disegno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3780

332.5 Script di Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3781

332.6 File di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3781

333 Applicazioni matematiche varie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3783

333.1 Geg -- GTK+ Equation Grapher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3783

333.2 QCad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3786

Indice analitico del volume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3787

3767

Page 34: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 331

GnuplotGnuplot1 è un programma applicativo per il disegno di funzioni e di dati nello spazio a due e tredimensioni. Il suo funzionamento avviene per mezzo di istruzioni impartite attraverso una riga dicomando e in questo senso il suo utilizzo può risultare un po’ strano all’utilizzatore occasionale.

Gnuplot è disponibile su molti sistemi operativi differenti e per quanto riguarda GNU/Linux, siutilizza l’interfaccia grafica X. Per la precisione, si deve impegnare una finestra di terminale,attraverso la quale impartire i comandi. Questi generano eventualmente una rappresentazionegrafica che viene mostrata in una finestra separata. L’esempio seguente mostra una sessione dilavoro brevissima utilizzando l’eseguibile‘gnuplot ’ per visualizzare la funzionex2 * sin(x),dove sia l’asse X che l’asse Y vanno da- P-greco a +P-greco.

$ gnuplot [ Invio ]

G N U P L O TLinux version 3.5 (pre 3.6)patchlevel beta 347last modified Mon Jun 22 13:22:33 BST 1998

Copyright(C) 1986 - 1993, 1998Thomas Williams, Colin Kelley and many others

Send comments and requests for help to [email protected] bugs, suggestions and mods to [email protected]

Terminal type set to ’x11’

gnuplot> splot [-pi:pi] [-pi:pi] x**2 * sin(y) [ Invio ]

La figura331.1mostra il risultato di questa funzione, così come appare nella finestra generatadal comando diGnuplot che è appena stato visto.

Figura 331.1. Una funzione nello spazio tridimensionale disegnata con Gnuplot.

La versione per GNU/Linux diGnuplot utilizza la libreriaReadline per il controllo della riga dicomando: questo facilita la sua configurazione (attraverso il file‘~/.inputrc ’) e il riutilizzo di

1Gnuplot software libero con licenza speciale

3768

Page 35: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Gnuplot 3769

comandi già inseriti, attraverso lo scorrimento dello storico. In pratica, chi utilizza già lashellBash dovrebbe trovarsi a suo agio di fronte alla riga di comando diGnuplot.

331.1 Avvio e interazione normale

Gnuplot viene avviato attraverso l’eseguibile‘gnuplot ’ , utilizzando necessariamente una fine-stra di terminale. Non è previsto l’uso di opzioni speciali, a parte quelle comuni per l’uso diprogrammi nel sistema grafico X (‘ -geometry ’ , ‘ -display ’ , ecc.).

gnuplot [ opzioni] [ file_script...]

Eventualmente, come si vede dallo schema sintattico, possono essere indicati dei file da caricareed eseguire. Si tratta discript diGnuplot, composti semplicemente da una sequenza di comandiche potrebbero essere impartiti attraverso la riga di comando normale dello stesso.

Il disegno delle funzioni avviene attraverso il comando‘plot ’ , per il disegno di curve nellospazio a due dimensioni, e‘splot ’ , per il disegno di piani nello spazio a tre dimensioni. Ilfunzionamento interattivo diGnuplot (quello normale che si ottiene quando non si indicano fileda caricare) prevede in particolare il comando‘help ’ per ottenere una guida rapida ai comandi eil comando‘exit ’ (o ‘quit ’) per terminarne il funzionamento.

La guida rapida ottenibile con il comando‘help ’ permette di selezionare degli argomenti parti-colari che generalmente corrispondono ai nomi dei comandi utilizzabili. Il comando‘help ’ dasolo mostra un’introduzione all’uso diGnuplot e termina elencando gli argomenti per i quali sipossono richiedere informazioni specifiche.

331.2 Comandi comuni

I comandi diGnuplot sono numerosi e complessi. Qui viene mostrato solo l’uso di alcuni diquesti e in modo elementare, dove in particolare anche gli schemi sintattici vengono semplificati.

In generale, è possibile mettere assieme più comandi in un’unica riga separandoli con il puntoe virgola (‘ ; ’); i comandi possono continuare nella riga successiva se si utilizza la barra obliquainversa (‘ \ ’ ) esattamente alla fine di una riga da continuare. Alcuni argomenti dei comandi sonodelle stringhe, nel senso che non fanno riferimento a parole chiave previste; in tal caso devonoessere delimitate con gli apici singoli (‘ ’ ’) o con gli apici doppi (‘ " ’ ), dove le stringhe delimitatecon apici doppi espandono alcune sequenze precedute dalla barra obliqua inversa, mentre le altreno.

Una riga di comando diGnuplot può contenere anche stringhe delimitate da apici inversi (‘ ‘ ’).In tal caso queste stringhe vengono interpretate come comandi del sistema operativo sottostantee vengono rimpiazzate con il risultato dell’esecuzione del comando stesso.

I comandi possono contenere dei commenti che iniziano nel momento in cui appare il simbolo‘#’ e fanno in modo che venga ignorato tutto quello che appare di seguito fino alla fine della riga.

Quando un comando prevede l’indicazione di un intervallo di valori, questo viene indicato uti-lizzando la notazione‘ [ inizio: fine] ’ , con le parentesi quadre che fanno parte della notazionestessa. Se per qualche motivo si deve indicare un intervallo predefinito in modo esplicito, sipossono usare le parentesi aperte e chiuse senza alcuno contenuto:‘ [] ’ .

Alcuni comandihelp [ voce] | ? [ voce]

Mostra la guida interna riferita alla voce richiesta, oppure all’introduzione diGnuplot.

Page 36: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3770 Gnuplot

exit | quit

I comandi‘exit ’ o ‘quit ’ concludono il funzionamento diGnuplot.

plot [ intervalli] funzione [ title stringa_titolo]Il comando‘plot ’ serve per il disegno di punti su un piano (lo spazio a due dimensioni). Disolito si utilizza preferibilmente per il disegno di una funzione, come nella sintassi mostrataqui. Gli intervalli sono al massimo due: il primo si riferisce all’asse X e il secondo all’asseY. Il titolo che può essere indicato in una stringa dopo la parola chiave‘ title ’ serve adefinire una didascalia per la curva che viene disegnata.

plot [ intervalli] stringa_file_dati [ title stringa_titolo]‘plot ’ può essere usato per visualizzare anche una serie di punti come indicato all’internodi un file di dati che viene descritto più avanti. È importante osservare comunque che unfile di dati diGnuplot non ha lo stesso formato degliscript di questo.

splot [ intervalli] funzione [ title stringa_titolo]Il comando‘splot ’ serve per il disegno di punti su uno spazio (a tre dimensioni). Di solitosi utilizza preferibilmente per il disegno di una funzione, come nella sintassi mostrata qui.Gli intervalli sono al massimo tre: il primo si riferisce all’asse X, il secondo all’asse Y eil terzo all’asse Z. Il titolo che può essere indicato in una stringa dopo la parola chiave‘ title ’ serve a definire una didascalia per il piano che viene disegnato.

splot [ intervalli] stringa_file_dati [ title stringa_titolo]‘splot ’ può essere usato per visualizzare anche una serie di punti come indicato all’internodi un file di dati, esattamente come nel caso di‘plot ’ , con la differenza che le coordinatein questione sono fatte di tre elementi.

load stringa_file_script

‘ load ’ carica ed esegue il contenuto di unoscript diGnuplot. Al termine dell’esecuzionedelloscript riprende il funzionamento normale.

save stringa_file_script

‘save ’ salva l’impostazione e il disegno attuale in unoscript diGnuplot. Eventualmente sipuò modificare manualmente il file in questione utilizzando un file per la modifica dei filedi testo.

print espressione| stringa

‘print ’ restituisce il risultato dell’espressione oppure la stringa fornita come argomento.In pratica permette di fare il calcolo di un valore o di mostrare una frase.

if ( condizione) comando[ ; comando] ...

‘ if ’ esegue il comando (o i comandi se ne viene indicato più di uno) solo se la condizioneposta tra parentesi risulta vera.

pause n_secondi[ stringa]‘pause ’ serve a fare una pausa della durata indicata dal primo argomento. Se si vuole cheper proseguire debba essere premuto il tasto[ Invio ], occorre indicare il valore- 1. La stringaè facoltativa e permette di mostrare un messaggio contenente la stringa stessa.‘pause ’ èparticolarmente adatto negliscript diGnuplot.

Esempi

gnuplot> help plot

Mostra la guida interna riferita al comando‘plot ’ .

gnuplot> plot sin(x)

Page 37: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Gnuplot 3771

Disegna la funzione seno utilizzando una zona predefinita degli assi cartesiani.

gnuplot> plot sin(x) title ’seno di x’

Come nell’esempio precedente, indicando la stringa‘seno di x ’ come didascalia riferitaalla curva disegnata.

gnuplot> plot [-3:3] sin(x) title ’seno di x’

Come nell’esempio precedente, limitando l’ampiezza dell’asse X da- 3 a +3.

gnuplot> plot [-pi:pi] sin(x) title ’seno di x’

Come nell’esempio precedente, limitando l’ampiezza dell’asse X da- P-greco a +P-greco.

gnuplot> plot ’mio_file.gnuplot’

Disegna nello spazio a due dimensioni i punti annotati nel file‘mio_file.gnuplot ’ chesi trova nella directory corrente.

gnuplot> splot x**2 * sin(y)

Disegna un piano nello spazio corrispondente alla funzione ottenuta dal quadrato dixmoltiplicato per il seno diy.

gnuplot> splot x**2 * sin(y) title ’quadrato di x per seno di y’

Come nell’esempio precedente, indicando la stringa‘quadrato di x per seno di y ’come didascalia riferita al piano disegnato.

gnuplot> splot [-3:3] [-5:5] x**2 * sin(y) title ’quadrato di x perseno di y’

Come nell’esempio precedente, limitando l’ampiezza dell’asse X da- 3 a +3 e quelladell’asse Y da- 5 a +5.

gnuplot> plot [0:pi] [-pi:pi] x**2 * sin(y) title ’quadrato di x perseno di y’

Come nell’esempio precedente, limitando l’ampiezza dell’asse X da zero a +P-greco equella dell’asse Y da- P-greco a +P-greco.

gnuplot> splot ’mio_file.gnuplot’

Disegna nello spazio a tre dimensioni i punti annotati nel file‘mio_file.gnuplot ’ che sitrova nella directory corrente.

gnuplot> if (1==1) print ’ovvio: 1 è uguale a 1’

Dal momento che la condizione si avvera, mostra la frase «ovvio: 1 è uguale a 1».

331.3 Espressioni

Le espressioni che si possono utilizzare conGnuplot sono più o meno le stesse dei linguaggi diprogrammazione più comuni e, in generale, gli spazi orizzontali sono ignorati. Tra le altre cosequesto giustifica il motivo per cui diversi tipi di argomenti dei comandi diGnuplot devono esseredefiniti come stringhe delimitate.

L’aritmetica diGnuplot distingue tra numeri interi e numeri a virgola mobile, per cui, utilizzandonumeri interi si hanno risultati interi, mentre utilizzando valori a virgola mobile si ottengonorisultati a virgola mobile. In pratica:

gnuplot> print 10/3 [ Invio ]

Page 38: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3772 Gnuplot

3

gnuplot> print 10/3.0 [ Invio ]

3.33333333333333

gnuplot> print 10/2 [ Invio ]

5

gnuplot> print 10/2.0 [ Invio ]

5.0

Le costanti numeriche possono essere indicate nei modi consueti, con o senza segno, separandola parte intera da quella decimale attraverso un punto, oppure si può usare anche una notazioneesponenziale. Per esempio:

gnuplot> print 1e2 [ Invio ]

100.0

gnuplot> print 1e-2 [ Invio ]

0.01

Gli operatori che si possono utilizzare nelle espressioni diGnuplot sono in pratica quelle dellinguaggioC. La tabella331.1elenca e descrive gli operatori aritmetici e quelli di assegnamento.

Tabella 331.1. Elenco degli operatori aritmetici e di quelli di assegnamento relativi avalori numerici.

Operatore e operandi Descrizione+op Non ha alcun effetto.- op Inverte il segno dell’operando.op1+ op2 Somma i due operandi.op1 - op2 Sottrae dal primo il secondo operando.op1 * op2 Moltiplica i due operandi.op1 / op2 Divide il primo operando per il secondo.op1% op2 Modulo: il resto della divisione tra il primo e il secondo operando.var = valore Assegna alla variabile il valore alla destra.op1 ** op2 Eleva il primo operando alla potenza del secondo.

Molti degli operatori matematici hanno senso solo perchéGnuplot consente di definire dellevariabili al volo, semplicemente assegnandoci un valore. Per esempio,

gnuplot> a = 2*pi [ Invio ]

assegna alla variabile‘a’ il doppio delP-greco. Per visualizzarne il contenuto basta utilizzare ilcomando‘print ’ :

gnuplot> print a [ Invio ]

6.28318530717959

Gli operatori di confronto determinano la relazione tra due operandi. Il risultato dell’espressionecomposta da due operandi posti a confronto è di tipo booleano, rappresentabile all’interno diGnuplot come !0, o non-zero (Vero), e zero (Falso), esattamente come accade nel linguaggioC.È importante sottolineare che qualunque valore diverso da zero equivale aVero in un contestologico. Gli operatori di confronto sono elencati nella tabella331.2.

Page 39: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Gnuplot 3773

Tabella 331.2. Elenco degli operatori di confronto. Le metavariabili indicaterappresentano gli operandi e la loro posizione.

Operatore e operandi Descrizioneop1== op2 Verose gli operandi si equivalgono.op1 != op2 Verose gli operandi sono differenti.op1< op2 Verose il primo operando è minore del secondo.op1> op2 Verose il primo operando è maggiore del secondo.op1<= op2 Verose il primo operando è minore o uguale al secondo.op1>= op2 Verose il primo operando è maggiore o uguale al secondo.

Quando si vogliono combinare assieme diverse espressioni logiche, comprendendo in questeanche delle variabili che contengono un valore booleano, si utilizzano gli operatori logici (notinormalmente come: AND, OR, NOT, ecc.). Il risultato di un’espressione logica complessa èquello dell’ultima espressione elementare a essere valutata. Gli operatori logici sono elencatinella tabella331.3.

Tabella 331.3. Elenco degli operatori logici. Le metavariabili indicate rappresentanogli operandi e la loro posizione.

Operatore e operandi Descrizione! op Inverte il risultato logico dell’operando.op1&& op2 Se il risultato del primo operando èFalsonon valuta il secondo.op1 || op2 Se il risultato del primo operando èVeronon valuta il secondo.

Gnuplot riconosce una serie di funzioni in parte elencate nella tabella331.4, oltre alla costante‘pi ’ (solo al minuscolo) che rappresenta ilP-greco.

Tabella 331.4. Alcune funzioni riconosciute da Gnuplot.

Operatori e operandi Descrizionerand(op) Numero casuale.int(op) Parte intera.abs(op) Valore assoluto.sqrt(op) Radice quadrata.log10(op) Logaritmo in base 10.log(op) Logaritmo naturale.exp(op) e^x.sin(op) Seno.cos(op) Coseno.tan(op) Tangente.asin(op) Arco-seno.acos(op) Arco-coseno.atan(op) Arco-tangente.sinh(op) Seno iperbolico.cosh(op) Coseno iperbolico.tanh(op) Tangente iperbolica.

Infine,Gnuplot, oltre alla possibilità di creare e assegnare dei valori a delle variabili, può definiredelle funzioni. Per esempio,

gnuplot> funzione(x,y) = x**2 * y [ Invio ]

definisce la funzione denominata‘ funzione ’ che ha due variabile,‘x ’ e ‘y ’ , che si traduce nel-l’espressione‘x**2 * y ’ . In seguito, si può utilizzare la funzione appena creata per farci deicalcoli,

Page 40: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3774 Gnuplot

gnuplot> print funzione(2,3) [ Invio ]

12

oppure per disegnarne il grafico:

gnuplot> splot funzione(x,y) [ Invio ]

Naturalmente la stessa cosa vale per le funzioni con una sola variabile.

331.4 Script e file di dati

I file che possono essere indicati alla fine degli argomenti della riga di comando dell’eseguibile‘gnuplot ’ e quelli che possono essere caricati attraverso il comando‘ load ’ , sono degliscriptdi Gnuplot. La sintassi di questi file è molto semplice: si tratta solo di un elenco di comandi diGnuplot.

In particolare, se esiste il file‘~/.gnuplot ’ , questo viene trattato come unoscript da eseguireall’avvio di Gnuplot.

A titolo di esempio viene mostrato unoscript del genere il cui scopo è quello di mostrare unaserie di funzioni come in una sequenza di diapositive.

## Sequenza di funzioni con Gnuplot.#plot [-1:1] 2*x title ’f(x) = 2x’pause -1 ’premere <Invio> per continuare’

plot [-2:2] x**2 title ’f(x) = x^2’pause -1 ’premere <Invio> per continuare’

plot [-2:100] log(x) title ’log(x)’pause -1 ’premere <Invio> per continuare’

plot [-pi:pi] sin(x) title ’seno’pause -1 ’premere <Invio> per continuare’

plot [-pi:pi] tan(x) title ’tangente’pause -1 ’premere <Invio> per continuare’

splot [-5:5] [-5:5] 2*x+y title ’f(x,y) = 2x+y’pause -1 ’premere <Invio> per continuare’

splot [-5:5] [-5:5] x**2*y title ’f(x,y) = x^2 * y’pause -1 ’premere <Invio> per continuare’

splot [-pi/4:pi/4] [-pi/2:pi/2] sin(x)*cos(y) title ’f(x,y) = sin(x)*cos(y)’pause -1 ’fine della rappresentazione’

# Fine

Gnuplot è in grado di gestire anche i file di dati, ovvero dei file contenenti solo delle coordinatecorrispondenti a punti da rappresentare. Si tratta sempre di file di testo, in cui vengono ignorati icommenti preceduti dal simbolo‘#’ oltre alle righe bianche e a quelle vuote, mentre le altre righecontengono coordinate nella forma:

x y [ z]

Per esempio, la riga

1 2

rappresenta il punto di coordinata X=1 e Y=2, mentre la riga

Page 41: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Gnuplot 3775

1 2 3

rappresenta il punto di coordinata X=1, Y=2 e Z=3.

Eccezionalmente, i comandi‘plot ’ e ‘splot ’ possono essere utilizzati direttamente per visua-lizzare una serie di punti senza doverli caricare da un file esterno. Per ottenere questo si utilizzanonel modo seguente:

plot | splot ’-’

coordinata...

e

Per esempio,

plot ’-’0 01 12 23 34 4e

mostra cinque punti appartenenti alla rettaf(x)=x.

In questo stesso modo si possono rappresentare più gruppi di punti, aumentandoconseguentemente i trattini che fungono da argomento di‘plot ’ o di ‘splot ’ . Per esempio,

plot ’-’, ’-’0 01 12 23 34 4e0 11 22 33 44 5e

mostra cinque punti appartenenti alla rettaf(x)=x e altri cinque punti (colorati in modo diverso)appartenenti alla rettaf(x)=x+1.

331.5 Controllare l’uscita grafica

I disegni realizzati conGnuplot sono diretti normalmente in una finestra di X.Gnuplot controllail formato delle immagini che crea attraverso il comando‘set terminal ’ .2

set terminal tipo_di_uscita_grafica[ altri_argomenti]

Per esempio, nel caso specifico della rappresentazione normale in una finestra di X, la sintassidiventa:

set terminal x11 [ reset ] [ n_finestra]

Per la precisione, si possono visualizzare più finestre contemporaneamente, numerate a partireda zero. Utilizzando però la parola chiave‘ reset ’ , si eliminano tutte le finestre.

2I vari formati grafici in cui possono essere resi i disegni diGnuplot dipendono dal modo in cui questo è statocompilato. In pratica, la disponibilità o meno di un certo formato dipende da delle librerie incluse o meno in fase dicompilazione.

Page 42: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3776 Gnuplot

Alternativamente si può fare in modo di generare un’immagine che non viene visualizzata, masalvata in un file. La sintassi seguente riguarda la possibilità di generare immagini in formatoPNG.

set terminal png [ small | medium| large ] [ monochrome| gray | color ]

Nello schema sintattico, le parole chiave‘small ’ , ‘medium’ e ‘ large ’ , si riferiscono alla di-mensione dei caratteri utilizzati nelle scale e nelle didascalie. Le parole chiave‘monochrome ’ ,‘gray ’ e ‘color ’ , si riferiscono alla colorazione o meno che devono avere le immagini.

Il comando appena descritto non permette di stabilire la destinazione del file generato, pertan-to questa è semplicemente lostandard output. Questo fatto rende praticamente impossibile lagestione di immagini PNG attraverso l’uso diGnuplot in modo interattivo. In pratica, si deverealizzare unoscript, in modo da poter avviareGnuplot ridirigendo lostandard output verso ilfile desiderato. Quello che segue è un esempio banale di un talescript.

# parabola.gnuplotset terminal png medium colorplot x**2

Per generare il file‘parabola.png ’ , basta il comando seguente:

$ gnuplot parabola.gnuplot > parabola.png

Eventualmente si può generare anche un’immagine GIF.

set terminal gif [ transparent ] [ interlace ] [ small | medium| large ] ←→[ size pixel_o, pixel_v] [ colore_sfondo colore_assi[ colore_disegno...] ]

La schema sintattico è più complesso e di conseguenza offre maggiori possibilità. Le dimensionidei caratteri usati per le scale, i titoli e le didascalie, sono controllate dalle stesse parole chiaveviste per il formato PNG. La parola chiave‘ transparent ’ controlla la realizzazione di un dise-gno con un fondale trasparente;‘ interlace ’ fa in modo di generare un file GIF interlacciato. Ladimensione dell’immagine può essere definita attraverso l’opzione‘size ’ , seguita dalla quantitàdi punti grafici (pixel) orizzontali e verticali (come si vede dallo schema).

In particolare possono essere controllati i colori, indicati attraverso degli argomenti che vengonoposti nella parte finale del comando. Il primo di questi colori si riferisce al fondale, il secondo èquello degli assi X, Y ed eventualmente Z. I colori successivi si riferiscono agli elementi visua-lizzati (le curve o i piani nello spazio). Gli argomenti che esprimono i colori hanno il formatoseguente:

x rossoverdeblu

I tre colori fondamentali sono espressi da coppie di cifre esadecimali. Per esempio:‘xffffff ’ èil bianco,‘x000000 ’ è il nero,‘xff0000 ’ è il rosso,‘x00ff00 ’ è il verde e‘x0000ff ’ è il blu.

set terminal gif xffffff x0000ff x00ff00splot (x**2)*y

L’esempio mostra unoscript con il quale si vuole generare un file GIF (di dimensioni normali)contenente il grafico della funzionef(z)=(x2)*y, utilizzando dei colori particolari: bianco per losfondo, blu per gli assi e verde per il reticolo che rappresenta il piano nello spazio.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 43: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 332

OctaveOctave1 è un linguaggio di programmazione ad alto livello per il calcolo matematico, usatofondamentalmente in modo interattivo. Viene usato attraverso un terminale a caratteri, comeuna console virtuale di GNU/Linux, ma per ottenere dei grafici si avvale diGnuplot che così èopportuno sia installato assieme aOctave. L’interazione traGnuplot eOctave è trasparente, se ilsecondo viene utilizzato in una finestra di terminale all’interno del sistema grafico X.

In queste sezioni si mostra solo qualche piccolo assaggio diOctave che dispone di ampiadocumentazione per conto proprio:octave.info.

Anche Octave utilizza la libreriaReadline per il controllo della riga di comando, con tutti ivantaggi che ciò comporta per l’utilizzatore.

332.1 Avvio e interazione normale

Octave viene avviato attraverso l’eseguibile‘octave ’ . Bisogna ricordare che se si vogliono di-segnare dei grafici deve essere avviato da una finestra di terminale all’interno di X, diversamentebasta una console virtuale di GNU/Linux.‘octave ’ riconosce una serie di opzioni che qui nonvengono descritte (eventualmente basta utilizzare il comando‘octave --help ’ per ottenerne ladescrizione) e può eseguire il contenuto di un file se viene indicato come ultimo argomento dellariga di comando.

octave [ opzioni] [ file_di_comandi]

Il file di comandi è unoscript contenente semplicemente comandi diOctave, dove in particolareil simbolo ‘#’ serve a indicare l’inizio di un commento che si conclude alla fine della riga e lerighe vuote o bianche vengono semplicemente ignorate.

Eventualmente, unoscript diOctave può essere reso eseguibile, purché all’inizio del file vengaaggiunta la solita indicazione dell’interprete da utilizzare:

#!/usr/bin/octave

SeOctave viene avviato in modo normale (senza argomenti particolari e senza l’indicazione diunoscript da eseguire), si ottiene il funzionamento interattivo normale:

$ octave [ Invio ]

Octave, version 2.0.13 (i386-redhat-linux-gnu).Copyright (C) 1996, 1997, 1998 John W. Eaton.This is free software with ABSOLUTELY NO WARRANTY.For details, type ‘warranty’.

octave:1> _

L’ invito di Octave (ilprompt) è un po’ particolare: mano a mano che si introducono dei coman-di si incrementa il numero che appare. Di seguito sono elencati alcuni comandi elementari diOctave; in altre sezioni ne vengono mostrati degli altri.

Alcuni comandihelp [ -i ] [ argomento]

Il comando‘help ’ permette di ottenere alcune indicazioni sul funzionamento diOctave. Inparticolare, se non si utilizza l’opzione‘ -i ’ si ottiene una guida stringata, mentre con‘ -i ’

1Octave GNU GPL

3777

Page 44: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3778 Octave

viene attivata la consultazione del documentooctave.inforiferito al contesto definito dallaparola chiave che indica l’argomento.

exit | quit

Conclude il funzionamento diOctave.

pause [ ( n_secondi)]Il comando‘pause ’ serve a fare una pausa della durata indicata dall’argomento (che deveessere racchiuso tra parentesi tonde). Se non viene indicato l’argomento, la pausa può essereinterrotta solo attraverso la pressione del tasto[ Invio ]. Questo comando è utile negliscriptdi Octave.

Esempi

octave:x> help help [ Invio ]

Mostra la guida per utilizzare il comando‘help ’ .

octave:x> help -i help [ Invio ]

Mostra la descrizione del comando‘help ’ consultando il documentooctave.info.

332.2 Variabili di Octave e calcoli elementari

Octave gestisce variabili scalari di tipo numerico e di tipo stringa (delimitate da apici singoli odoppi), come avviene comunemente nei linguaggi evoluti più comuni; inoltre permette la defini-zione di strutture, in particolare i vettori e le matrici (nel senso matematico dei termini), in modotrasparente. La dichiarazione di una variabile si ottiene semplicemente assegnandoci un valore.Per esempio,

octave:1> a = 123 [ Invio ]

crea, o sovrascrive la variabile‘a’ assegnandole il valore 123. Assegnando un valore a una va-riabile si ottiene anche l’eco del risultato e ciò può essere utile se l’assegnamento avviene incorrispondenza di un’espressione di qualche tipo.

octave:2> b = a / 2 [ Invio ]

In questo caso, viene assegnato alla variabile‘b’ il valore pari alla metà di‘a’ e si ottieneopportunamente l’informazione

b = 61.500

che così precisa quale valore è stato assegnato a‘b’ . Le espressioni possono essere calcolateanche senza bisogno di assegnarne il risultato a qualche variabile; per esempio:

octave:3> a / b [ Invio ]

ans 2

In questo caso,‘ans ’ sta peranswer(risposta).

Con la stessa logica per la quale un’espressione che non viene assegnata a una variabile generaun risultato che viene visualizzato comunque, per conoscere il contenuto di una variabile bastaindicarla sulla riga di comando:

octave:4> a[ Invio ]

a = 123

Page 45: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Octave 3779

octave:5> b[ Invio ]

b = 61.500

332.3 Vettori e matrici

Al posto degliarray dei linguaggi di programmazione normali,Octave tratta direttamente convettori e matrici (per la precisione: matrici a una e a due dimensioni). Una costante letterale cherappresenta un vettore ha la forma seguente:

[ elemento_1, elemento_2, ... elemento_n ]

In particolare, le parentesi quadre fanno parte della dichiarazione e delimitano in pratica glielementi del vettore. Una costante letterale che rappresenta una matrice a due dimensioni ha unaforma simile a quella del vettore, con la differenza che gli elementi di una riga rispetto a quellidi un’altra sono separati da un punto e virgola:

[ r1c1, r1c2, ...; r2c1, r2c2, ...; rnc1, rnc2, ... ]

Si osservino gli esempi seguenti.

octave:1> a = [ 1, 2, 3 ] [ Invio ]

a =

1 2 3

octave:2> b = [ 4, 5, 6 ] [ Invio ]

b =

4 5 6

octave:3> c = [ 1, 2, 3; 4, 5, 6 ] [ Invio ]

c =

1 2 34 5 6

Eventualmente si possono anche fare delle combinazioni:

octave:4> d = [ a, b ] [ Invio ]

d =

1 2 3 4 5 6

octave:5> e = [ a; b ] [ Invio ]

e =

1 2 34 5 6

Con i vettori e le matrici si possono fare anche dei calcoli nei modi in cui si è abituati inmatematica. In particolare, la notazione‘ x’ ’ restituisce la matrice trasposta dix.

octave:6> c’ [ Invio ]

ans =

1 4

Page 46: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3780 Octave

2 53 6

L’esempio seguente mostra il prodotto tra due matrici; precisamente il prodotto tra la matrice‘c ’e la sua trasposta.

octave:7> c * c’ [ Invio ]

ans =

14 3232 77

È possibile anche moltiplicare una costante scalare per tutti gli elementi di una matrice:

octave:8> 2 * c [ Invio ]

ans =

2 4 68 10 12

Pur senza approfondire il funzionamento diOctave, è il caso di mostrare l’uso della funzioneinterna‘ rand() ’ , il cui scopo è quello di restituire una matrice (a due dimensioni) contenentevalori casuali:

octave:9> f = rand( 2, 3) [ Invio ]

In questo caso, crea la matrice‘ f ’ contenente due righe e tre colonne, con valori casuali compresitra zero e uno.

332.4 Disegno

Si è già accennato al fatto cheOctave dipende daGnuplot per le rappresentazioni grafiche. Ciòavviene in modo trasparente, purché si utilizziOctave da una finestra di terminale all’interno delsistema grafico X.

L’approccio alla grafica diOctave è più complesso diGnuplot, perché il suo scopo è differente. Ingenerale tutto viene visto in forma di vettori e matrici. Di solito, la prima cosa da fare è prendereconfidenza con la funzione‘ linspace() ’ il cui scopo è quello di generare un vettore con unaserie di valori equidistanti (lineari):

linspace ( inizio, fine, quantità)

Il primo argomento della funzione definisce il valore del primo elemento del vettore; il secondodefinisce quello dell’ultimo; il terzo argomento definisce la quantità di elementi complessivi e lafunzione determina i valori rimanenti in modo lineare. Per esempio, il comando seguente serve acreare un vettore di 11 elementi con valori progressivi da 0 a 10:

octave:1> x = linspace( 0, 10, 11) [ Invio ]

x =

0 1 2 3 4 5 6 7 8 9 10

Un’altra cosa da osservare è il fatto che le funzioni matematiche che possono funzionare uti-lizzando un argomento numerico, possono essere applicate anche a vettori e matrici. Si osservil’esempio seguente in cui si genera il vettore‘y ’ calcolando il seno di ogni valore del vettore‘x ’ .

octave:2> y = sin(x) [ Invio ]

Page 47: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Octave 3781

y =

Columns 1 through 8:

0.00000 0.84147 0.90930 0.14112 -0.75680 -0.95892 -0.27942 0.65699Columns 9 through 11:

0.98936 0.41212 -0.54402

Per disegnare il seno calcolato in questo modo, si utilizza la funzione interna‘plot() ’ che habisogno di almeno due argomenti: il vettore dei valori per l’asse X e il vettore corrispondentedei valori da rappresentare nell’asse Y. Si intuisce che il numero di elementi di questi due vettorideve essere uguale.

plot ( vettore_x, vettore_y )

Tornando all’esempio, il comando si limita a questo:

octave:3> plot (x, y) [ Invio ]

Se il secondo argomento della funzione‘plot() ’ è una matrice, si ottiene la visualizzazionedi tante curve quante sono le colonne o le righe della matrice (la scelta viene fatta in base allacorrispondenza con gli elementi del vettore utilizzato come primo argomento).

octave:4> y = [ sin(x); 2 * sin(x)] [ Invio ]

Il comando appena mostrato genera la matrice‘y ’ con due righe corrispondenti a due vettori: ilseno dei valori del vettore‘x ’ e due volte il seno dei valori del vettore‘x ’ .

octave:5> plot (x, y) [ Invio ]

Disegnando il grafico della matrice‘y ’ si ottengono due curve corrispondenti ai valori delle duerighe della stessa.

332.5 Script di Octave

Si è accennato alla possibilità di realizzare degliscript con le istruzioni diOctave. In questo casonon c’è nulla di speciale rispetto a quanto è stato visto fino a questo punto. A titolo di esempioviene mostrato unoscript con il quale si arriva a disegnare il grafico del seno dix nell’intervallodi valori da- P-greco a +P-greco.

#!/usr/bin/octavex = linspace( -pi, +pi, 200)y = sin(x)plot (x,y)pause

Lo script può essere reso eseguibile e avviato autonomamente (purché l’eseguibile‘octave ’ sitrovi effettivamente nella directory‘ /usr/bin/ ’).

332.6 File di dati

Diversa è invece la possibilità di salvare le variabili. Per questo si utilizzano i comandi‘save ’ e‘ load ’ :

save [ opzioni] file variabile...

load [ opzioni] file variabile...

Page 48: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3782 Octave

Attraverso le opzioni si specifica normalmente il formato in cui deve essere realizzato il file dellevariabili che vengono salvate; se non viene specificato dovrebbe trattarsi di quello più semplice:un file di testo puro e semplice.

Le variabili da salvare o da ricaricare vanno annotate dopo il nome del file. Per facilitare la cosapossono essere usati dei caratteri jolly, con significato equivalente a quello delleshell normali.

Alcune opzioni

-ascii

Salva o carica utilizzando il formato ASCII diOctave.

-binary

Salva o carica utilizzando il formato binario diOctave.

-mat-binary

Salva o carica utilizzando il formato binario diMatlab.

-force

Quando vengono caricate le variabili, forza la sovrascrittura di quelle esistenti.

Esempi

octave:x> save prova a b c [ Invio ]

Salva le variabili‘a’ , ‘b’ e ‘c ’ , nel file ‘prova ’ (nella directory corrente) utilizzando ilformato predefinito.

octave:x> save -ascii prova a b c [ Invio ]

Come nell’esempio precedente, specificando esplicitamente che si vuole usare il formatoASCII di Octave.

octave:x> save -ascii prova a* [ Invio ]

Salva tutte le variabili che iniziano per‘a’ nel file ‘prova ’ utilizzando il formato ASCII diOctave.

octave:x> load -ascii -force prova [ Invio ]

Carica tutte le variabili dal file‘prova ’ , che dovrebbe essere in formato ASCII diOctave,sovrascrivendo le variabili eventualmente già esistenti.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 49: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 333

Applicazioni matematiche varieIn questo capitolo si raccolgono informazioni su altri programmi matematici e di disegno chenon hanno trovato una collocazione migliore in altri capitoli.

333.1 Geg -- GTK+ Equation Grapher

Geg1 è un programma applicativo per il disegno di funzioni matematiche a due dimensioni, deltipo f(x)=y, che utilizza per questo l’interfaccia grafica X. È molto semplice e non offre sostegniparticolari dal punto di vista matematico, ma è facile e intuitivo da usare. La figura333.1mostracome si presenta la finestra diGeg, in cui appare la visualizzazione delle funzionisin(x), sin(2x)esin(2x)+sin(x).

Figura 333.1. Geg.

Nella parte superiore della finestra diGeg è disponibile ilmenù a tendina, assieme ad alcunipulsanti grafici per la selezione rapida delle funzionalità di uso comune. Sotto, nella parte destra,appare il riquadro‘ f(x) ’ , ovvero il piano cartesiano su cui vengono disegnate le funzioni. Allasinistra appare il riquadro‘Range’ , dove possono essere indicati in modo preciso i valori degliintervalli di visualizzazione dell’asse X e dell’asse Y; in pratica, basta modificare questi valori epremere[ Invio ] per modificare la scala e la zona visualizzata a destra. A sinistra in basso appare ilriquadro‘Log ’ che elenca le operazioni compiute: nella parte superiore appare l’ultimo comandoeseguito e in quella inferiore il comando più vecchio. Più in basso, sempre a sinistra, appare ilriquadro ‘Status ’ che mostra le coordinate cartesiane in cui si trova il puntatore del mouse,ammesso che questo sia posizionato sull’area del grafico. Infine, nella parte bassa della finestraappare la riga di comando all’interno della quale si possono inserire le funzioni da visualizzare.

1Geg GNU GPL

3783

Page 50: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3784 Applicazioni matematiche varie

333.1.1 Avvio e interazione normale

Geg viene avviato attraverso l’eseguibile‘geg ’ per il quale non sono previste opzioni speciali, aparte quelle comuni per l’uso di programmi nel sistema grafico X (‘ -geometry ’ , ‘ -display ’ ,ecc.).

geg [ opzioni]

Per disegnare una funzione occorre selezionare il riquadro inferiore, con un clic del mouse, inmodo da fare apparire il cursore per la scrittura; quindi si scrive la funzione (utilizzando solo lavariabilex) e la si disegna premendo[ Invio ] oppure selezionando il pulsante graficoGO! .

Le operazioni necessarie a ottenere il risultato mostrato nella figura333.1sono in pratica quelleseguenti:

f(x) = sin(x) [ Invio ]

f(x) = sin(2x) [ Invio ]

f(x) = sin(2x)+sin(x) [ Invio ]

ottenendo nel riquadro del riepilogo dei comandi impartiti la sequenza seguente:

sin(2x)+sin(x)sin(2x)sin(x)

Per modificare la scala e la zona di grafico visualizzata si può intervenire con i pulsantiI N eOU T ; oppure attraverso il mouse, utilizzando il primo tasto per delimitare (trascinando) la zona

di grafico su cui si vuole porre l’attenzione; oppure in modo ancora più preciso attraverso ilriquadro‘Range’ . Nella figura333.2viene mostrato l’esempio già visto con la scala dell’asse Yespansa.

Figura 333.2. Modifica della scala di visualizzazione.

In particolare, i valori sull’asse X possono essere mostrati anche in radianti, ovvero in unitàP-greco. Per questo basta selezionare il pulsante graficoRA D I A N , mentre per tornare alla scaladecimale basta selezionare il pulsanteDE C I M A L .

Con il terzo tasto del mouse (quello destro) è possibile indicare una zona del grafico all’internodella quale si vuole conoscere l’intersezione della curva con uno degli assi. Per esempio, indi-

Page 51: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Applicazioni matematiche varie 3785

cando una zona vicina al punto- 2 nell’asse X, si ottiene il risultato seguente nel riquadro delriepilogo che mostra due intersezioni riferite ad altrettante funzioni:

Axis Intercepts:-sin(2x)+sin(x), X=-2,0944sin(2x), X=-1,5708

Con il secondo tasto del mouse (quello centrale) è possibile indicare una zona del grafico all’in-terno della quale si vuole conoscere l’intersezione tra le curve. Per esempio, indicando una zonavicina al punto +1 nell’asse X e prima del punto +2 nell’asse Y, si ottiene il risultato seguentenel riquadro del riepilogo, che mostra due intersezioni distinte:

Function Intercepts:-sin(x) and sin(2x)+sin(x) at:X=1,5708, Y=1,0000sin(x) and sin(2x) at:X=1,0472, Y=0,8660

In pratica, le funzionisin(x) e sin(2x)+sin(x)si incontrano nel punto X=1,5708, Y=1,0000,inoltre le funzionisin(x)esin(2x)si incontrano nel punto X=1,0472, Y=0,8660.

333.1.2 Sintassi delle funzioni

Le funzioni che possono essere disegnate daGeg devono rispettare una certa sintassi riepilogatanella guida interna di questo applicativo. In generale si possono usare tutti i tipi di parentesi chesi impiegano normalmente in matematica (da quelle tonde a quelle graffe); si possono usare lenotazioni del tipo 3x, 4x,... dove si sottintende la moltiplicazione della costante numerica perla variabile; la lettera‘x ’ è l’unica variabile di cui si può fare uso; sono riconosciute le costanti‘e’ (intesa come la base del logaritmo naturale) e‘PI ’ (intesa comeP-greco). La tabella333.1riepiloga gli operatori e le funzioni utilizzabili.

Tabella 333.1. Operatori e funzioni di Geg.

Operatori e operandi Descrizioneop1+ op2 Somma i due operandi.op1 - op2 Sottrae dal primo il secondo operando.op1 * op2 Moltiplica i due operandi.costanteop Moltiplica l’operando per il valore della costante.op1 / op2 Divide il primo operando per il secondo.op1^ op2 Elevamento a potenza del primo operando per il secondo.sqrt(op) Radice quadrata.cbrt(op) Radice cubica.abs(op) Valore assoluto.u(op) Restituisce uno se l’operando è positivo, zero se negativo.log(op) Logaritmo in base 10.ln(op) Logaritmo naturale.sin(op) Seno.cos(op) Coseno.tan(op) Tangente.asin(op) Arco-seno.acos(op) Arco-coseno.atan(op) Arco-tangente.sinc(op)sinh(op) Seno iperbolico.cosh(op) Coseno iperbolico.tanh(op) Tangente iperbolica.

Page 52: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3786 Applicazioni matematiche varie

333.2 QCad

QCad2 è un programma applicativo per il CAD professionale in grado di generare e di leggere ilformato DFX.

L’utilizzo di un programma del genere richiede delle conoscenze particolari. Lo scopo dellasezione è soltanto quello di mostrare la disponibilità di questo applicativo.

Figura 333.3. QCad dopo aver caricato uno degli esempi che lo accompagna.

Nella figura333.3si vede in particolare, nella parte sinistra della finestra diQCad, unmenù apulsanti grafici. Quello che appare nella figura è ilmenù principale, dal quale si può selezionareun menù particolare attraverso un clic con il tasto sinistro del mouse. Per ritornare indietro a unlivello di menù precedente, si preme invece il tasto destro del mouse sopra un pulsante graficoqualunque.

Non è il caso di aggiungere altro su questo applicativo, che comunque dispone di una suadocumentazione.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

2QCad GNU GPL

Page 53: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Indice analitico del volumeCAD, 3786Geg, 3783Gnuplot, 3768Octave, 3777QCad, 3786SC, 3750Spreadsheet Calculator, 3750

3787

Page 54: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3788

Page 55: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Appunti di informatica libera 2003.01.01

Volume VIII

Argomenti avanzati e accessori

3789

Page 56: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Appunti Linux

Copyright© 1997-2000 Daniele Giacomini

Appunti di informatica libera

Copyright© 2000-2003 Daniele Giacomini

Via Morganella Est, 21 -- I-31050 Ponzano Veneto (TV) --daniele @ swlibero.org

Le informazioni contenute in questa opera possono essere diffuse e riutilizzate in base alle con-dizioni poste dalla licenza GNU General Public License, come pubblicato dalla Free SoftwareFoundation.

In caso di modifica dell’opera e/o di riutilizzo parziale della stessa, secondo i termini della licen-za, le annotazioni riferite a queste modifiche e i riferimenti all’origine di questa opera, devonorisultare evidenti e apportate secondo modalità appropriate alle caratteristiche dell’opera stes-sa. In nessun caso è consentita la modifica di quanto, in modo evidente, esprime il pensiero,l’opinione o i sentimenti del suo autore.

L’opera è priva di garanzie di qualunque tipo, come spiegato nella stessa licenza GNU GeneralPublic License.

Queste condizioni e questo copyright si applicano all’opera nel suo complesso, salvo ove indicatoespressamente in modo diverso.

The informations contained inside this work can be spread and reused under the terms of theGNU General Public License as published by the Free Software Foundation.

If you modify this work and/or reuse it partially, under the terms of the license, the notices aboutthese changes and the references about the original work, must be evidenced conforming to thework characteristics. IN NO EVENT IS ALLOWED TO MODIFY WHAT ARE CLEARLYTHE THOUGHTS, THE OPINIONS AND/OR THE FEELINGS OF THE AUTHOR.

This work is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; wi-thout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULARPURPOSE. See the GNU General Public License for more details.

These conditions and this copyright apply to the whole work, except where clearly stated in adifferent way.

Una copia della licenza GNU General Public License, versione 2, si trova nell’appendiceA.

A copy of GNU General Public License, version 2, is available in appendixA.

3790

Page 57: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

The main distribution forAppunti di informatica liberais described below. For every distributionchannel the maintainer’s name and address is also reported.

Internet

• direct reading:<http://a2.swlibero.org/>

download:<ftp://a2.swlibero.org/a2/> and<http://a2.swlibero.org/ftp/>

Michele Dalla Silvestra,mds @ swlibero.org

• direct reading:<http://appuntilinux.torino.linux.it/>

download:<ftp://ftp.torino.linux.it/appunti- linux/>

Carlo Perassi,carlo @ linux.it

• direct reading:<http://sansone.crema.unimi.it/linux/a2/HTML/>

download:<http://sansone.crema.unimi.it/linux/a2/>

Fabrizio Zeno Cornelli,zeno @ filibusta.crema.unimi.it

• direct reading:<http://www.pctime.it/servizi/appunti- linux/>

download:<http://www.pctime.it/servizi/appunti- linux/a2- prelievo/>

Franco Lazzero, PCTIME,pctime @ pctime.net

• direct reading:<http://www.a2.prosa.it/>

download:<ftp://ftp.a2.prosa.it/>

Davide Barbieri,paci @ prosa.it

• direct reading:<http://linux.pueste.it/>

download:<http://linux.pueste.it/filearea/AppuntiLinux/>

David Pisa,david @ iglu.cc.uniud.it

• direct reading:<http://www.informasiti.com/Appunti/HTML/>

download:<http://www.informasiti.com/Appunti/>

Claudio Neri, Sincro Consulting,neri.c @ sincroconsulting.com

GNU distributions

• GNU/Linux Debian<http://packages.debian.org/appunti- informatica- libera>

Massimo Dal Zotto,dz @ cs.unitn.it

Italian magazine’s CD-ROM

• inter-punto-net <http://www.interpuntonet.it>

Michele Dalla Silvestra,mds @ swlibero.org

• Internet News<http://inews.tecnet.it>

Francesco Facconi,francescofacconi @ libero.it

Fabio Ferrazzo,fabio.fr @ tiscalinet.it

• Linux Magazine <http://www.edmaster.it/prodotti/linux/ult- riv.html>

Emmanuele Somma,esomma @ ieee.org

La diffusione di questa opera è incoraggiata in base ai termini della licenza.The spread of this work is encouraged under the terms of the license.

3791

Page 58: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Parte lxix Multimedialità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3795

334 Introduzione alla gestione dell’audio e uso del lettore CD . . . . . . . . . . . . . . . . . . . . . . .3797

335 Lettore CD audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3801

336 Gestione della scheda audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3813

337 Audio compresso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3823

338 Audio attraverso la rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3837

339 Filmato digitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3844

340 Masterizzazione di CD audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3846

341 X-CD-Roast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3858

Parte lxx Transizione verso il software libero. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3867

342 File con formati speciali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3868

343 DOSEMU: l’emulatore di hardware DOS compatibile . . . . . . . . . . . . . . . . . . . . . . . . . .3876

344 Servente X su altre piattaforme grafiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3884

345 Applicazioni proprietarie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3887

Parte lxxi Prevenzione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3903

346 Copie di sicurezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3904

347 Emergenza con GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3915

348 nanoLinux II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3923

349 Dischetti di emergenza delle distribuzioni GNU/Linux e di altre fonti . . . . . . . . . . . .3938

Parte lxxii Laboratorio didattico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3943

350 Accorgimenti per usare GNU/Linux nella didattica di massa . . . . . . . . . . . . . . . . . . . . .3944

351 Diskless: elaboratori senza disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3951

Parte lxxiii Informatica gestionale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3963

352 Codici a barre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3964

353 Barcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3979

354 Trasformazione in lettere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3982

Parte lxxiv Annotazioni sulla distribuzione Debian. . . . . . . . . . . . . . . . . . . . . . . . . . . . .3989

355 Configurazione di una distribuzione Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3990

356 Accorgimenti per una distribuzione Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4001

Parte lxxv Annotazioni sulla distribuzione Red Hat. . . . . . . . . . . . . . . . . . . . . . . . . . . . .4013

357 Configurazione di una distribuzione Red Hat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4014

358 Accorgimenti per una distribuzione Red Hat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4029

Parte lxxvi i86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4043

3792

Page 59: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

359 Minix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4044

360 ELKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4064

Parte lxxvii Dos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4067

361 Dos: introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4070

362 Dos: dischi, file system, directory e file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4084

363 Dos: configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4092

364 Dos: script dell’interprete dei comandi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4099

365 Dos: gestione della memoria centrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4105

366 FreeDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4107

367 Progetto GNUish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4110

368 The valuable DOS Freeware page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4112

369 Clean the Clipper 5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4118

370 nanoBase 1997 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4143

371 nanoBase 1997 user manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4149

Parte lxxviii Sistemi operativi speciali. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4279

372 LeeOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4280

Parte lxxix Braille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4283

373 Introduzione al sistema braille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4284

374 Sistemi di interazione per non vedenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4289

Parte lxxx Aspetti umani. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4293

375 Manifesto GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4294

376 Il progetto GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4302

377 Proprietà del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4317

378 L’ipotesi del futuro, nel bene e nel male . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4321

Indice analitico del volume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4323

3793

Page 60: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3794

Page 61: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Parte lxix

Multimedialità334 Introduzione alla gestione dell’audio e uso del lettore CD . . . . . . . . . . . . . . . . . . . . . . .3797

334.1 Kernel per le funzionalità audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3797

334.2 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3800

335 Lettore CD audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3801

335.1 Ascolto di un CD audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3801

335.2 CDDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3806

335.3 Tracce CDDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3807

336 Gestione della scheda audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3813

336.1 Aumix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3813

336.2 Esecuzione e registrazione di brani campionati . . . . . . . . . . . . . . . . . . . . . . . . . . .3816

336.3 Wavtools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3818

336.4 Xwave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3818

336.5 Sox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3819

337 Audio compresso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3823

337.1 Informazioni contenute in un file MP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3823

337.2 LAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3827

337.3 MP3blaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3830

337.4 Xmms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3832

337.5 FreeAmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3834

337.6 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3835

338 Audio attraverso la rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3837

338.1 NetStreamer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3837

338.2 Icecast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3841

339 Filmato digitale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3844

339.1 GTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3844

339.2 PlayMPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3844

339.3 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3845

340 Masterizzazione di CD audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3846

340.1 Cdrdao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3847

340.2 Cdrecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3854

340.3 Wav2cdr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3855

340.4 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3857

3795

Page 62: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

341 X-CD-Roast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3858

341.1 Configurazione e permessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3858

341.2 Masterizzazione dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3861

341.3 Copia di un CD contenente dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3862

341.4 CD contenente tracce audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3863

341.5 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3865

3796

Page 63: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 334

Introduzione alla gestione dell’audio e uso dellettore CDNegli ultimi tempi, l’elaboratore viene visto sempre più spesso come una macchina multimedialetuttofare. In questo documento non c’è ancora una parte dedicata soddisfacentemente ai variaspetti della «multimedialità» con GNU/Linux. Per il momento, qui si raccolgono soprattuttoalcune notizie utili per la gestione delle funzionalità audio con il sistema GNU/Linux.

In generale, per gestire l’«audio» in qualche modo non è strettamente necessario disporre dicomponenti speciali. Per esempio, il lettore CD-ROM può essere gestito in modo indipenden-te per ascoltare i CD musicali, eventualmente anche per estrarre le tracce audio (anche se poimancherebbe la possibilità di ascoltare quanto estratto senza una scheda audio).1

334.1 Kernel per le funzionalità audio

Per includere le funzionalità audio, attraverso dell’hardware apposito, è molto probabile che ilkernel debba essere ricompilato. Tuttavia, il vero problema sta nel fatto che esiste una grandequantità di schede audio, per cui si deve scegliere attentamente l’hardware e per ogni situazionesi possono presentare degli imprevisti.2

La maggior parte del codice scritto per la gestione delle schede audio è fatto per componentiun po’ vecchi, realizzati per ilbus ISA, senza prevedere le funzionalitàPlug & Play. Questocomporta il problema di dover provvedere alla configurazione di tali schede attraverso altrisistemi operativi, oppure per mezzo dei programmi del pacchettoIsapnptools, a cui si accennanel capitolo38.

La parte principale delkernel ha un limite nella sua dimensione massima. Dal momento che disolito la gestione dell’audio non dovrebbe essere una funzionalità vitale, è consigliabile utilizzarei moduli per queste cose.

Per prima cosa si deve abilitare la gestione dell’audio, in modo da permettere l’accesso alle altrevoci di configurazione delkernel relative a questa gestione (29.2.16).

Nella maggior parte dei casi, la gestione della propria scheda audio rientra nel gruppo OSS(Open sound system), di conseguenza dovrebbe essere necessario attivare la voce relativa.Successivamente si dovrà selezionare precisamente il tipo di scheda.

Se si intende realizzare unkernel modulare, come viene suggerito qui, occorre poi fare in modoche i moduli relativi vengano caricati opportunamente, soprattutto specificando i parametri ne-cessari a raggiungere correttamente la scheda. A titolo di esempio, supponendo di disporre di unavecchia schedaSoundBlaster a 8 bit, predisposta per utilizzare l’indirizzo di I/O 22016, il livellodi IRQ 5 e il canale DMA 1, si può caricare il modulo relativo con il comando seguente:

1È bene non farsi illusioni sulle possibilità di un sistema GNU/Linux nei confronti della gestione dell’audio. Il com-portamento può cambiare notevolmente da una scheda audio all’altra e non è detto che le cose migliorino quando laqualità dell’hardware è eccezionale. In generale è possibile ottenere i risultati più buoni con una scheda a 16 bit di quellegestite daidriver «OSS» (esiste una classificazione apposita nei sorgenti delkernel con questa sigla).

2Purtroppo, il fatto che una scheda audio sia «compatibile» con una qualche altra scheda più conosciuta, non èsufficiente per determinare che queste siano effettivamente equivalenti. In generale, a meno che si stia utilizzando unascheda audio «originale» che risulta individuata perfettamente nell’elenco proposto dal programma di configurazionedel kernel, è indispensabile localizzare l’integrato principale e annotare il nome o la sigla che vi appare. Con questainformazione si dovranno leggere i file di documentazione che accompagnano i sorgenti delkernel alla ricerca di notizieprecise al riguardo.

3797

Page 64: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3798 Introduzione alla gestione dell’audio e uso del lettore CD

# modprobe sb irq=5 io=0x220 dma=1

In questo modo vengono caricati automaticamente anche i moduli da cui dipende‘sb.o ’ . Lo sipuò verificare con‘ lsmod ’ :

# lsmod

Per verificare che la scheda sia stata riconosciuta correttamente, si può «interpellare» il file didispositivo‘ /dev/sndstat ’ , ovvero il file virtuale‘ /proc/sound ’ :

# cat /dev/sndstat

# cat /proc/sound

OSS/Free:3.8s2++-971130Load type: Driver loaded as a moduleKernel: Linux dinkel.brot.dg 2.2.5 #4 SMP lun mag 10 15:02:40 CEST 1999 i586

...

In seguito, si potrà sistemare meglio la cosa inserendo nel file‘ /etc/conf.modules ’ le righeseguenti:

alias sound sboptions sb irq=5 io=0x220 dma=1

La documentazione più aggiornata riferita alle schede audio è contenuta nel pacchetto dei sor-genti delkernel. Precisamente si tratta dei file contenuti nella directory‘ /usr/src/linux/

Documentation/sound/ ’ . È importante leggere i file riferiti alla propria scheda audio e ingenerale i file‘ Introduction ’ e ‘README.* ’ .

334.1.1 File di dispositivo

I file di dispositivo relativi alle funzionalità audio sono descritti nel file<file:///usr/src/linux/Do-

cumentation/devices.txt>, assieme a tutti gli altri. Il documento in questione è precisamenteLinuxallocated devices, curato da Peter H. Anvin. Quello che segue è l’estratto significativo di questofile.

[...]13 char PC speaker

0 = /dev/pcmixer Emulates /dev/mixer1 = /dev/pcsp Emulates /dev/dsp (8-bit)4 = /dev/pcaudio Emulates /dev/audio5 = /dev/pcsp16 Emulates /dev/dsp (16-bit)

[...]14 char Sound card

0 = /dev/mixer Mixer control1 = /dev/sequencer Audio sequencer2 = /dev/midi00 First MIDI port3 = /dev/dsp Digital audio4 = /dev/audio Sun-compatible digital audio6 = /dev/sndstat Sound card status information8 = /dev/sequencer2 Sequencer -- alternate device

16 = /dev/mixer1 Second soundcard mixer control17 = /dev/patmgr0 Sequencer patch manager18 = /dev/midi01 Second MIDI port19 = /dev/dsp1 Second soundcard digital audio20 = /dev/audio1 Second soundcard Sun digital audio33 = /dev/patmgr1 Sequencer patch manager34 = /dev/midi02 Third MIDI port

Page 65: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Introduzione alla gestione dell’audio e uso del lettore CD 3799

50 = /dev/midi03 Fourth MIDI port[...]

A titolo di esempio, dovendo creare il dispositivo‘ /dev/audio ’ , si potrebbe usare il comandoseguente:

# mknod /dev/audio c 14 4

Sono importanti anche i permessi di questi file. In generale dovrebbero appartenere all’utente‘ root ’ e al gruppo‘audio ’ , oppure‘sys ’ in sua mancanza. Inoltre, per cominciare potrebberoavere i permessi di lettura e scrittura per tutti gli utenti: 06668.3

Volendo utilizzare il lettore CD-ROM per ascoltare dei CD audio normali, occorre regolare anchei permessi del dispositivo corrispondente al lettore stesso. In pratica, occorre prendersi cura deldispositivo a cui punta ilcollegamento simbolico‘ /dev/cdrom ’ . Questo dispositivo, dal mo-mento che è riferito a un’unità in sola lettura, potrebbe essere accessibile in lettura e scrittura aqualunque utente (a meno che si voglia controllare per qualche motivo). Per questo, di solito siattribuiscono i permessi 06668.

# chmod 0666 /dev/cdrom

Quando l’elaboratore che dispone di scheda audio è collegato a una rete, potrebbero porsidei problemi di sicurezza riguardo ai permessi per gli utenti comuni sui file di dispositivo diquesta. Infatti, un utente che può accedere all’elaboratore, avrebbe la possibilità di attivarela scheda audio e ascoltare attraverso il microfono, ammesso che questo sia collegato. Nellostesso modo potrebbe attivare il canale della linea in ingresso e così anche tutte le altre fontidisponibili. Pertanto, generalmente, questi file di dispositivo sono sprovvisti del permesso dilettura per gli utenti diversi dal proprietario e dal gruppo di questi file.

334.1.2 # sndconfig

La distribuzioneRed Hat ha preparato un programma che facilita la configurazione dei moduliper la gestione delle funzionalità audio, provvedendo eventualmente anche a sistemare la confi-gurazionePlug & Play delle schede ISA. Il programma è molto utile, soprattutto perché è in gradodi predisporre il file‘ /etc/conf.modules ’ correttamente, inoltre, ammesso che la scansionePlug & Play si concluda senza incidenti, si ottiene il file di configurazione‘ /etc/isapnp.conf ’corretto (e completo) per la propria scheda audio ISAPlug & Play.4

sndconfig [ --noprobe ] [ --noautoconfig ]

Se‘sndconfig ’ viene utilizzato senza opzioni, si prepara immediatamente a eseguire una scan-sione dell’hardwarePlug & Play. Eventualmente, questo può portare anche al blocco del sistemaoperativo; pertanto conviene utilizzare questa verifica solo quando l’elaboratore non sta svolgen-do alcuna attività importante (meglio ancora se illivello di esecuzione è quello singolo). È moltoimportante chenon venga avviata questa scansione se non c’è alcuna scheda ISA di tipoPlug &Play.

L’opzione ‘ --noprobe ’ serve per evitare che venga eseguita una scansionePlug & Play. Così sipotrà selezionare in modo guidato il tipo di scheda audio e gli indirizzi necessari a gestirla.

L’opzione ‘ --noautoconfig ’ serve per evitare che venga configurata automaticamente unascheda audioPlug & Play. In questo modo si lascia all’utilizzatore la scelta dei parametri diconfigurazione relativi.

3In seguito è il caso di ridurre i permessi, in modo di abilitare l’accesso alle funzionalità audio solo ad alcuni utenti.4‘sndconfig ’ dovrebbe funzionare anche nelle distribuzioni diverse dallaRed Hat.

Page 66: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3800 Introduzione alla gestione dell’audio e uso del lettore CD

La figura334.1mostra la maschera di‘sndconfig ’ con la quale si indicano le caratteristichedi una vecchia scheda audioSoundBlaster (configurata attraverso ponticelli), in modo che vengagenerato il file‘ /etc/conf.modules ’ più adatto (in questo caso, il file‘ /etc/isapnp.conf ’non serve perché non si tratta di una schedaPlug & Play).

Figura 334.1. Configurazione manuale di una vecchia scheda di cui si conosce laconfigurazione hardware.

.---------------| Card Settings |----------------.| || Please adjust the settings below to match the || dip switch settings on your sound card. || || I/O PORT IRQ DMA || || >0x220< 3 >1< || 0x240 >5< || 7 || 9 || || .----. .--------. || | Ok | | Cancel | || ‘----’ ‘--------’ || || |‘------------------------------------------------’

Per comprendere meglio il funzionamento di questo programma, ma soprattutto per capire comeci si deve comportare con la configurazione del file‘ /etc/isapnp.conf ’ , è opportuno dareun’occhiata al capitolo38, in particolare per quello che riguarda il pacchettoIsapnptools.

334.2 Riferimenti

• Jeff Tranter,The Linux Sound HOWTO

<http://www.linux.org/docs/ldp/howto/HOWTO- INDEX/howtos.html>

• Documentazione delkernel

<file:///usr/src/linux/Documentation/sound/>

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 67: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 335Lettore CD audioIndipendentemente dal fatto che sia disponibile una scheda audio, è possibile ascoltare dei CDmusicali attraverso il lettore CD-ROM, che dovrebbe essere provvisto di un’uscita autonoma (unapresa stereo per cuffia sulla parte frontale dell’unità). Naturalmente, se è disponibile la schedaaudio, il lettore CD-ROM potrebbe esservi stato collegato attraverso un cavetto schermato, inmodo da poter utilizzare le funzionalità della stessa scheda per rielaborare il suono.

335.1 Ascolto di un CD audio

Il software che si occupa di mettere in funzione il lettore CD-ROM come lettore di CD audio,interviene solo sul dispositivo‘ /dev/cdrom ’ (o meglio, sul dispositivo a cui punta questocol-legamento simbolico, che come già spiegato deve avere i permessi opportuni). Il segnale audiopuò essere prelevato direttamente dal lettore CD, oppure può essere gestito attraverso la schedaaudio per mezzo di altro software.

Se la scheda audio non è di ottima qualità, questa potrebbe generare un rumore di fondo. Diconseguenza, per essere certi di prelevare il segnale più pulito possibile, è necessario utilizzarel’uscita del lettore CD stesso.

Il software che permette l’ascolto di un CD audio, non richiede di tenere sotto controllo il lettore,per cui potrebbe essere costituito anche da un semplice programma a riga di comando, come nelcaso di‘dcd ’ .

I programmi per l’ascolto di CD audio potrebbero comportarsi in maniera differente tra diloro, tanto che non va esclusa la presenza di errori che impediscono la lettura di CD che incondizioni normali risultano realizzati correttamente. In altri termini, se per qualche ragionenon si riesce a leggere un CD audio attraverso l’uso di un certo programma, conviene tentaredi utilizzarne altri, prima di arrivare alla conclusione che il CD o il lettore possano esseredifettosi.

Molti programmi per l’ascolto di CD musicali, abbinano anche la funzionalità di interrogazionedellabase di datiCDDB. Ciò viene descritto nella sezione335.2.

335.1.1 Dcd

Dcd 1 è unprogramma di servizio molto semplice, composto dall’eseguibile‘dcd ’ , che segue lafilosofia dei comandi a riga di comando, con tutti i vantaggi che questo può dare. In pratica, senzaimpegnare una console virtuale o un terminale, manda al lettore i comandi richiesti di volta involta.

dcd [ n_traccia...]dcd stop | restart | next | prev | info | dir | loop [ n...]

La sintassi è molto semplice: se si indica un numeron si intende avviare l’esecuzione dellatraccia n-esima corrispondente; se si indicano più numeri si intende ottenere l’esecuzione diquelle tracce nella sequenza indicata; se si indica un’altra parola chiave, si vuole impartire ilcomando corrispondente:

1Dcd GNU GPL

3801

Page 68: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3802 Lettore CD audio

• ‘stop ’ ferma l’esecuzione (se non funziona basta selezionare la prima traccia e quindi usareil comando‘prev ’);

• ‘ restart ’ riavvia la traccia che si sta ascoltando;

• ‘next ’ passa alla prossima traccia;

• ‘prev ’ passa alla traccia precedente;

• ‘ info ’ restituisce alcune informazioni sulla traccia attuale;

• ‘dir ’ elenca le tracce contenute nel CD;

• ‘ loop [ n...] ’ esegue la sequenza ripetendo quando raggiunge la fine della sequenza (in talcaso‘dcd ’ impegna lashell).

Alcuni esempi

$ dcd

Avvia l’esecuzione del primo brano del CD, proseguendo fino all’ultimo.

$ dcd 1

Esattamente come nell’esempio precedente.

$ dcd 1 3 5 7

Richiede l’esecuzione dei brani numero uno, tre, cinque e sette, in sequenza.

$ dcd next

Passa all’esecuzione del brano successivo.

335.1.2 TCD

TCD 2 è un pacchetto composto da due programmi: uno per lo schermo a caratteri e uno per il si-stema grafico X. L’utilizzo è intuitivo e non occorrono molte spiegazioni. È importante osservareche il controllo del volume riguarda il lettore CD e non la scheda audio. In altri termini, si trattadel volume del segnale che viene generato dal lettore CD: sia quello che si ottiene attraversol’uscita sul pannello frontale dell’unità, sia quello che viene inviato alla scheda audio (ammessoche esista) per mezzo del cavetto schermato interno all’elaboratore.

La figura335.1mostra il funzionamento diTCD nella versione per terminali a caratteri, mentrela figura335.2mostra la versione per il sistema grafico X3

2TCD GNU GPL3TCD si dovrebbe trovare incluso anche nella raccolta degli applicativi diGnome; in tal caso, l’aspetto della versione

grafica è un po’ diverso rispetto a quanto si vede nelle figure riportate qui.

Page 69: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Lettore CD audio 3803

Figura 335.1. Esempio del funzionamento di TCD nella versione per terminali acaratteri.

.-TCD v2.0, by Tim Gerla------Control Panel------------------------------------.| | || Status: Paused | [P] - Start playing. [-] - Previous track. || Track: 10 of 12 | [U] - Pause or restart. [+] - Ne|t track. || Time: 03:36 | [E] - Eject CDROM. [G] - Go to track #. || CD: 55:17 | [S] - Stop playing. []] - Skip ahead. || | [[] - Skip back. ||-Track List----------------| [M] - Change play mode. < > - Adjust volume. || | Current Mode: Normal Current Volume: 10% || 01a - 06:10 | || 02a - 06:21 | || 03a - 03:22 | || 04a - 04:06 | || 05a - 05:51 | || 06a - 08:05 | [T] - Edit track database. || 07a - 04:38 | [D] - Download CDDB data. || 08a - 05:10 | || 09a - 07:55 | || 10a - 08:29 | [Q] - Quit. || 11a - 04:54 | || 12a - 06:37 |-Disc Information---------------------------------|| | Length: 71:40 || | Title: Unknown / Unknown || | Track: Track 10 |‘------------------------------------------------------------------------------’

Figura 335.2. Esempio del funzionamento di TCD nella versione grafica.

Gli eseguibili sono rispettivamente‘ tcd ’ e ‘gtcd ’ . La lettera «g» di‘gtcd ’ sta per GTK+, ovverole librerie grafiche utilizzate.

Una cosa interessante diTCD sta nel fatto che più copie dei suoi eseguibili possono funzionarein modo concorrenziale, risultando tutte perfettamente sincronizzate, a parte qualche difficoltànella regolazione del volume.

335.1.3 Cdcd

Cdcd4 è un altro programma per l’ascolto di CD musicali che consente un funzionamento a rigadi comando, oppure in modo interattivo, ma sempre attraverso una console. La prima volta cheviene avviato da ogni utente, richiede alcune informazioni elementari di configurazione, con cuicrea il file ‘~/.cdcdrc ’ :

$ cdcd [ Invio ]

4Cdcd GNU GPL

Page 70: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3804 Lettore CD audio

La prima cosa che viene richiesta è il file di dispositivo abbinato al lettore CD:

Welcome to cdcd 0.5.0.

You will now be asked a series of questions which will configurecdcd for your platform. The default answers are givenin brackets.

What is the name of your CD-ROM device? [/dev/cdrom]

Se esiste ilcollegamento simbolico‘ /dev/cdrom ’ che punta al dispositivo corretto, come già èstato suggerito, basta confermare con la pressione del tasto[ Invio ].

[ Invio ]

Successivamente,Cdcd cerca di ottenere le informazioni necessarie ad accedere alla rete, alloscopo di contattare unabase di datiCDDB, oppure qualcosa di equivalente.

Are you connected to a network (y/n)? [y]

[ Invio ]

There are two methods of retrieving CD track information, CDDB and CD Index.Using the CD Index will be somewhat faster, but does not yet facilitate inexactmatching. Both methods may be used through HTTP proxy servers.

Choose a method:1) CDDB2) CD Index

Which method? [1]

Avendo confermato la disponibilità di un accesso alla rete, viene proposto di accedere a unabasedi dati CDDB, oppure a un altro tipo di indice. La scelta più comune è proprio labase di datiCDDB, come suggerito dal programma stesso.

[ Invio ]

Use a HTTP proxy server? [n]

In questo caso si suppone che non sia necessario utilizzare unproxy, per cui si conferma laproposta del programma.

[ Invio ]

cdcd version 0.5.0, Copyright (C)1998-99 Tony ArcieriDistributed under the GNU General Public License. See file COPYING for details.Built with libcdaudio 0.99.1Enter ? for help.cdcd>

Termina così la configurazione e il programma si mette a funzionare in una modalità interattiva,in attesa di comandi, dove l’invito è la stringa‘cdcd> ’ . Per terminare basta dare il comando‘quit ’ .

cdcd> quit [ Invio ]

È già stato specificato cheCdcd può funzionare sia in modo non interattivo, a riga di comando,sia in modo interattivo. In pratica, l’eseguibile‘cdcd ’ può essere avviato indicando un comandocome argomento, per cui eseguirà la richiesta e terminerà di funzionare, oppure può essere avvia-to senza argomenti e in tal caso mostrerà uninvito rimanendo in attesa di comandi. Naturalmente,i comandi in questione sono gli stessi, sia quando usati come argomento della riga di comando,sia quando usati nel funzionamento interattivo.

Page 71: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Lettore CD audio 3805

cdcd [ comando]

Si ottiene l’elenco dei comandi disponibili con il comando‘help ’ , mentre per conoscere lasintassi precisa di ogni comando basta il comando‘help nome_comando’ . Per esempio:

$ cdcd help [ Invio ]

cdcd commands:play stop open close pause resume ff rew sitesnext prev getvol setvol status rndplay slot list submitinfo tracks edit ext refresh device verbose quit access

For more specific help, type ’help <command>’

$ cdcd help play [ Invio ]

Usage: play [starttrackname/track #] [endtrackname/track #] [min:sec]

By default, play starts at the beginning of the CD. You may specify tracksusing either the number of the track or a section of the track’s name. Thedisc will play from where it starts to the end of the disc or a track youspecify. You may also specify a position within the first track to start.

La tabella335.1descrive brevemente i comandi principali diCdcd.

Tabella 335.1. Comandi principali di Alcune opzioni della riga di comando di Cdcd.

Comando Descrizioneplay Avvia l’esecuzione, dall’inizio o da una certa traccia.open, eject Termina l’esecuzione ed espelle il CD dal lettore.pause Mette in pausa l’esecuzione del CD.resume Riprende l’esecuzione dopo una pausa.ff, rew Fa avanzare o retrocedere rapidamente nell’ambito del brano che si sta ascoltando.next, prev Fa avanzare alla traccia successiva o retrocedere alla traccia precedente.status Visualizza la situazione del CD.info, tracks, ext Visualizza informazioni ottenibili attraversoCDDB.quit Termina il funzionamento diCdcd quando questo funzionava in modalità interattiva.

335.1.4 Gcd

Gcd5 è un programma grafico per l’ascolto di CD musicali. Può funzionare in modo molto pocoappariscente, come si vede nella figura335.3, oppure anche come si vede nella figura335.4.All’avvio cerca normalmente di contattare unabase di datiCDDB e se la connessione fallisce, lacosa viene segnalata con un messaggio di errore in un riquadro separato.

Figura 335.3. Pannello normale di Gcd.

5Gcd GNU GPL

Page 72: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3806 Lettore CD audio

Figura 335.4. Pannello di Gcd con il dettaglio delle tracce.

Gcd si avvia con l’eseguibile‘gcd ’ e oltre a questo non c’è molto da aggiungere, dal momentoche il suo funzionamento interattivo è molto intuitivo, guidato anche da etichette a scomparsache descrivono il significato dei pulsanti grafici che appaiono sul pannellino di controllo.

335.2 CDDB

CDDB è unabase di dati dei CD musicali offerta attraverso la rete. A fianco di serviziCDDBproprietari, il cui accesso può essere sottoposto a delle condizioni, esiste anche un servizioCDDBpubblico, corrispondente aFreedb.org (<http://www.freedb.org>).

Il protocollo usato per l’accesso a unabase di datiCDDB è denominato CDDBP e utilizza laporta 8880. Con questo protocollo si può interrogare il servizio utilizzando i pochi dati che for-nisce il CD sui brani che contiene, oppure si possono fornire le informazioni conosciute sul CD,mettendole a disposizione di tutti. Molti programmi per l’ascolto di CD audio sono organizzatiper l’interrogazione automatica di questo servizio, allo scopo di fornire tutte le notizie conosciutesu ciò che si sta ascoltando.

Alcuni sistemi grafici integrati, comeGnome, utilizzano un programmacliente che si occupa dieseguire le interrogazioni per conto dei programmi che possono averne bisogno, comeTCD (nellaversione perGnome). Nel caso diGnome si tratta precisamente di‘cddbslave ’ , il quale poimemorizza le informazioni nella directory‘~/.cddbslave/ ’ , su più file, mentre altri programmipotrebbero salvare le loro informazioni in file con nomi simili, per esempio‘~/.cddb ’ .

Tanto per fare un esempio di come possa funzionare il meccanismo, si fa riferimento aTCD nellaversione perGnome. Sul pannello frontale, tra le varie icone se ne trova una che permette di acce-dere alla finestra di inserimento e modifica delle informazioni sulle tracce. Queste informazionisono memorizzate naturalmente nella propriadirectory personale. Si vede questa finestra nella

Page 73: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Lettore CD audio 3807

figura335.5. In questo caso appaiono anche i titoli dei vari brani, se così non fosse, si potrebbeinterrogare labase di datiCDDB, come suggerisce il pulsante grafico nella parte bassa.

Figura 335.5. Finestra di accesso alle informazioni sulle tracce del CD musicale.

Il servizio offerto da Freedb.org avviene per mezzo di diversinodi, in particolarefreedb.freedb.org . Tuttavia, il software che si utilizza dovrebbe essere già predispostoper interrogare correttamente questi indirizzi.

335.3 Tracce CDDA

Le tracce audio di cui si compone un CD musicale sono in pratica dei file audio in un formatoparticolare. Anche se con qualche difficoltà, è possibile estrarre queste tracce e, teoricamente, sipossono ricomporre masterizzando un nuovo CD.

È importante ricordare che l’acquisto di un CD non dà implicitamente il diritto di farne quelloche si vuole. In generale si ottiene solo il diritto di ascoltarlo per sé; mentre altre operazionicome la copia, l’esecuzione in pubblico e la trasmissione, sono attività che devono essereautorizzate espressamente da chi detiene i diritti di quella pubblicazione sonora, senza contarel’eventuale presenza di una tassa.

Page 74: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3808 Lettore CD audio

Qui viene mostrato a titolo didattico il modo in cui le tracce audio di un CD possono essereestratte. Tuttavia, utilizzare questa tecnica per memorizzare tali brani in un’unità di memoriz-zazione qualunque, vuol dire farne una «copia», ovvero un’azione che normalmente è vietatada chi possiede i diritti sulla pubblicazione relativa.

L’estrazione delle tracce da un CD non è necessariamente un’operazione illegale, anche se laprima idea che viene in mente a chiunque è quella di fare così delle copie digitali perfette. In certicasi può essere l’unico modo per riuscire ad ascoltare un CD attraverso un lettore in cui l’uscitaaudio non funziona; in ultima analisi potrebbe essere il modo per realizzare un sistema audiocompletamente digitale fino all’ultima fase del processo di elaborazione che si vuole attuare.

In generale, per estrarre le tracce audio da un CD si utilizzaCdda2wav,Cdparanoia oGrip. Ilproblema più difficile dell’estrazione dei brani è quello di riuscire a individuarne correttamentel’inizio e la fine, oltre alla necessità di seguire correttamente la traccia senza salti.

335.3.1 Dispositivi

Quando si utilizzano programmi che accedono direttamente alle tracce audio del lettore CD, ènecessario che i file di dispositivo abbiano i permessi necessari, a meno che si voglia utilizzarlisolo in qualità di utente‘ root ’ .

Di solito si fa riferimento a‘ /dev/cdrom ’ comecollegamento simbolico al file di dispositivocorretto per il tipo di lettore di cui si dispone. Dal momento che gli applicativi in questionedevono poter interagire con il lettore, nel caso questo sia di tipo SCSI è necessario prendersicura anche del «dispositivo generico», in pratica di uno che corrisponde al modello‘ /dev/sg n’ .Alcune distribuzioni GNU/Linux utilizzano una forma non standard per i nomi di questi file didispositivo:‘ /dev/sga ’ , ‘ /dev/sgb ’ ,... In questi casi, è necessario creare anche i file corretti, oabbinare a questi deicollegamenti simbolici opportuni. In generale, da quanto si legge nelLinuxallocated devices, documento mantenuto da Peter H. Anvin e corrispondente al file<file:///usr/src/

linux/Documentation/devices.txt>:

[...]21 char Generic SCSI access

0 = /dev/sg0 First generic SCSI device1 = /dev/sg1 Second generic SCSI device

...

Most distributions name these /dev/sga, /dev/sgb...;this sets an unnecessary limit of 26 SCSI devices inthe system and is counter to standard Linuxdevice-naming practice.

[...]

Naturalmente,‘ /dev/sg n’ si abbina a‘ /dev/sr n’ o ‘ /dev/scd n’ . Volendo creare per esempioil primo di questa serie, si può utilizzare il comando seguente:

# mknod /dev/sg0 c 21 0

Il dispositivo generico deve avere i permessi di scrittura se si vuole permettere a questi applicatividi funzionare.

Page 75: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Lettore CD audio 3809

335.3.2 Cdparanoia

Cdparanoia6 è in grado di estrarre le tracce audio di un CD in modo digitale, senza passare perl’elaborazione della scheda audio. Può generare diversi tipi di formati, tuttavia al principianteconviene un formato con intestazione, come il WAV-RIFF. Si compone di un eseguibile unico,‘cdparanoia ’ :

cdparanoia [ opzioni] intervallo_di_esecuzione[ file_da_generare]

La caratteristica più importante di questo applicativo sta nel fatto che è in grado di leggere erileggere più volte le tracce audio in modo da escludere errori, attraverso il confronto delle letturesuccessive.

A parte il caso in cui venga utilizzata l’opzione‘ -B ’ , è obbligatorio specificare l’intervallo ditracce e di tempo di registrazione. Semplificando al massimo, si tratta dell’intervallo di tracceespresso semplicemente nella formam- n, dovem è la traccia iniziale en quella finale. Nel-la pagina di manualecdparanoia(1)si può leggere una spiegazione un po’ più dettagliata chepermette di individuare meglio la porzione desiderata.

Alcune opzioni

-w | --output-wav

Genera un formato WAV-RIFF.

-B | --batch

Genera una serie di file, uno per ogni traccia.

-Z | --disable-paranoia

Disabilita il processo di rilettura e correzione degli errori.

Esempi

$ cdparanoia -w 1 mio_file.wav

Crea il file ‘mio_file.wav ’ ottenuto dalla prima traccia del CD contenuto nel lettore.

$ cdparanoia -w 1-2 mio_file.wav

Crea il file ‘mio_file.wav ’ ottenuto dalle prime due tracce del CD contenuto nel lettore.

$ cdparanoia -w -B

Crea una serie di file, nella directory corrente, uno per ogni traccia del CD contenuto nellettore. I file sono in formato WAV-RIFF.

$ cdparanoia -w 1 - | sox - .wav -t ossdsp /dev/dsp

Legge la prima traccia audio del CD contenuto nel lettore e la passa a un altro programma,attraverso unapipeline. Quel programma si occupa di convertire il formato in modo dapoterlo inviare al dispositivo‘ /dev/dsp ’ che in pratica corrisponde a un ingresso digitaledella scheda audio (viene mostrato nel prossimo capitolo).

A parte la qualità della riproduzione che si ottiene, eventualmente anche pessima, questoesempio mostra in che modo si può prelevare una traccia audio per rielaborarla primadell’ascolto, senza passare per l’uscita audio del CD.

6Cdparanoia GNU GPL

Page 76: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3810 Lettore CD audio

335.3.3 Grip

Grip 7 è un altro programma in grado di estrarre tracce audio da un CD, pilotando eventualmenteanche la conversione in formato MP3. Eventualmente può funzionare come lettore CD puro esemplice; in tal caso, si comporta esattamente comeGcd, che in effetti è una versione ridottadello stessoGrip.

Anche Grip è quindi un programma grafico interattivo, come lo èGcd, ma in questo caso èmolto importante la configurazione, che viene memorizzata nel file‘~/.grip ’ . Due aspetti moltoimportanti della configurazione riguardano il modo in cui vengono prelevate le tracce (figura335.6) e la conversione eventuale in MP3 (figura335.7).

Figura 335.6. Configurazione del prelievo delle tracce audio attraverso Grip.

7Grip GNU GPL

Page 77: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Lettore CD audio 3811

Figura 335.7. Configurazione della conversione delle tracce prelevate in MP3.

Il prelievo normale può avvenire direttamente attraversoGrip stesso, senza l’ausilio di altri pro-grammi, ma in particolare viene definita in questa fase la collocazione dei file ottenuti (che sonodi tipo WAV-RIFF). Nella figura335.6si vede in particolare che i file vengono definiti in basealla stringa‘~/mp3/%a/%d/%n.wav ’ . Evidentemente,‘%a’ , ‘%d’ , e ‘%n’ sono dei metacaratteriche rappresentano rispettivamente: il nome dell’artista, il nome del disco e la traccia completadi numero sequenziale. In pratica, se non è stato ottenuto il nome dell’artista e del CD, la primatraccia corrisponde al file‘~/mp3/noartist/unknown_disk/track_1.wav ’ .

La conversione in MP3 delle tracce richiede un programma apposito.Grip è in grado di uti-lizzarne diversi, in particolareLAME (capitolo 337). Nella configurazione (figura335.7) deveessere indicato il tipo di programma usato per la conversione, il percorso assoluto dell’esegui-bile e le opzioni da dargli; inoltre, come nella situazione precedente deve essere indicato in chemodo comporre il nome del file. Anche nella riga di comando del programma di conversionevengono indicati dei metacaratteri; nella figura si vede l’uso di‘%b’ , ‘%f’ e ‘%o’ che rappresenta-no rispettivamente il settore di inizio da cui iniziare la conversione, il nome del file WAV-RIFFda convertire e il nome del file MP3 da generare. Naturalmente, per leggere l’elenco completodi questi metacaratteri, soprattutto allo scopo di comprendere il significato della configurazionepredefinita, è sufficiente leggere lapagina di manualegrip(1).

Dopo la configurazione, per passare al prelievo occorre prima selezionare le tracce desiderate,come si vede nella figura335.8, utilizzando il mouse, premendo il terzo tasto (quello destro).Successivamente si può passare al prelievo, come si vede nella figura335.9, dove si può sceglierese prelevare semplicemente le tracce, generando file di tipo WAV-RIFF, con il pulsante graficoRI P O N L Y , oppure si può ottenere direttamente la conversione in formato MP3, con il pulsante

grafico RI P +EN C O D E.

Page 78: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3812 Lettore CD audio

Figura 335.8. Selezione delle tracce.

Figura 335.9. Prelievo delle tracce.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 79: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 336

Gestione della scheda audioLa scheda audio essenziale è semplicemente un mixer audio comprendente diversi ingressi e unao più uscite. I dispositivi più importanti relativi alla scheda audio sono‘ /dev/audio ’ e ‘ /dev/

dsp ’ . In particolare, il primo permette di trasmettere alla scheda dei file in formato digitaleSun,ovvero quelli che normalmente hanno l’estensione‘ .au ’ . Volendo gestire l’audio in modo diret-to, attraverso questo file di dispositivo, occorre convertire i file audio nel formatoSun (questosi ottiene di solito attraverso l’applicativoSox). Nello stesso modo, leggendo da questo file didispositivo, si ottiene un file in formato digitaleSun del segnale gestito o generato dalla schedaaudio. In pratica:

$ cat mio_file.au > /dev/audio

questo comando serve a eseguire il file‘mio_file.au ’ , mentre il prossimo

$ dd if=/dev/audio of=registratore.au bs=8k count=8

serve a registrare per otto secondi (ogni secondo è un blocco di 8 Kibyte) generando il file‘ registratore.au ’ .

336.1 Aumix

Aumix 1 è un applicativo per la gestione delle funzionalità di miscelazione e di equalizzazionedella scheda audio. Può essere usato in modo interattivo, richiedendo in questo caso lo schermodi un terminale a caratteri, oppure direttamente attraverso le opzioni della riga di comando. Inparticolare, nella modalità interattiva mostra solo i canali audio che possono essere controllatieffettivamente.

Il funzionamento diAumix e degli altri programmi analoghi non è perfetto. Alle volte possonoapparire dei controlli che di fatto non producono alcun risultato. Purtroppo questo dipendedalla qualità del codice scritto nelkernel per la gestione della scheda audio di cui si dispone.

336.1.1 Funzionamento interattivo di Aumix

La figura336.1mostra il funzionamento interattivo diAumix, che si ottiene avviando l’eseguibile‘aumix ’ senza indicare alcun argomento. In particolare si fa riferimento a una scheda audioSoundBlaster standard a 16 bit.

Figura 336.1. Esempio del funzionamento di Aumix in modalità interattiva.

aumix ++++++++++++++++++++++++++++++O+++<Vol ++++++++++++O+++++++++++++++++++++++++++++++++++++++++++O+++ Bass ++++++++++++O+++++++++++++

Quit ++++++++++++++++++++++++++++++O+++ Trebl ++++++++++++O+++++++++++++Load PO+++++++++++++++++++++++++++++++++ Synth ++++++++++++O+++++++++++++Save ++++++++++++++++++++++++++++++O+++ Pcm ++++++++++++O+++++++++++++Keys O+++++++++++++++++++++++++++++++++ SpkrMute PO+++++++++++++++++++++++++++++++++ Line ++++++++++++O+++++++++++++

RO+++++++++++++++++++++++++++++++++ MicPO+++++++++++++++++++++++++++++++++ CD ++++++++++++O+++++++++++++O+++++++++++++++++++++++++++++++++ MixO+++++++++++++++++++++++++++++++++ IGain ++++++++++++O+++++++++++++++++++++++++++++++O+++++++++++++++ OGain ++++++++++++O+++++++++++++0 Level 100 L Balance R

1Aumix GNU GPL

3813

Page 80: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3814 Gestione della scheda audio

Tanto per rendersi conto di questa variabilità nell’apparenza diAumix, si può osservare anche lafigura336.2che mostra cosa accade con una vecchia schedaSoundBlaster a 8 bit.

Figura 336.2. Aumix con una vecchia scheda a 8 bit.

aumix ++++++++++++++++++++++++++++++O+++<Vol ++++++++++++O+++++++++++++PO+++++++++++++++++++++++++++++++++ Synth ++++++++++++O+++++++++++++

Quit ++++++++++++++++++++++++++++++O+++ Pcm ++++++++++++O+++++++++++++Load PO+++++++++++++++++++++++++++++++++ Line ++++++++++++O+++++++++++++Save RO+++++++++++++++++++++++++++++++++ MicKeys PO+++++++++++++++++++++++++++++++++ CD ++++++++++++O+++++++++++++Mute 0 Level 100 L Balance R

I canali stereofonici hanno anche la possibilità di essere bilanciati, come si vede intuitivamen-te dalle figura. Per selezionare un canale si possono utilizzare i tasti[ freccia su] e [ freccia giù];per passare alla regolazione del bilanciamento si può utilizzare il tasto di tabulazione,[ Tab], co-sì come lo si può usare per tornare indietro all’elenco dei canali. Infine i tasti[ freccia sinistra] e[ freccia destra] permettono di regolare il volume del canale o di cambiare il bilanciamento, a se-conda di dove si trova il cursore. È interessante notare che anche il mouse funziona, se gestitoattraverso il demone‘gpm’ .

A fianco di alcuni livelli di volume appare la lettera «P», oppure la lettera «R». La prima staperplay, mentre la seconda sta perrecord. In pratica, i canali contrassegnati con la lettera «P»rappresentano un segnale in ingresso nel mixer audio, diretti semplicemente all’amplificatorefinale (le uscite normali della scheda audio). Invece, i canali contrassegnati con la lettera «R»,oltre che essere diretti all’amplificatore finale, sono utilizzati per il campionamento del segnale(di solito uno soltanto) ed è ciò che si riesce a leggere dal dispositivo‘ /dev/audio ’ .

Generalmente è solo il canale del microfono ad avere la sigla «R» e questo per ovvie ragioni.Tuttavia, è possibile modificare il comportamento di alcuni canali utilizzando la[ barra spaziatrice],oppure il mouse (basta fare un clic sulla lettera per scambiarne il valore).

Tabella 336.1. Alcuni comandi utili per l’uso di Aumix in modo interattivo.

Tastiera Descrizionepagina su, freccia su Passa al canale precedente.pagina giù, freccia giù Passa al canale successivo.Tab, Invio, >, < Scambia tra la regolazione del livello e del bilanciamento.+, freccia destra Sposta il cursore a destra.- , freccia sinistra Sposta il cursore a sinistra.| Centra il bilanciamento.Spazio Scambia la modalità di registrazione e di esecuzione.S, s Salva le impostazioni nel file di configurazione.L, l Carica le impostazioni dal file di configurazione.K, k Mostra un guida sull’uso della tastiera.M, m Azzera o ripristina il volume generale.Esc, Q, q Termina il funzionamento.

336.1.2 Avvio di Aumix

aumix [ opzioni_di_canale] [ altre_opzioni]

L’eseguibile ‘aumix ’ è tutto ciò che compone l’applicativo omonimo. In modo particolare, leopzioni possono servire per regolare il volume di un certo canale (purché questo abbia una corri-spondenza con la scheda audio disponibile effettivamente), oppure per conoscere il livello attualeo ancora per scambiare le modalità «R» (record) e «P» (play).

Page 81: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Gestione della scheda audio 3815

Alcune opzioni di canale

-v percentuale| q[ uery ]

Definisce o richiede di conoscere il valore del volume generale, espresso in formapercentuale rispetto al massimo.

-s percentuale| q[ uery ]

Definisce o richiede di conoscere il valore del volume del sintetizzatore, espresso in formapercentuale rispetto al massimo.

-w percentuale| q[ uery ]

Definisce o richiede di conoscere il valore del volume di una riproduzione digitale (PCM),espresso in forma percentuale rispetto al massimo. Si tratta del volume dell’esecuzione diun brano contenuto in un file.

-l percentuale| q[ uery ]| R| P

Definisce o richiede di conoscere il valore del volume della linea di ingresso esterna, espres-so in forma percentuale rispetto al massimo. Se si utilizza la lettere‘R’ o la lettera‘P’ , siintende passare alla modalità di registrazione o a quella di esecuzione.

-m percentuale| q[ uery ]| R| P

Definisce o richiede di conoscere il valore del volume del microfono, espresso in formapercentuale rispetto al massimo. Se si utilizza la lettere‘R’ o la lettera‘P’ , si intende passarealla modalità di registrazione o a quella di esecuzione.

-c percentuale| q[ uery ]| R| P

Definisce o richiede di conoscere il valore del volume del canale relativo al lettore CD,espresso in forma percentuale rispetto al massimo. Se si utilizza la lettere‘R’ o la lettera‘P’ , si intende passare alla modalità di registrazione o a quella di esecuzione.

Altre opzioni generali

-L

Carica le impostazioni dal file di configurazione‘~/.aumixrc ’ o in sua mancanza dal file‘ /etc/aumixrc ’ .

-q

Interroga lo stato di tutti i canali esistenti e mostra il risultato attraverso lostandard output.

-S

Salva le impostazioni nel file‘~/.aumixrc ’ .

Esempi

$ aumix -v 70

Regola il volume generale al 70 %.

$ aumix -m 0 -l R

Regola il volume del canale microfonico a zero e indica la linea di ingresso come canale inregistrazione.

Page 82: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3816 Gestione della scheda audio

336.1.3 Configurazione

La configurazione diAumix consiste semplicemente dei file‘~/.aumixrc ’ . Il file di configura-zione personale viene creato utilizzando l’eseguibile‘aumix ’ con l’opzione‘ -S ’ , oppure quandoil programma funziona in modalità interattiva, attraverso la pressione del tasto[ s ]. Il file di con-figurazione non viene caricato automaticamente: lo si può richiedere attraverso l’opzione‘ -L ’ ,oppure attraverso il tasto[ l ].

Quando viene caricata la configurazione, se il file‘~/.aumixrc ’ manca,Aumix fa riferimentoa ‘ /etc/aumixrc ’ , che potrebbe essere ottenuto semplicemente copiando una configurazionepersonale che si ritiene adatta a livello generale, in mancanza d’altro.

A titolo di esempio viene mostrato il contenuto di uno di questi file di configurazione, dove ilsignificato delle righe che lo compongono dovrebbe essere intuitivo.

vol:76:76:Psynth:0:0:Ppcm:0:0:Pline:0:0:Pmic:0:0:Rcd:0:0:P

Alcune distribuzioni GNU/Linux utilizzanoAumix per memorizzare e ripristinare le regolazionidella scheda audio. In pratica, nellaprocedura di inizializzazione del sistema si fa in modo disalvare in un file, presumibilmente‘ /etc/.aumix ’ , i valori utilizzati per ultimi durante la fasedi arresto, mentre dallo stesso file vengono riletti durante la fase di avvio.

336.2 Esecuzione e registrazione di brani campionati

Per verificare il funzionamento del sistema di registrazione e di riproduzione di brani campionati,si possono usare direttamente i dispositivi‘ /dev/audio ’ e ‘ /dev/dsp ’ . Entrambi permettono dileggere il risultato di un campionamento e di riprodurre gli stessi brani se questi vengono scrittisugli stessi dispositivi.

Il primo dei due file di dispositivo,‘ /dev/audio ’ , fa riferimento al formato standard dellaSun,semplificato al massimo. I file audio con questo formato hanno normalmente l’estensione‘ .au ’ .Il secondo,‘ /dev/dsp ’ , rappresenta un formato audio grezzo.

Per «registrare» da questi dispositivi, basta leggerli e inviare ciò che si ottiene verso un file nor-male. Lo stesso file può essere diretto al dispositivo attraverso cui è stato generato, ottenendonela riproduzione. Tuttavia, per registrare occorre selezionare un canale dalla scheda audio, specifi-cando che per questo è abilitata la registrazione. In generale si può trattare del canale microfonico,di quello del CD e della linea di ingresso esterna. In pratica, utilizzandoAumix, si tratta di avvia-re l’eseguibile‘aumix ’ con l’opzione‘ -m’ , ‘ -c ’ o ‘ -l ’ , rispettivamente, con l’argomento‘R’ . Inqueste condizioni, 8 Kibyte corrispondono a un secondo di riproduzione audio, di conseguenza,si può utilizzare uno dei due comandi seguenti per campionare e memorizzare per un minuto inun file.

$ dd if=/dev/audio of=registratore.au bs=8k count=60

$ dd if=/dev/dsp of=registratore bs=8k count=60

Per riprodurre questi file, si devono utilizzare gli stessi dispositivi da cui sono stati generati.Rispettivamente, valgono i due comandi seguenti.

$ cat registratore.au > /dev/audio

Page 83: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Gestione della scheda audio 3817

$ cat registratore > /dev/dsp

Page 84: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3818 Gestione della scheda audio

336.3 Wavtools

Wavtools2 è un altro pacchetto per l’esecuzione e la registrazione di file audio in formato WAV.Utilizza in particolare il dispositivo‘ /dev/dsp ’ . Si compone di quattro eseguibili:‘wavr ’ e‘gwavr ’ per la registrazione;‘wavp’ e ‘gwavp ’ per l’esecuzione.

wavr [ opzioni]gwavr [ opzioni]wavp file_wav

gwavp file_wav_gsm

In pratica, non c’è bisogno di opzioni per eseguire un file attraverso‘wavp’ o ‘gwavp ’ . La lettera«g» iniziale di‘gwavr ’ e ‘gwavp ’ , indica che si tratta della versione predisposta per un formatoWAV compresso utilizzando l’algoritmo GSM.

Alcune opzioni di wavr e gwavr-f file_wav

Specifica il file da registrare.

-r frequenza_campionamento

Specifica la frequenza di campionamento. Alcuni valori comuni sono: 44100, 22050,11025 e 8000.

-d dimensione_campione

Definisce la dimensione del campione in bit. Di solito si usano i valori 8 o 16.

-c 1 | 2

Definisce il numero dei canali: uno per una registrazione monofonica, due per unaregistrazione stereofonica.

-l n_secondi

Programma la durata della registrazione.

336.4 Xwave

Xwave3 è un applicativo relativamente completo per la registrazione, la modifica e l’esecuzionedi brani musicali registrati in vari formati, in particolare in WAV-RIFF. Si tratta di un applicativoper X. Nella figura336.3si vede il pannello principale dopo aver caricato un file WAV.

2Wavtools GNU GPL3Xwave GNU GPL

Page 85: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Gestione della scheda audio 3819

Figura 336.3. Pannello principale di Xwave.

Il programma eseguibile che svolge tutto il lavoro è‘xwave ’ . Non richiede opzioni e il suofunzionamento è intuitivo. È interessante la possibilità offerta di modificare un brano, per esem-pio usando il taglia-incolla (basta selezionare una porzione della traccia con il mouse), oppureintroducendo degli effetti.

Può darsi che la registrazione non sia perfetta, ma questo è un particolare trascurabile rispettoalle altre possibilità di questo applicativo.

336.5 Sox

Sox4 è attualmente lo strumento più importante di conversione di file audio. In linea di massima,Sox è in grado di convertire da un formato a un altro, anche se i passaggi da una frequenzadi campionamento a un’altra non danno risultati ottimi; inoltre riesce a introdurre degli effettiinteressanti.

Meritano attenzione alcuni effetti cheSox permette di introdurre attraverso la rielaborazionedigitale del segnale: è possibile estrarre solo una porzione delle frequenze audio; si possonointrodurre effetti di eco e di vibrato; è possibile invertire il brano.

Una particolarità diSox è quella di distinguere i formati audio in base all’estensione dei nomidei file (in quasi tutti i casi). La tabella336.2riporta l’elenco di alcuni di questi; per un elencocompleto e una descrizione più dettagliata si può consultare lapagina di manualesox(1).

Tabella 336.2. Alcuni dei formati audio gestiti da Sox.

Estensione/tipo Descrizione.8svx Amiga 8SVX..au AU dellaSun Microsystems..dat Audio espresso in formato testo..smp TurtleBeachMediaVision..voc SoundBlaster VOC..wav MS-Windows WAV-RIFF.ossdsp Formato del dispositivo‘ /dev/dsp ’ .

4Sox licenza speciale

Page 86: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3820 Gestione della scheda audio

336.5.1 $ sox

sox [ opzioni_generali] [ opzioni_di_formato] file_in_ingresso[ opzioni_di_formato] ←→file_in_ingresso[ effetti]

‘sox ’ è l’eseguibile che svolge tutto il lavoro dell’applicativoSox. Purtroppo la sintassi è un po’confusa e lo schema che si vede qui è già una semplificazione di quella completa. In generale ènecessaria l’indicazione di un file in ingresso e di uno in uscita. Per stabilire il formato di un filesi fa riferimento all’estensione utilizzata nel nome; eventualmente si possono realizzare anchedellepipeline indicando un trattino orizzontale (‘ - ’) al posto del nome del file corrispondente (iningresso o in uscita), però in questo caso occorre indicare un’opzione apposita per specificare ilformato a cui si fa riferimento.

Le opzioni di formato si applicano al file indicato subito dopo; in pratica, quelle che appaionoprima del file in ingresso, si riferiscono a questo, mentre quelle indicate dopo il file in ingresso,riguardano il file in uscita.

Gli effetti cheSox è in grado di generare si indicano attraverso delle parole chiave collocate allafine della riga di comando, dopo l’indicazione del file in uscita.

Alcune opzioni generali-V

Emette una serie di informazioni sulle fasi del processo di elaborazione. Serve per avere unrapporto chiaro delle trasformazioni che sta applicandoSox.

-v volume

Permette di cambiare il volume del segnale. Il valore‘1.0 ’ rappresenta il livello iniziale:valori inferiori diminuiscono il volume, mentre valori superiori lo aumentano.

Alcune opzioni di formato-t tipo_di_file

Permette di specificare il formato del file successivo (in ingresso o in uscita), attraverso unastringa che rappresenta l’estensione normale di questo (‘ .au ’ , ‘ .wav ’ , ecc.).

-r frequenza_di_campionamento

Permette di specificare la frequenza di campionamento del file successivo (in ingresso oin uscita), attraverso l’indicazione di un numero che rappresenta la frequenza in hertz. Ingenerale, è più probabile l’utilizzo di questa opzione in riferimento a un file in uscita.

-c n_canali

Permette di specificare il numero di canali audio del file successivo (in ingresso o in uscita).Come si può intendere, uno rappresenta un file monofonico, due stereofonico e quattroquadrifonico.

Alcune opzioni che rappresentano un effettoband frequenza_centrale ampiezza

Applica un filtro passa-banda. Gli argomenti di questa opzione sono valori numerici che siriferiscono a una frequenza in hertz.

highp frequenza_filtro

Applica un filtro passa-alto a partire dalla frequenza indicata come argomento. In pratica,le frequenze inferiori risulteranno molto attenuate.

echo ritardo volume

Page 87: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Gestione della scheda audio 3821

Inserisce un effetto eco in cui il ritardo è espresso in secondi e il volume è riferito all’unità,per cui si utilizzano normalmente dei valori inferiori a uno per indicare un’attenuazionerelativa.

vibro velocità profondità

Inserisce un effetto vibrato. La velocità indica la frequenza della vibrazione nel volume delsegnale, mentre la profondità indica il volume dell’oscillazione di questo.

reverse

Inverte il corso del brano. Potrebbe servire in particolare per scoprire dei messaggi nascostiche siano stati introdotti ad arte nel segnale audio.

Esempi

$ sox prova.wav prova-vibrato.wav vibro 5 0.7

Legge il file ‘prova.wav ’ (di tipo WAV, data l’estensione) e lo trasforma nel file‘prova-vibrato.wav ’ , mantenendo le stesse caratteristiche riguardo al campionamento,ma aggiungendo un effetto vibrato.

$ sox prova.wav prova-eco.wav echo 1 0.7

Legge il file ‘prova.wav ’ (di tipo WAV, data l’estensione) e lo trasforma nel file‘prova-eco.wav ’ , mantenendo le stesse caratteristiche riguardo al campionamento, maaggiungendo un effetto eco.

$ sox prova.wav prova-1000.wav band 1000 500

Legge il file ‘prova.wav ’ (di tipo WAV, data l’estensione) e lo trasforma nel file‘prova-1000.wav ’ , mantenendo le stesse caratteristiche riguardo al campionamento, mafiltrando il segnale in modo da selezionare in particolare le frequenze da 750 Hz a 1250 Hz.

$ sox prova.wav -t .wav - band 1000 500 > prova-1000.wav

Come nell’esempio precedente, ma in questo caso il file in uscita viene ottenuto attraversolo standard output, per cui occorre specificare il tipo con l’opzione‘ -t ’ .

Non vengono mostrati esempi in cui si cambia il formato dei file audio, perché si trattadi un’operazione delicata e per questo è meglio leggere la documentazione originale. Inparticolare, non conviene tentare di ridurre la frequenza di campionamento, perché disolito il risultato è pessimo.

336.5.2 $ play, rec

play file

rec file

Sox è accompagnato generalmente da duescript: ‘play ’ e ‘ rec ’ . Il loro scopo è quello di faci-litare l’ascolto e la registrazione, facendo affidamento sulle capacità diSox di convertire al voloil formato di questi file. Quando non si ha la possibilità di utilizzare un programma più como-do, questa potrebbe essere l’unica risorsa per riuscire a gestire con un minimo di comodità lefunzionalità audio.

A volte, questiscript sono errati, probabilmente per un piccolo errore di sintassi nella scrittura diuna struttura di selezione (‘case ’). Per semplificare le cose, viene mostrato il contenuto essen-ziale di questi duescript. L’esecuzione di un brano registrato in un file avviene in pratica con uncomando come quello seguente:

Page 88: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3822 Gestione della scheda audio

sox file_da_eseguire-t ossdsp -w -s /dev/dsp

Naturalmente, prima del file potrebbero essere aggiunte altre opzioni, se lo si ritiene opportuno;nello stesso modo si potrebbero aggiungere delle opzioni riferite a effetti da inserire nell’audio,indicandole alla fine del comando. In modo analogo, si può registrare un file:

sox -t ossdsp /dev/dsp file_da_registrare

Valgono le stesse considerazioni fatte per il caso dell’esecuzione di un brano, in particolare, leopzioni riferite al file che si vuole ottenere vanno messe subito prima di questo file, cioè dopol’indicazione del dispositivo‘ /dev/dsp ’ .

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 89: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 337

Audio compressoÈ molto difficile ridurre un file contenente informazioni sonore. In questo contesto, quando si par-la di compressione, si fa riferimento a metodi di semplificazione delle informazioni memorizzate,basati sulla percezione umana. Questa «semplificazione» si traduce in pratica in una riduzione edistorsione nei suoni riprodotti.

In generale, il formato più comune per i file audio compressi è MP3, ovvero «MPEG-1 layer 3»,«MPEG-2 layer 3» o «MPEG-2.5 layer 3». Lo standard MPEG definisce il formato e la decodificadei dati, mentre non fissa un metodo per la codifica. Sulla codifica sono state sviluppate tecnichedifferenti, alcune delle quali sono brevettate. A causa di questo problema, lo sviluppo di softwarelibero in grado di generare file MP3 è limitato alla produzione in forma di sorgenti, non potendoin pratica arrivare alla distribuzione di applicativi già compilati.

337.1 Informazioni contenute in un file MP3

Un file MP3 può includere delle informazioni importanti sul suo contenuto, oltre a ciò che èindispensabile per la riproduzione (come per esempio l’informazione sulla frequenza di campio-namento). In generale, conviene stabilire questi dati nella fase di codifica del file stesso, mentreuna parte di questi può essere modificata anche dopo.

Tabella 337.1. Informazioni comuni che possono essere inserite in un file MP3.

Informazione Tipo Significatooriginale booleano Indica se il contenuto è originale.copyright booleano Indica se il contenuto è coperto da copyright.titolo testo Titolo della canzone o di ciò che è contenuto nel file.artista testo Nome dell’artista o degli artisti.album testo Nome dell’album di cui fa parte il contenuto del file.anno testo Anno di edizione.commento testo Commento aggiuntivo.traccia numero Numero della traccia nel CD a cui si fa riferimento.genere numero Genere, definito da un codice numerico prestabilito.

Tabella 337.2. Genere, secondo lo standard ID3. Prima parte.

Genere Definizione Genere Definizione0 Blues 1 Classic Rock2 Country 3 Dance4 Disco 5 Funk6 Grunge 7 Hip-Hop8 Jazz 9 Metal10 New Age 11 Oldies12 Other 13 Pop14 R&B 15 Rap16 Reggae 17 Rock18 Techno 19 Industrial20 Alternative 21 Ska22 Death Metal 23 Pranks24 Soundtrack 25 Euro-Techno26 Ambient 27 Trip-Hop28 Vocal 29 Jazz+Funk30 Fusion 31 Trance32 Classical 33 Instrumental34 Acid 35 House

3823

Page 90: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3824 Audio compresso

Genere Definizione Genere Definizione36 Game 37 Sound Clip38 Gospel 39 Noise40 Alt. Rock 41 Bass42 Soul 43 Punk44 Space 45 Meditative46 Instrumental Pop 47 Instrumental Rock48 Ethnic 49 Gothic50 Darkwave 51 Techno-Industrial52 Electronic 53 Pop-Folk54 Eurodance 55 Dream56 Southern Rock 57 Comedy58 Cult 59 Gangsta Rap60 Top 40 61 Christian Rap62 Pop/Funk 63 Jungle64 Native American 65 Cabaret66 New Wave 67 Psychedelic68 Rave 69 Showtunes70 Trailer 71 Lo-Fi72 Tribal 73 Acid Punk

Tabella 337.3. Genere, secondo lo standard ID3. Seconda parte.

Genere Definizione Genere Definizione74 Acid Jazz 75 Polka76 Retro 77 Musical78 Rock & Roll 79 Hard Rock80 Folk 81 Folk/Rock82 National Folk 83 Swing84 Fast-Fusion 85 Bebob86 Latin 87 Revival88 Celtic 89 Bluegrass90 Avantgarde 91 Gothic Rock92 Progressive Rock 93 Psychedelic Rock94 Symphonic Rock 95 Slow Rock96 Big Band 97 Chorus98 Easy Listening 99 Acoustic100 Humour 101 Speech102 Chanson 103 Opera104 Chamber Music 105 Sonata106 Symphony 107 Booty Bass108 Primus 109 Porn Groove110 Satire 111 Slow Jam112 Club 113 Tango114 Samba 115 Folklore116 Ballad 117 Power Ballad118 Rhythmic Soul 119 Freestyle120 Duet 121 Punk Rock122 Drum Solo 123 A Cappella124 Euro-House 125 Dance Hall126 Goa 127 Drum & Bass128 Club-House 129 Hardcore130 Terror 131 Indie132 BritPop 133 Negerpunk134 Polsk Punk 135 Beat136 Christian Gangsta Rap 137 Heavy Metal138 Black Metal 139 Crossover140 Contemporary Christian 141 Christian Rock

Page 91: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Audio compresso 3825

Genere Definizione Genere Definizione142 Merengue 143 Salsa144 Thrash Metal 145 Anime146 JPop 147 Synthpop

Le informazioni più voluminose, come il titolo e le altre stringhe di testo, vanno aggiunte in codaal file MP3. Il modo in cui questi dati vengono segnalati nel file dipende da standard differentiche nel tempo sono stati aggiornati. In questo senso, alcuni programmi non aggiornati potrebberoanche non essere in grado di leggere ciò che viene scritto con standard più recenti.

337.1.1 MP3info

MP3info 1 è un programma molto semplice con lo scopo di estrarre le informazioni tipiche daifile MP3, con la possibilità di modificare i dati descrittivi. Si compone dell’eseguibile‘mp3info ’ ,che si utilizza secondo la sintassi seguente:

mp3info [ opzioni] file_mp3...

Se non si indica alcuna opzione, si ottengono le informazioni sui file in forma stringata. Tuttavia,con l’opzione‘ -F ’ , o meglio ancora con l’opzione‘ -f ’ , si può controllare il modo in cui taliinformazioni vengono fornite.

L’opzione ‘ -f ’ prevede un argomento composto da una stringa contenente delle sequenze diescape, che si distinguono per il fatto che iniziano con il simbolo di percentuale (‘%’). La tabella337.4riporta un elenco parziale di queste sequenze diescape, escludendo in particolare quelle cherappresentano una scelta sottoposta a una condizione. Per il loro approfondimento è sufficienteleggere la poca documentazione originale.

Con alcuneshell, questi simboli di percentuale potrebbero essere interpretati in modo diverso,come nel caso diMidnight Commander.

Tabella 337.4. Alcune sequenze di escape utilizzabili come argomento dell’opzione‘-f ’.

Stringa Effetto%% ‘%’%t Titolo%a Artista%l Album%y Anno%c Commento%g Genere in forma testuale%# Genere in forma numerica%v Versione MPEG in forma numerica%V Versione MPEG in forma testuale%L Strato MPEG (layer) in numero romano%A Strato MPEG (layer) in numero arabo%C Protezione dagli errori (restituisce zero o uno)%b Quantità di bit utilizzati al secondo%F Frequenza di campionamento%M Modalità: mono, stereo, ecc.%O Copyright (restituisce zero o uno)%o Originale (restituisce zero o uno)

1MP3info GNU GPL

Page 92: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3826 Audio compresso

Stringa Effetto%m Lunghezza espressa in minuti%s Lunghezza rimanente in secondi%S Lunghezza complessiva in secondi%N Interruzione di riga%f Nome del file, come indicato nella riga di comando%B Nome del file senza percorso%i Dimensione del file in byte

Per comprendere meglio il significato di tutto questo, l’esempio seguente consente di estrarreesattamente il nome dell’artista e il titolo della canzone (o di qualunque altra cosa si tratti),ponendo le due informazioni su righe differenti:

$ mp3info -f "%a%N%t" prova.mp3 [ Invio ]

Bla bla bla blaPinco Pallino

Volendo si potrebbe realizzare unoscript per visualizzare tutto quello che c’è da sapere nel file,come nell’esempio seguente, in cui si può fare riferimento a un solo file alla volta:

#!/bin/sh

mp3info -f "file: %f" $1mp3info -f "dimensione: %i" $1mp3info -f "formato: %V layer %L" $1mp3info -f "CRC: %C" $1mp3info -f "bitrate: %b Kibit/s" $1mp3info -f "campionamento: %F Hz" $1mp3info -f "modalità: %M" $1mp3info -f "durata: %m:%s" $1mp3info -f "copyright: %O" $1mp3info -f "originale: %o" $1mp3info -f "titolo: %t" $1mp3info -f "artista: %a" $1mp3info -f "album: %l" $1mp3info -f "anno: %y" $1mp3info -f "annotazioni: %c" $1mp3info -f "genere: %# %g" $1

MP3info consente anche la modifica di alcune di queste informazioni, ma ciò avviene attraversoopzioni apposite e le sequenze diescape dell’opzione‘ -f ’ non hanno alcun ruolo in questocontesto.

Alcune opzioni-f stringa_di_formato

Mostra le informazioni secondo la stringa di formato indicata come argomento. Siutilizzano le sequenze diescape della tabella337.4.

-F n

Mostra le informazioni secondo un formato prestabilito, rappresentato da un numero interopositivo. Basta provare per rendersi conto di come possono essere rappresentate le infor-mazioni in questo modo. Si tratta evidentemente di una semplificazione per chi non vuoleusare l’opzione‘ -f ’ .

-w

Richiede espressamente la scrittura di informazioni aggiornate. In generale non serve indi-care espressamente questa opzione, perché viene richiamata automaticamente in presenzadi opzioni che implicano la modifica di qualche informazione.

Page 93: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Audio compresso 3827

-W

Cancella le informazioni descrittive (titolo, artista, ecc.) contenute nel file.

-t titolo

Imposta il titolo. L’uso di questa opzione implica automaticamente la scrittura, senzabisogno di specificare l’opzione‘ -w ’ .

-a artista

Imposta l’artista. L’uso di questa opzione implica automaticamente la scrittura, senzabisogno di specificare l’opzione‘ -w ’ .

-l album

Imposta l’album. L’uso di questa opzione implica automaticamente la scrittura, senzabisogno di specificare l’opzione‘ -w ’ .

-y anno

Imposta l’anno. L’uso di questa opzione implica automaticamente la scrittura, senzabisogno di specificare l’opzione‘ -w ’ .

-c commento

Imposta il commento. L’uso di questa opzione implica automaticamente la scrittura, senzabisogno di specificare l’opzione‘ -w ’ .

-g n | -G genere_testuale

Imposta il genere, in forma di numero o in modo testuale. L’uso di questa opzione implicaautomaticamente la scrittura, senza bisogno di specificare l’opzione‘ -w ’ . Si osservi chel’impostazione del genere in forma testuale deve avvenire usando la definizione prevista.

-p [ n]Elenca i generi in ordine numerico, utilizzandon colonne.

Esempi

Sono già stati mostrati degli esempi riferiti all’uso dell’opzione‘ -f ’ , che qui non vieneriproposta.

$ mp3info -t "Bla bla bla" -a "Pinco Pallino" -y "2001" ←→-g 112 prova.mp3

Imposta il titolo, l’artista, l’anno e il genere (tango) nel file‘prova.mp3 ’ .

$ mp3info -p1

Mostra l’elenco dei generi in una sola colonna, secondo l’ordine numerico attribuito dallostandard.

337.2 LAME

LAME 2 è un progetto per la codifica in formato MP3 ed eventualmente anche in altri formatiaudio compressi. Il progetto produce esclusivamente del codice sorgente (compilabile facilmente)perché la distribuzione di pacchetti già compilati viene impedita di fatto dalla presenza di varibrevetti.

In un sistema GNU/Linux la compilazione diLAME avviene in modo molto semplice. Suppo-nendo di disporre del file‘ lame.tar.gz ’ e di volere installare i file a partire da‘ /opt/lame/ ’ ,si potrebbe procedere nel modo seguente:

2LAME GNU LGPL

Page 94: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3828 Audio compresso

$ tar xzvf lame.tar.gz

$ cd lame

$ ./configure --prefix=/opt/lame

$ make

$ su

# make install

Naturalmente, occorre poi preoccuparsi di inserire il percorso‘ /opt/lame/bin/ ’ nella variabiledi ambiente‘PATH’ . Si veda eventualmente quanto descritto nel capitolo20.

Al termine della compilazione si ottiene l’eseguibile‘ lame ’ , che può essere utilizzato secondo lasintassi seguente:

lame [ opzioni] file_in_ingresso file_in_uscita

In pratica, il primo argomento dopo le opzioni indica un file, solitamente in formato WAV-RIFF(salvo la specificazione di qualcosa di differente), mentre il secondo è il file MP3 che si vuolegenerare. Naturalmente, se si utilizza il carattere‘ - ’ al posto del nome dei file, si fa riferimentoallo standard input e allostandard output rispettivamente.

Alcune opzioni-r

Il file in ingresso è di tipo PCM grezzo.

-x

Forza lo scambio dei byte in ingresso.

-s frequenza_di_campionamento

Definisce la frequenza di campionamento in ingresso, espressa in kilohertz. Il valorepredefinito è di 44,1 kHz, che si esprime come‘44.1 ’ .

--mp1input

Indica che il file in ingreso è di tipo «MPEG layer I».

--mp2input

Indica che il file in ingreso è di tipo «MPEG layer II».

--mp3input

Indica che il file in ingreso è di tipo «MPEG layer III».

--ogginput

Indica che il file in ingreso è di tipo «Ogg Vorbis».

-m modalità

Consente di specificare la modalità di registrazione, attraverso l’indicazione di una lettera.Quelle fondamentali sono:

• ‘s ’ stereo;

• ‘ j ’ stereo congiunto (predefinito);

• ‘m’ mono;

Page 95: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Audio compresso 3829

Le modalità di registrazione effettivamente disponibili dipendono anche dal tipo di codificausato.

-a

Mescola i canali del file in ingresso per generare un file monofonico.

--decode

Decodifica un file MP3 generando un file WAV-RIFF. In questo modo, il primo file indicatonella riga di comando deve essere in formato MP3, mentre ciò che si genera è un fileWAV-RIFF.

-h

Utilizza una compressione lenta dove la qualità è preservata.

-f

Utilizza una compressione rapida dove la qualità dovrebbe essere sufficiente.

-c

Attiva l’indicatore relativo al copyright.

-o

Indica comenon originale.

-p

Aggiunge 16 bit di controllo alla fine di ogniframe.

-tt titolo

Aggiunge il titolo.

-ta artista

Aggiunge l’indicazione dell’artista o degli artisti.

-tl album

Aggiunge il titolo dell’album a cui appartiene il contenuto del file.

-ty anno

Aggiunge l’anno.

-tc commento

Aggiunge un commento libero.

-tn n

Specifica il numero di traccia del CD originale, con un numero che va da 1 a 255.

-tg genere

Specifica il genere, espresso per nome o attraverso un numero.

--genre-list

Elenca i generi secondo lo standard ID3. Da questo elenco si può trarre il numero da usarecon l’opzione‘ -tg n’ .

Esempi

$ lame -h prova.wav prova.mp3

L’esempio mostra la situazione più comune di utilizzo, in cui si specifica l’opzione‘ -h ’per ottenere un buon risultato. In pratica, si ottiene il file‘prova.mp3 ’ a partire da‘prova.wav ’ . Si intende che il file‘prova.wav ’ sia di tipo WAV-RIFF, 16 bit, stereo,44100 Hz.

$ lame -h -p prova.wav prova.mp3

Page 96: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3830 Audio compresso

Come nell’esempio precedente, ottenendo però un file un po’ più lungo, per l’aggiunta diuncodice di controllo alla fine di ogniframe.

$ lame -h -p -c prova.wav prova.mp3

Come nell’esempio precedente, con l’attivazione dell’indicatore del copyright.

$ lame -h -p -c -tg 101 ←→-tt "Conferenza sul software libero" -ta "Pinco Pallino" ←→-ty "2001" prova.wav prova.mp3

Come nell’esempio precedente, con l’aggiunta di altre informazioni utili. Si osservi l’usodel genere 101.

$ lame --decode prova.mp3 prova.wav

Riproduce il file‘prova.wav ’ , completo di intestazione, a partire dal file‘prova.mp3 ’ .

337.3 MP3blaster

MP3blaster3 è un programma interattivo per l’esecuzione di file audio (inizialmente solo perfile MP3). Se viene avviato senza argomenti, si ottiene il pannello di controllo che si vede nellafigura337.1.

Figura 337.1. Pannello principale di MP3blaster.

.------------------------------------------------------------------------------.|F 1: Select files | 01:Default | -||F 2: Add group |---------------------------------------------------|--||F 3: Delete group | |01||F 4: Set group’s title | | ||F 5: load/add playlist | | ||F 6: Write playlist | | ||F 7: Toggle group mode | | ||F 8: Toggle play mode | | ||F 9: Play list | | ||F10: Change #threads | | || | | || | | ||Current group’s mode: | | ||Play in normal order | | || | | ||Current play-mode: | | ||Play all groups in | | ||normal order | | || | | ||Threads: 100 | | ||------------------------------------------------------------------------------||Press ’?’ to get a screen with key functions. +|‘------------------------------------------------------------------------------’

In condizioni normali, durante l’esecuzione di un brano viene messo a disposizione un mixer,come si vede nella figura337.1, tenendo conto che sono a disposizione anche i controlli di volumedelle linee del mixer che non si vedono; queste appaiono eventualmente scorrendo con i tasti[ freccia su] e [ freccia giù]. I comandi a disposizione durante la modalità di esecuzione di un branosono elencati brevemente nella tabella337.5, mentre gli altri comandi per l’uso interattivo nonvengono mostrati.

3MP3blaster GNU GPL

Page 97: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Audio compresso 3831

Figura 337.2. Esecuzione di un brano con la funzionalità di mixer attiva.

.-----------------------------------|01.mp3|-----------------------------------.| Mpeg-1 layer 3 at 44100hz, 128 kb/s (stereo) || ### 00:13/03:31(-03:18) || Songname: 01.mp3 Year : || Artist : Genre : || Album : || Info : || || Vol || [##################################################] L || [##################################################] R || Pcm || [######################################## ] L || [######################################## ] R || Spkr || [###################################### ] L || [###################################### ] R || || || |< << |> >> >| || [] || 1 2 3 4 5 6 7 ||------------------------------------------------------------------------------|| MP3Blaster V2.0b16 (press ’q’ to return to Playlist Editor) |‘------------------------------------------------------------------------------’

Tabella 337.5. Comandi utili in fase di esecuzione dei brani.

Tasto Effettofreccia su Seleziona la linea del mixer precedente.freccia giù Seleziona la linea del mixer successiva.freccia sinistra Abbassa il volume della linea selezionata.freccia destra Alza il volume della linea selezionata.1 Salta al brano precedente.2 Torna indietro nel brano in corso di esecuzione.3 Avvia l’esecuzione del brano corrente.4 Avanza nel brano in corso di esecuzione.5 Salta al brano successivo.6 Pausa.7 Stop.q Conclude la modalità di esecuzione.

337.3.1 Avvio e riga di comando

MP3blaster si avvia attraverso l’eseguibile‘mp3blaster ’ , con o senza argomenti:

mp3blaster [ opzioni] [ file] ...

In generale, se alla fine della riga di comando vengono indicati dei file, viene avviata la loroesecuzione; altrimenti si ottiene generalmente il pannello iniziale del programma, dal quale sipossono selezionare le funzioni desiderate.

Alcune opzioni

--nomixer | -n

Disabilita la gestione del mixer in fase di esecuzione dei brani.

--runframes= 1| 2| 3| 4| 5| 6| 7| 8| 9| 10

-r= 1| 2| 3| 4| 5| 6| 7| 8| 9| 10

Page 98: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3832 Audio compresso

Permette di definire la quantità diframe che devono essere decodificati per ogni ciclo.Ciò permette di regolare l’esecuzione in base alle capacità di elaborazione disponibili. Ingenerale, i valori più alti migliorano le prestazioni con microprocessori più lenti. Il valorepredefinito per questa opzione è cinque.

--sound-device= file | -s= file

In generale, il programma dovrebbe essere già predisposto per utilizzare il file di dispositivogiusto per accedere all’interfaccia audio. Tuttavia, in caso di necessità può essere definitoattraverso questa opzione. Nei sistemi GNU/Linux si tratta normalmente di‘ /dev/dsp ’ .

Esempi

$ mp3blaster

Avvia MP3blaster in modalità interattiva.

$ mp3blaster brani/01.mp3

Avvia MP3blaster per l’esecuzione del file‘brani/01.mp3 ’ . Al termine conclude il suofunzionamento.

$ mp3blaster brani/*.mp3

Avvia MP3blaster per l’esecuzione di tutti i file MP3 contenuti nella directory‘brani/ ’ .Al termine conclude il suo funzionamento.

337.4 Xmms

Xmms,4 ovveroX multimedia system, è un lettore multimediale grafico, per i formati audio piùcomuni. Avviandolo per la prima volta, attraverso l’eseguibile‘xmms’ , si ottiene il pannello dicontrollo che si vede nella figura337.3.

Figura 337.3. Pannello principale di Xmms al primo avvio.

Oltre al pannello principale è possibile visualizzare il mixer e l’elenco dei brani pronti per l’ese-cuzione (playlist), come si vede nella figura337.4, dove si vede anche l’esecuzione di un branodi musica.

4Xmms GNU GPL

Page 99: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Audio compresso 3833

Figura 337.4. Pannello completo di Xmms.

I brani da eseguire possono essere indicati attraverso l’interazione con il pannello, utilizzando ilmenù che si ottiene facendo un clic con il tasto destro del mouse, oppure indicandoli nella rigadi comando. Per esempio:

$ xmms *.mp3

In tal caso, come si intuisce, si caricano tutti i file con estensione‘ .mp3 ’ della directory corrente.

La prima volta che si avvia,Xmms crea la directory‘~/.xmms/ ’ , in cui si collocano i file diconfigurazione. Questa configurazione memorizza anche l’ultimo elenco di brani selezionati,consentendo il riavvio successivo diXmms con il recupero degli stessi dati.

Xmms richiede l’interfaccia grafica X per funzionare; tuttavia, una volta avviato è possibilecontrollarlo attraverso altre istanze del comando‘xmms’ , con delle opzioni apposite. Per esempio,

• $ xmms -u

mette in pausa l’esecuzione in corso, oppure la fa riprendere;

• $ xmms -e *.mp3

aggiunge altri brani all’elenco attuale;

• $ xmms -p

fa partire l’esecuzione dell’elenco di brani attuale;

• $ xmms -s

ferma l’esecuzione.

Dal pannello grafico, così come è possibile far apparire il mixer e l’elenco dei brani, è possibilefare anche sparire tutti i pannelli. In tal senso, la possibilità di controllare l’esecuzione attraversoi comandi del tipo mostrato, diventa molto conveniente. Eventualmente, per far riemergere ilpannello principale si può usare il comando:

$ xmms -m

Page 100: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3834 Audio compresso

337.5 FreeAmp

FreeAmp,5 è un programma grafico per l’esecuzione di file audio MP3. All’avvio si presentacome si vede nella figura337.5.

Figura 337.5. Pannello frontale di FreeAmp.

L’eseguibile che compie il lavoro è‘ freeamp ’ che può ricevere eventualmente come argomentoil nome di un file MP3 da eseguire immediatamente:

freeamp [ file_mp3]

Dal pannello frontale è possibile regolare facilmente il volume della linea di amplificazione;inoltre è possibile spostare la posizione dell’esecuzione (il punto di inizio). Attraverso il pulsantegrafico MYMU S I C si accede a una finestra simile a quella che si vede nella figura337.6, che ha loscopo di consentire un accesso facilitato ai file nel proprio disco fisso.

Figura 337.6. Gestore di file MP3 incorporato in FreeAmp.

Tra le tante funzionalità diFreeAmp esiste anche la possibilità di modificare facilmente le infor-mazioni ID3 dei file MP3. Per modificare i dati di un file, basta selezionarlo nell’ambito dellafinestra a cui si accede con il pulsante graficoMYMU S I C , selezionando da lì il pulsanteED I T . Siottiene una maschera simile a quella che si vede nella figura337.7.

5FreeAmp GNU GPL

Page 101: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Audio compresso 3835

Figura 337.7. Modifica delle informazioni ID3.

FreeAmp è anche in grado di collegarsi a un flusso di dati MP3 fornito attraverso il protocolloHTTP, ovvero unostreamHTTP, come quello generato daIcecast, descritto nella sezione338.2.Per un collegamento del genere, basta avviare l’eseguibile‘ freeamp ’ indicando l’URI corretto,come nell’esempio seguente:

$ freeamp http://dinkel.brot.dg:8000

Come si vede dal comando, pur trattandosi del protocollo HTTP, si utilizza solitamente unaporta differente da quella standard. La figura337.8mostra in che modo appareFreeAmp quandosi collega a un flusso HTTP.

Figura 337.8. Pannello frontale di FreeAmp collegato a un flusso HTTP.

337.6 Riferimenti

• Eric Scheirer,Frequently Asked Questions: MPEG, Patents, and Audio Coding, 1998

<http://sound.media.mit.edu/~eds/mpeg- patents- faq>

• The LAME project

<http://www.mp3dev.org/mp3/>

• Martin Nilsson,ID3 tag version 2, 1998

<http://www.id3.org/id3v2- 00.txt>

• Phill Kerr, The Linux MP3-HOWTO

<http://www.linux.org/docs/ldp/howto/HOWTO- INDEX/howtos.html>

Page 102: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3836 Audio compresso

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 103: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 338

Audio attraverso la reteCi sono tanti modi di gestire l’audio attraverso la rete. La tecnica più semplice, anche se nonè necessariamente la più efficace, consiste nella realizzazione di una connessione TCP normaledove ogninodo intrattiene una sessione indipendente. Si intende il limite di questo nel fatto cheogni utente che si collega aggiunge del carico alla rete. In pratica, questo approccio può andarebene solo in reti locali poco popolate, oppure con particolari doti di velocità.

Figura 338.1. Idea generale del funzionamento di un sistema di diffusione di audioattraverso la rete, per mezzo di un servente con funzione di ripetitore.

.--------------. .-------------.| Servente |----------->| Cliente per |

.----->| ripetitore |------. | l’ascolto || ‘--------------’ | ‘-------------’| | V| | .-------------.

.--------------. | | Cliente per || Cliente di | | | l’ascolto || trasmissione | | ‘-------------’‘--------------’ V

.-------------.| Cliente per || l’ascolto |‘-------------’

338.1 NetStreamer

Lo schema di funzionamento diNetStreamer1 si basa su un demone,‘NrServer ’ , che comunquedeve essere avviato esplicitamentesullo sfondo, il quale svolge il ruolo di ripetitore nei confrontidi uno o piùclienti di trasmissione. Successivamente, gli utenti che vogliono collegarsi al ripeti-tore per ascoltare ciò che viene trasmesso, utilizzano altriclienti specifici per la ricezione. Comeaccennato le connessioni sono di tipo TCP e di solito si utilizza la porta 8888.

Un soloserventeNetStreamer può gestire più sorgenti audio (provenienti da altrettanticlienti perla trasmissione), per cui iclienti hanno la possibilità di scegliere su quale trasmissione «sintoniz-zarsi». In base a questo principio,NetStreamer simula la gestione di una stazione radio UHF cheopera sulle frequenze tra 88 MHz e 108 MHz: iclienti di trasmissione, quando si collegano de-finiscono il nome della propria «stazione radio» e la «frequenza», rappresentando questa ultimaattraverso un valore che esprime decimi di megahertz; iclienti per la ricezione si sintonizzanoutilizzando come riferimento il valore della frequenza utilizzata dalle stazioni di trasmissione.

È importante osservare che la ricezione delle trasmissioni attraverso diversiclienti di ricezio-ne, non può essere sincronizzata. Ciò accade a causa dell’esigenza di accumulare una memoriatampone necessaria a garantire la continuità nel flusso della riproduzione audio.

338.1.1 Attivazione di un ripetitore

Il ripetitore è quindi il servente diNetStreamer. Nella stessa rete possono essere predispostidiversiserventi indipendenti, anche se questo non dovrebbe essere di alcuna utilità. Tutto si limitaall’avvio di ‘NrServer ’ con l’indicazione della porta TCP da utilizzare per le comunicazioni:

# NrServer :8888 &

1NetStreamer GNU GPL

3837

Page 104: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3838 Audio attraverso la rete

In alternativa, è possibile indicare anche il nome delnodo, per uniformità con la notazioneutilizzata daiclienti:

# NrServer localhost:8888 &

Si osservi il fatto che‘NrServer ’ deve essere messo esplicitamente in funzionesullo sfondo.

338.1.1.1 Attivazione di una trasmittente

Il cliente che trasmette al ripetitore può essere collocato indipendentemente nello stesso elabora-tore del ripetitore o in un altronodo. Naturalmente, collocandolo nello stesso elaboratore si evitadi intasare ulteriormente la rete locale con questa connessione.

Si tratta di utilizzare‘NrTransmitter ’ , il quale deve avere una fonte di audio digitale, indican-do in particolare ilnodo del ripetitore, la porta di comunicazione, il nome della stazione radiovirtuale e la frequenza virtuale di trasmissione.

Si distinguono tre situazioni importanti in funzione del modo in cui viene fornita l’informazioneaudio digitale al programma‘NrTransmitter ’ : i file di dispositivo standard, lostandard inputo una serie di file di registrazioni precedenti, realizzati sempre conNetStreamer.

338.1.1.2 Audio digitale proveniente dai dispositivi standard

Quando si dispone di una scheda audio, quello che questa è in grado di catturare, ovvero il canaleaudio indicato per la registrazione, può essere letto dai soliti file di dispositivo già mostrati piùvolte. Per fare in modo che uncliente di trasmissioneNetStreamer prenda questa fonte, si utilizzala sintassi seguente:

NrTransmitter Device campionamento frequenza_virtuale nome_stazione[ host] : porta

La parola chiave‘Device ’ posta come primo argomento serve proprio a specificare questo com-portamento delcliente di trasmissione. La frequenza di campionamento è un numero che si rife-risce a kilohertz e comunque può essere scelto solo tra 8 e 16. La frequenza virtuale è un numeroche esprime i decimi di megahertz a cui si vuole simulare la trasmissione radio.

A titolo di esempio, volendo trasmettere quello che viene dalla scheda audio con un campiona-mento di 16 kHz utilizzando la frequenza virtuale di 88,5 MHz per la stazione radio denomi-nata «Stazione 1», che utilizza il ripetitoredinkel.brot.dg alla solita porta 8888, si puòutilizzare il comando seguente:

$ NrTransmitter Device 16 885 "Stazione 1" dinkel.brot.dg:8888 &

In alternativa, se il ripetitore si trova nello stesso elaboratore, si poteva fare riferimento alnodolocalhost , abbreviando eventualmente nel modo seguente:

$ NrTransmitter Device 16 885 "Stazione 1" :8888 &

338.1.1.3 Audio digitale proveniente dallo standard input

Quando l’audio viene fornito a‘NrTransmitter ’ attraverso lostandard input, questo deve es-sere in un formato PCM, ovvero senza intestazione particolare, praticamente quello che genera‘MP3blaster ’ , solo che per il momento‘MP3blaster ’ non può emetterlo in questo modo:

mp3blaster --sound-device= file_temporaneo file_mp3

Page 105: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Audio attraverso la rete 3839

Successivamente:

cat file_temporaneo | NrTransmitter StdIn campionamento frequenza_virtuale nome_stazione←→[ host] : porta campionamento_in_ingresso

Rispetto alla sintassi vista per l’utilizzo dei dispositivi standard, in questo caso il primo argo-mento è la parola chiave‘StdIn ’ , aggiungendo in coda un numero corrispondente alla frequenzadi campionamento con cui arrivano i dati in ingresso. L’esempio dei comandi seguenti mostral’utilizzo di unapipe con nome per ricreare un flusso continuo.

$ mkfifo /tmp/musica

$ mp3blaster --sound-device=/tmp/musica

In un altro terminale o console virtuale:

$ cat /tmp/musica | NrTransmitter StdIn 16 885 "Stazione 1" ←→dinkel.brot.dg:8888 44 &

oppure, se la trasmissione avviene nello stessonodo locale:

$ cat /tmp/musica | NrTransmitter StdIn 16 885 "Stazione 1" :8888 44 &

338.1.2 Audio digitale contenuto all’interno di «nastri»

AttraversoNetStreamer è possibile registrare dei file con un formato audio digitale speciale, chenella logica di questo applicativo sono dei nastri, esattamente come si farebbe in una stazioneradio. Verrà mostrato in seguito come realizzare tali file; per il momento si tenga presente chedevono avere l’estensione‘ .tape ’ .

NrTransmitter Directory campionamento frequenza_virtuale nome_stazione←→[ host] : porta directory_dei_nastri

Rispetto a quanto visto in precedenza, si osserva che il primo argomento è la parola chia-ve ‘Directory ’ e in coda si nota l’indicazione di una directory all’interno della quale‘NrTransmitter ’ va a cercare i file che terminano con l’estensione‘ .tape ’ . Questi file vengo-no scelti con una sequenza casuale e trasmessi in continuazione. Vengono riproposti i due esempigià visti in precedenza; in particolare, si fa riferimento ai file contenuti probabilmente in un discomontato per l’occasione:‘ /mnt/musica ’ .

$ NrTransmitter Directory 16 885 "Stazione 1" dinkel.brot.dg:8888 ←→/mnt/musica &

$ NrTransmitter Directory 16 885 "Stazione 1" :8888 /mnt/musica &

338.1.3 Ricezione di una stazione radio virtuale

La ricezione è un procedimento più semplice; tutto quello che serve è indicare la frequenzavirtuale e il ripetitore a cui ci si vuole collegare:

NrReceiver frequenza_virtuale[ host] : porta

Il risultato viene passato ai file di dispositivo per l’input dell’audio digitale. Per esempio, perascoltare la trasmissione proveniente dal ripetitore collocato nelnododinkel.brot.dg (allasolita porta) alla frequenza virtuale di 88,5 MHz, si può usare il comando seguente:

$ NrReceiver 885 dinkel.brot.dg:8888

Page 106: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3840 Audio attraverso la rete

In alternativa a‘NrReceiver ’ si può utilizzare‘NrRecFrontend ’ che, come suggerisce il nome,è unprogramma frontale per X. In tal caso si indica solo il ripetitore a cui collegarsi, perché lafrequenza è specificata attraverso il pannello di questo programma.

NrRecFrontend [ host] : porta

La figura 338.2 mostra come si può presentare‘NrRecFrontend ’ quando è collegato allastazione radio virtuale vista tante volte in questi esempi.

Figura 338.2. Pannello frontale del ricevitore di NetStreamer.

Come si può osservare, appare anche il pulsanteR E C O R D. Questo permette di iniziare una regi-strazione in un file‘ .tape ’ di NetStreamer. Per la precisione, si registra la trasmissione nel file‘~/default.tape ’ . Questo file può essere poi rinominato e utilizzato per le trasmissioni.

338.1.4 Creazione di nastri

Oltre alla possibilità di registrare dei file‘ .tape ’ per NetStreamer attraverso il pannello di unricevitore‘NrRecFrontend ’ , si può usare il programma‘NrEncoder ’ che è in grado di generaretali file a partire da un formato PCM.

NrEncoder campionamento_in_ingresso campionamento_in_uscita

Lo schema sintattico mostra che gli unici argomenti sono il campionamento in ingresso e quelloin uscita espressi in kilohertz. L’input viene fornito attraverso lostandard input e l’output siottiene dallostandard output. Per esempio, con l’aiuto di‘mp3blaster ’ si può convertire un fileMP3 in due passaggi:

$ mp3blaster --sound-device=/tmp/musica mio_file.mp3

$ cat /tmp/musica | NrEncoder 44 16 > mio_file.tape

Il formato di questi file diNetStreamer è precisamente: CCITT ADPCM.

Page 107: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Audio attraverso la rete 3841

338.2 Icecast

Icecast2 è un sistema di trasmissione di audio digitale MP3 attraverso il protocollo HTTP. Ilmeccanismo di funzionamento è quello a cui si accenna all’inizio del capitolo, con la particolaritàdi presentare il flusso digitale come fa il protocollo HTTP, iniziando con l’intestazione seguente,seguita poi dalla codifica MP3:

HTTP/1.0 200 OKServer: icecast/1.0.0Content-type: audio/mpeg

Icecast si compone di unservente, corrispondente all’eseguibile‘ icecast ’ e di un programmacliente per la trasmissione alservente, ovvero al ripetitore, dei file MP3 che altriclienti possonopoi ricevere e riprodurre.

Il servente‘ icecast ’ non richiede file di configurazione, dal momento che tutte le informazioninecessarie per il suo funzionamento vengono fornite attraverso la riga di comando; tuttavia, ledistribuzioni GNU/Linux possono organizzare il pacchetto in modo da avviare il servizio nel-l’ambito dellaprocedura di inizializzazione del sistema, dove loscript di avvio potrebbe leggereun file di configurazione con le informazioni necessarie a comporre il comando completo di avviodi ‘ icecast ’ .

icecast [ opzioni]

A titolo di esempio si può vedere come potrebbe essere strutturato, in modo elementare, loscriptper l’avvio del servizioIcecast:

#!/bin/sh## init.d/icecast start|stop|restart #

# Importazione della configurazione di Icecast. /etc/defaults/icecast

# Analisi dell’argomento usato nella chiamata.case "$1" in

start)echo -n "Avvio del servizio Icecast: "/usr/sbin/icecast $OPZIONI &echo;;

stop)echo -n "Disattivazione del servizio Icecast: "killall icecastecho;;

*)echo "Utilizzo: pippo start|stop "exit 1

esac

exit 0

Si può osservare che loscript importa inizialmente il file‘ /etc/defaults/icecast ’ , nel qualeevidentemente viene dichiarata la variabile di ambiente‘OPZIONI ’ . Per esempio, sempre sempli-ficando al massimo, questo file esterno potrebbe essere strutturato nel modo seguente, con l’unicoscopo di stabilire unaparola d’ordine per l’invio di un flusso audio da ritrasmettere:

PASSWORD=ciao

OPZIONI="-p $PASSWORD"

2Icecast GNU GPL

Page 108: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3842 Audio attraverso la rete

Il servente diIcecast utilizza in modo predefinito delle porte TCP per ricevere e inviare il flus-so audio MP3. La porta 8000 viene utilizzata normalmente per concedere l’accesso ai pro-grammi cliente, la porta 8001 viene utilizzata per ricevere il flusso audio da ritrasmettere edeventualmente la porta 8002 serve per l’amministrazione remota delservente.

Si osservi il fatto che unservente diIcecast potrebbe essere utilizzato anche da un utentecomune, tanto più in considerazione dell’utilizzo normale di porte non privilegiate per il suofunzionamento. In tal caso, evidentemente, non si farebbe uso discript dellaprocedura diinizializzazione del sistema.

L’esempio mostrato anticipa l’uso dell’opzione‘ -p ’ , con la quale si stabilisce unaparola d’or-dine. Ciò permette di evitare che uncliente non autorizzato possa utilizzare ilservente pertrasmettere un flusso audio. Le opzioni principali per l’utilizzo di‘ icecast ’ sono riepilogatebrevemente nella tabella338.1.

Tabella 338.1. Opzioni principali di ‘icecast ’.

Opzione Descrizione- P n Porta TCP per le connessioni deiclienti in ascolto.- E n Porta TCP per le connessioni deiclienti di trasmissione.- A n Porta TCP per le connessioni deiclienti di amministrazione remota.- m n Numero massimo diclienti a cui è consentito l’accesso.- p stringa Parola d’ordine.

338.2.1 Trasmissione al ripetitore

Icecast offre il programma‘shout ’ per la trasmissione alservente del flusso audio MP3:

shout host [ opzioni] [ file_mp3] ...

In condizioni normali, è più che sufficiente l’indicazione dell’indirizzo o del nome del nodo in cuisi trova ilservente da contattare per la trasmissione, assieme all’elenco di file MP3 da trasmettere.Spesso è necessario aggiungere unaparola d’ordine per accedere alservente e questo si ottienecon l’opzione‘ -P ’ . La tabella338.2riepiloga alcune opzione di uso comune.

Tabella 338.2. Opzioni principali di ‘shout ’.

Opzione Descrizione- P stringa Parola d’ordine da trasmettere alservente.- e n Accede alservente attraverso la porta indicata.- l Continua la trasmissione all’infinito.- p file_elenco Indica i file da trasmettere attraverso l’elenco contenuto nel file.- r Sequenza casuale nella trasmissione dei file audio.

$ shout dinkel.brot.dg -P ciao *.mp3

L’esempio precedente fa sì che vengano trasmessi i file corrispondenti al modello‘* .mp3 ’al serventedinkel.brot.dg , fornendo laparola d’ordine «ciao», utilizzando la porta TCPpredefinita (8001).

$ shout dinkel.brot.dg -P ciao -p elenco

Questo secondo esempio è simile al precedente, con la differenza che i file MP3 non vengonoelencati nella riga di comando, ma sono forniti in un elenco contenuto nel file di testo‘elenco ’ .

Page 109: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Audio attraverso la rete 3843

$ shout dinkel.brot.dg -P ciao -r -l -p elenco

Questo ultimo esempio aggiunge l’uso delle opzioni‘ -r ’ e ‘ -l ’ , con le quali si ottiene rispet-tivamente una sequenza casuale nell’ordine dei file audio trasmessi e una trasmissione senzafine.

338.2.2 Ricezione del flusso audio digitale

Il sistema usato daIcecast per trasmettere audio digitale MP3 attraverso il protocollo HTTP èuno standard diffuso, per cui sono diversi i programmi per l’esecuzione di file MP3 che sonoanche in grado di collegarsi a un flusso di questo tipo. In particolare è disponibileFreeAmp, cheper accedere a unserventeIcecast si utilizza semplicemente così:

freeamp http:// host: porta

Per esempio,

$ freeamp http://dinkel.brot.dg:8000

fa sì cheFreeAmp si colleghi al nododinkel.brot.dg , alla porta 8000 in attesa di un flussoMP3.

Icecast offre anche un programmacliente abbastanza spartano, che si limita a emettere il flussoottenuto attraverso lostandard output. Si tratta di‘ listen ’ :

listen host porta [ proxy porta]

La sintassi del programma è essenziale; in particolare si può osservare il vantaggio dato dal-l’uso del protocollo HTTP, che in questo modo consente di utilizzare anche unproxy se ciò ènecessario per raggiungere la rete esterna.

Da solo, ‘ listen ’ serve a poco, perché non fa altro che ricevere il flusso MP3 emettendoloattraverso lostandard output; tuttavia può essere utile per verificare il funzionamento del serviziodi Icecast.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 110: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 339Filmato digitaleLa gestione di filmati avviene generalmente utilizzando il formato MPEG. Per la riproduzione diquesti file, sono disponibili due librerie:MPEG Library1 e SMPEG,2 nota anche con il nomeestesoSDL MPEG.

MPEG sta perMoving picture experts groupe rappresenta uno standard per la rappresentazionedi immagini, filmati e audio. Gli standard per i filmati sono fondamentalmente due: MPEG-1e MPEG-2. Il primo è quello più comune, mentre il secondo riguarda prevalentemente i dischiDVD (Digital versatile disk). L’informazione audio utilizza i formati MP2 e MP3 (MPEG audiolayer 2 e 3). Normalmente, l’estensione di un file contenente un filmato MPEG è‘ .mpg ’ .

In generale, il software disponibile consente di visualizzare il formato MPEG-1 con audio MP2o MP3.

339.1 GTV

GTV 3 è un programma molto semplice, per il sistema grafico X, che si avvale della libreriaSDL MPEG. Si compone dell’eseguibile‘gtv ’ e si utilizza senza opzioni nella riga di comando,con la possibilità di indicare un solo file MPEG. All’avvio si presenta come si vede nella figura339.1.

Figura 339.1. Pannello di controllo di GTV, dopo aver aperto e avviato il file ‘/tmp/

prova.mpg ’.

Si può osservare la disponibilità di una visualizzazione al doppio della dimensione normale,attraverso il bottoneDO U B L E, così come la possibilità di eseguire il file in modo continuo conil bottone LO O P. Dalla figura si può vedere che il bottoneAU D I O non è disponibile, perché ilfile in questione non incorpora audio; lo scopo del bottone è proprio quello di abilitare, quandodisponibile, l’ascolto dell’audio.

339.2 PlayMPEG

PlayMPEG4 è un altro programma per l’esecuzione di file MPEG, per il sistema grafico X, cheutilizza la libreriaSDL MPEG. Si compone dell’eseguibile‘plaympeg ’ e si utilizza soltantoattraverso la riga di comando. Al momento,PlayMPEG non offre alcuna possibilità di controllodurante l’esecuzione dei brani; tuttavia è almeno possibile indicare una sequenza di file che poiviene visualizzato in modo continuo.

plaympeg [ opzioni] file_mpeg...

1MPEG Library software libero con licenza speciale2SDL MPEG GNU LGPL3GTV GNU GPL4PlayMPEG GNU GPL

3844

Page 111: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Filmato digitale 3845

Alcune opzioni

--noaudio

Esclude l’audio, se il file contiene questa informazione.

--novideo

Esclude il video se presente.

Anche se potrebbe sembrare strano,PlayMPEG è in grado di eseguire file di formatiaudio compatibili con quelli che può includere il formato MPEG video.

--fullscreen

Utilizza lo schermo intero, ma richiede di funzionare con i privilegi dell’utente‘ root ’ .

--double | -2

Raddoppia la dimensione dell’immagine.

--loop

Esegue la sequenza di ogni file in modo continuo. In generale, conviene usare questa op-zione solo quando si tratta di un file singolo, perché non si ottiene la ripetizione dell’interasequenza di file.

--volume n | -v n

Permette di specificare il livello del volume sonoro, aggiungendo un numero, da 0 a 100,dove ovviamente il primo rappresenta un volume nullo e il secondo indica il volumemassimo.

Esempi

$ plaympeg *.mpg

Esegue in sequenza tutti i file che terminano con l’estensione‘ .mpg ’ .

$ plaympeg *.mp3

Esegue in sequenza tutti i file che terminano con l’estensione‘ .mp3 ’ . Presumibilmente sitratta di file audio in formato MP3.

$ plaympeg --double *.mpg

Esegue in sequenza tutti i file che terminano con l’estensione‘ .mpg ’ , ingrandendo leimmagini al doppio della dimensione originale.

339.3 Riferimenti

• MPEG pointers and resources

<http://www.mpeg.org/MPEG/index.html>

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 112: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 340

Masterizzazione di CD audioLa realizzazione di un CD audio non è altrettanto semplice quanto creare un CD-ROM (dati).Esistono diversi fattori di cui occorre prendersi cura:

1. la disposizione corretta delle tracce e delle pause, rispettando gli standard;

2. la conclusione corretta della registrazione (finalization), senza la quale mancherebbero leinformazioni necessarie a raggiungere le tracce, impedendo l’ascolto del CD;

3. la registrazione a una velocità adeguata al tipo di supporto (a seconda delle caratteristichedel CD vergine possono non essere ammissibili velocità di incisione troppo basse o troppoalte);

4. il tipo di supporto adatto agli apparecchi di riproduzione comuni.

La scelta del CD vergine incide quindi anche sulla possibilità o meno di utilizzare una certavelocità di incisione. Di solito si consiglia una velocità doppia (2x), anche se in pratica occorresperimentare per determinare effettivamente quale sia la velocità migliore (sia per il tipo di CDvergine, sia per la possibilità effettiva di ascoltare il CD in apparecchi standard). A ogni modo,occorre considerare che una velocità di incisione bassa, scalda di più il CD vergine, che se non èrealizzato per sopportarla, può risultare danneggiato al termine del ciclo di registrazione.

Esistono alcuni apparecchi di riproduzione per CD audio che non accettano espressamente iCD realizzati in modo non industriale. In quei casi, non c’è alcuna possibilità di produrre unCD compatibile, se non disponendo di tutta l’attrezzatura necessaria.

Quando si realizza un CD audio, capita facilmente che questo funzioni correttamente utilizzandoil lettore di un elaboratore, mentre sia impossibile ascoltarlo in un impianto audio normale. Ilmotivo più comune per cui ciò accade è l’utilizzo di un formato non perfettamente standard, pro-babilmente a causa di una carenza del programma utilizzato per l’incisione. In questa situazione,può succedere di trovare che il CD che si ottiene non funzioni affatto in certi apparecchi audio,mentre in altri non riesce a cominciare dall’inizio.

Anche le caratteristiche del CD vergine possono essere motivo di discriminazione tra un lettore eun altro, ma si tratta di problemi meno frequenti. Tuttavia, per questo si tende a usare CD verginirealizzati appositamente per le registrazioni audio (consumer), che però richiedono una velocitàdi incisione molto bassa: singola (1x) o doppia (2x).

Nel capitolo70 è già stato mostrato brevemente l’uso diCdrecord e diCdrdao, allo scopo direalizzare CD-ROM molto semplici. Qui viene ripreso l’uso di questi programmi in merito allarealizzazione di CD audio.

L’intento di questo capitolo è esclusivamente quello di diffondere la conoscenza sull’uso delCD come unità di memorizzazione di informazioni audio. È responsabilità di chi utilizza leinformazioni sapere quando queste attività sono legali e quando non lo sono, perché lesive deldiritto di autore.

3846

Page 113: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Masterizzazione di CD audio 3847

340.1 Cdrdao

Cdrdao1 è un programma per l’incisione di CD-R, che richiede la definizione di un file di testocontenente tutte le informazioni necessarie a collocare correttamente le tracce audio e dati. Sifa riferimento a questo file come al «file TOC». Questo fatto può apparire come una complica-zione eccessiva per la gestione del programma, ma occorre considerare che oltre all’eseguibile‘cdrdao ’ , utilizzato attraverso la riga di comando, è disponibile anche‘xcdrdao ’ che è un pan-nello frontale interattivo in grado di guidare alla realizzazione di tali file TOC per produrre CDaudio.

È opportuno richiamare la sintassi per l’utilizzo dell’eseguibile‘cdrdao ’ , dove in particolare sidistingue un primo argomento contenente un comando, seguito da opzioni eventuali e alla finedall’indicazione del file TOC:

cdrdao comando [ opzioni] file_toc...

Il problema dell’indicazione dell’unità SCSI è già stato descritto nel capitolo70, a ogni modo,quando l’unità del masterizzatore è collegato attraverso un adattatore SCSI, si utilizza l’opzione‘ --device ’ nel modo seguente:

--device unità_controllo_scsi, scsi_id, lun

Per poter approfondire le direttive del file TOC occorrerebbe conoscere adeguatamente il tipodi informazioni che un CD audio può contenere. In pratica, nella realizzazione di un CD nonprofessionale non si inseriscono informazioni speciali; in particolare non è sensato l’inserimentodi un numero di identificazione. Pertanto, in condizioni normali è sufficiente fare riferimento apochi esempi significativi.

In ogni caso è necessario sapere che le righe vuote e quelle bianche vengono ignorate, mentre icommenti si indicano preceduti da due barre oblique:‘ // ’ .

CD_DATRACK AUDIOFILE "data.wav" 0

L’esempio che appare sopra è il caso più semplice in cui si vuole ottenere un CD a partire dauna sola traccia audio, contenuta nel file‘data.wav ’ (di tipo WAV-RIFF), collocato nella direc-tory corrente, senza altre inserzioni particolari. Questo tipo di configurazione si presta pertantoalla registrazione di una conferenza, di una lezione, o di qualunque altra cosa che non ha sensospezzettare in tracce distinte.

CD_DA

// Traccia 1TRACK AUDIONO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "traccia-01.wav" 0

// Traccia 2TRACK AUDIONO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "traccia-02.wav" 0

L’esempio che appare sopra è un po’ più lungo e mostra l’inserimento di due tracce, corri-spondenti ai file‘ traccia-01.wav ’ e ‘ traccia-02.wav ’ . Le direttive‘NO PRE_EMPHASIS’ e‘TWO_CHANNEL_AUDIO’ sono abbastanza intuitive e rappresentano anche la situazione comuneper la registrazione di un CD.

1Cdrdao GNU GPL

Page 114: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3848 Masterizzazione di CD audio

CD_ROM

// Traccia 1 datiTRACK MODE1DATAFILE "dati.iso9660"ZERO 00:02:00 // post-gap

// Traccia 2 audioTRACK AUDIOSILENCE 00:02:00 // pre-gapSTARTFILE "audio-1.wav" 0

// Traccia 3 audioTRACK AUDIOFILE "audio-2.wav" 0

Questo esempio ulteriore è il più complesso tra quelli mostrati. Si può osservare la dichiarazioneiniziale come CD-ROM, attraverso la direttiva‘CD_ROM’ . Alla fine della prima traccia (dati),corrispondente al file‘dati.iso9660 ’ , viene aggiunto uno spazio, azzerato, della lunghezza didue secondi. All’inizio della prima traccia audio, corrispondente al file‘audio-1.wav ’ , vieneaggiunta una pausa di silenzio di due secondi; la seconda traccia audio inizia normalmente.

Si osservi che in un CD che deve contenere sia dati che audio, conviene che ci sia una solatraccia dati e che sia la prima.

340.1.1 Copia di un CD

Il comando‘copy ’ di Cdrdao consente di ottenere una copia di un CD. Per ottenere questo risul-tato,Cdrdao deve essere in grado di riconoscere le tracce e le caratteristiche che le riguardano.In pratica, la copia avviene generando prima un file TOC in base alle informazioni tratte dal CD,quindi il CD viene letto generando un file temporaneo unico, infine viene eseguita l’incisioneusando il file temporaneo e il file TOC. Eventualmente è possibile saltare la fase di memorizza-zione del file temporaneo, se il lettore è diverso dal masterizzatore e se il primo ha una velocitàdi accesso tale da garantire che il flusso di dati non venga interrotto. In pratica, non conviene farela copia al volo, anche se le unità di lettura e di scrittura sono distinte.

In questa situazione è importante osservare che il file contenente i dati e le tracce audio è unosolo, per cui il file TOC che si genera è un po’ particolare, a causa della necessità di delimitare laposizione delle tracce. A titolo di esempio viene mostrato ciò che si potrebbe ottenere da un CDaudio reale:2

CD_DA

CATALOG "0028942693623"

// Track 1TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOSILENCE 00:00:32FILE "data.bin" 0 03:11:00START 00:00:32

2È per questo che appare la direttiva‘NO COPY’ : si tratta di un CD musicale reale per il quale è comunque vietatala riproduzione. L’esempio serve a vedere come viene interpretato il contenuto di un CD industriale tipico da parte diCdrdao.

Page 115: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Masterizzazione di CD audio 3849

// Track 2TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOISRC "NLA506300346"FILE "data.bin" 03:11:00 03:13:00

// Track 3TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOISRC "NLA506300347"FILE "data.bin" 06:24:00 02:44:00

// Track 4TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "data.bin" 09:08:00 04:20:00

// Track 5TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOISRC "NLA506300349"FILE "data.bin" 13:28:00 03:06:00

// Track 6TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "data.bin" 16:34:00 03:27:00

// Track 7TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOISRC "NLA506300351"FILE "data.bin" 20:01:00 03:24:00

// Track 8TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOISRC "NLA506300352"FILE "data.bin" 23:25:00 03:53:00

// Track 9TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIO

Page 116: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3850 Masterizzazione di CD audio

FILE "data.bin" 27:18:00 02:07:00

// Track 10TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOISRC "NLA506300354"FILE "data.bin" 29:25:00 03:06:00

// Track 11TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "data.bin" 32:31:00 03:28:00

// Track 12TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOISRC "NLA506300356"FILE "data.bin" 35:59:00 03:00:00

// Track 13TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "data.bin" 38:59:00 03:47:00

// Track 14TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOISRC "NLA506300358"FILE "data.bin" 42:46:00 03:16:00

// Track 15TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "data.bin" 46:02:00 03:29:00

// Track 16TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOISRC "NLA506300360"FILE "data.bin" 49:31:00 02:37:00

// Track 17TRACK AUDIONO COPY

Page 117: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Masterizzazione di CD audio 3851

NO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "data.bin" 52:08:00 03:26:00

// Track 18TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "data.bin" 55:34:00 04:06:00

Si può osservare che ogni traccia fa riferimento allo stesso file, qui indicato come‘data.bin ’ ,dove ogni volta si indica la posizione iniziale, espressa in minuti, secondi e centesimi di secondo,assieme alla lunghezza della traccia, indicata nello stesso modo.

L’esempio successivo è ottenuto da un CD-ROM industriale. Si può osservare la presenza di unasola traccia:

CD_ROM

// Track 1TRACK MODE1NO COPYDATAFILE "data_1" 62:14:27 // length in bytes: 573597696

Infine, ecco come si può copiare un CD, indipendentemente dal fatto che si tratti di un CD-ROM(dati), di un CD audio, o di un CD dati e audio. In particolare, si fa riferimento a un lettore-masterizzatore collocato nell’unità SCSI numero tre. È evidente che il file TOC, denominato‘elenco.toc ’ viene creato automaticamente.

# cdrdao copy -v 2 --speed 4 --device 0,3,0 --buffers 64 ←→--paranoia-mode 3 --datafile data.bin elenco.toc

L’esempio crea una copia di un CD utilizzando la stessa unità per la lettura del CD e per lascrittura successiva. In particolare, oltre alle opzioni che dovrebbero essere già note: il file tem-poraneo che viene creato è‘data.bin ’ (opzione‘ --datafile data.bin ’); viene richiesto uncontrollo particolare del CD letto (opzione‘ --paranoia-mode 3 ’).

In alternativa, per fare più copie dello stesso CD, basta creare un’immagine, con il comando‘ read-cd ’ , che poi viene riprodotta con il comando‘write ’ normale. Per esempio,

# cdrdao read-cd -v 2 --device 0,3,0 --paranoia-mode 3 ←→--datafile data.bin elenco.toc

per creare il file‘data.bin ’ , assieme al file TOC‘elenco.toc ’ , quindi

# cdrdao write -v 2 --speed 4 --device 0,3,0 --buffers 64 elenco.toc

per incidere un CD in base a quanto contenuto nel file‘elenco.toc ’ , da ripetere per tutte lecopie che si vogliono ottenere.

340.1.2 Xcdrdao

Xcdrdao è unprogramma frontale per la realizzazione di file TOC di CD audio, guidando finoall’operazione di incisione dei CD vergini. Se si vuole arrivare a pilotare l’incisione del CD,occorre avviarlo con i privilegi dell’utente‘ root ’ ; in tal caso dovrebbe essere in grado di in-dividuare l’unità adatta alla masterizzazione, ma se necessario è possibile intervenire nelmenùSettings alla voceDevices .

Page 118: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3852 Masterizzazione di CD audio

Figura 340.1. Xcdrdao all’avvio senza l’indicazione di un file TOC.

Xcdrdao si compone dell’eseguibile‘xcdrdao ’ , che può essere avviato eventualmente indicandoil nome di un file TOC. La figura340.1mostra il caso comune diXcdrdao avviato senza alcunaindicazione, dove tutto deve essere definito.

xcdrdao [ file_toc]

A titolo di esempio, si suppone di disporre di due file WAV-RIFF da inserire in un CD. La primacosa che si fa è quella di dare un nome al file TOC, salvandolo anche se vuoto. Per questo siseleziona la voceSave As delmenùFile ; si ottiene così una finestra che consente la navigazionetra le directory e l’indicazione del file che si vuole salvare. Per iniziare a inserire le tracce, siprocede selezionando la voceAdd Track dal menùTools ; si ottiene la finestra che si vede nellafigura340.2, dove già ci si accinge a inserire il file‘ /tmp/wav/1.wav ’ .

Figura 340.2. Aggiunta delle tracce nel file TOC.

Page 119: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Masterizzazione di CD audio 3853

Dopo la conferma con il pulsante graficoOK , si può aggiungere un altro file, in questo caso‘ /tmp/wav/2.wav ’ . Dopo aver confermato anche l’ultimo inserimento, si conclude selezionan-do il pulsante graficoCA N C E L . Al termine, per visualizzare la situazione dei file aggiunti, con-viene selezionare la voceFullview dal menùView . Ovviamente conviene anche salvare il fileTOC.

Figura 340.3. Xcdrdao dopo la selezione dei file audio da aggiungere.

Al termine della selezione delle tracce, una volta visualizzato il risultato grafico dell’insieme, èpossibile fare una prova di ascolto del CD, prima ancora di passare all’incisione. Si ottiene questosemplicemente selezionando il pulsante graficoPL A Y . Al termine si può decidere di passareall’incisione, attraverso la voceRecord dal menùActions . Ovviamente, in questo modo si va apilotare l’eseguibile‘cdrdao ’ con il file TOC sul quale si sta lavorando.

Figura 340.4. Ultima conferma prima dell’incisione del CD.

A titolo di esempio, viene mostrato anche il file TOC generato in questo modo:

Page 120: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3854 Masterizzazione di CD audio

CD_DA

// Track 1TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "/tmp/wav/1.wav" 0 10555247SILENCE 529

// Track 2TRACK AUDIONO COPYNO PRE_EMPHASISTWO_CHANNEL_AUDIOFILE "/tmp/wav/2.wav" 0 8461487SILENCE 421

Si può osservare che sono stati aggiunte in modo predefinito le direttive di opzione‘NO COPY’ ,‘NO PRE_EMPHASIS’ e ‘TWO_CHANNEL_AUDIO’ , così come le pause di silenzio alla fine delletracce.

340.2 Cdrecord

Cdrecord3 non è particolarmente adatto alla realizzazione di CD audio, tuttavia è opportunocompletare il quadro mostrando in che modo ciò potrebbe essere fatto con questo programma. Inparticolare si utilizza l’opzione‘ -audio ’ per specificare che i file successivi sono da intendersidelle tracce audio.

È opportuno richiamare la sintassi per l’utilizzo dell’eseguibile‘cdrecord ’ :

cdrecord [ opzioni_generali] dev= dispositivo [ opzioni_di_traccia] file_traccia...

Il problema dell’indicazione dell’unità SCSI è già stato descritto nel capitolo70, a ogni modo,quando l’unità del masterizzatore è collegato attraverso un adattatore SCSI, si specifica l’unità inuno dei due modi seguenti:

dev= unità_controllo_scsi, scsi_id, lun

dev= scsi_id, lun

In pratica, il secondo modo può essere utilizzato quando si dispone di un’unicaunità di controlloSCSI.

Per quanto riguarda l’uso delle opzioni‘ -data ’ e ‘ -audio ’ , è necessario sapere cheCdrecordconsidera automaticamente tracce audio i file che terminano con le estensioni‘ .au ’ e ‘ .wav ’ .Vengono mostrati solo alcuni esempi.

# cdrecord -v -speed=2 dev=3,0 -audio prova_*.wav

Questo esempio rappresenta il caso più comune. Viene richiesta l’incisione di un CD con-tenuto nell’unità SCSI numero tre del primo adattatore SCSI, a doppia velocità, dei file checorrispondono al modello‘prova_ * .wav ’ .

# cdrecord -v -speed=2 dev=3,0 immagine.iso9660 -audio prova_*.wav

Questo esempio ulteriore mostra il caso di un CD contenente una traccia dati e una serie di tracceaudio. In pratica, differisce dall’esempio precedente solo per l’aggiunta dell’indicazione del file

3Cdrecord GNU GPL

Page 121: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Masterizzazione di CD audio 3855

‘ immagine.iso9660 ’ , che si intende un’immagine di unfile system ISO 9660. Si osservi lamancanza dell’opzione‘ -data ’ , perché non indispensabile.

340.3 Wav2cdr

Wav2cdr4 è un programma nato originariamente per convertire file WAV-RIFF nel formato CDR,ovvero quello adatto alla masterizzazione di CD audio. Tuttavia, siaCdrdao, siaCdrecord sonoin grado di accettare direttamente file in formato WAV-RIFF, senza bisogno di convertirli primain formato CDR, per cui questa funzionalità diWav2cdr non è più così importante. L’eseguibileche compie il lavoro è‘wav2cdr ’ e la sua sintassi generale è molto vaga:

wav2cdr opzioni

La caratteristica più importante diWav2cdr è invece quella di riuscire a individuare facilmentele pause di silenzio all’interno di un file e di consentirne la suddivisione. Prima di arrivare acomprendere il meccanismo è necessario prendere confidenza con l’opzione‘ --cut ’ che richiedel’indicazione di una serie di coppie di numeri, secondo l’unità «C», che perWav2cdr esprime1/72 di secondo. Per esempio,

--cut 10000C 20000C 20100C 50000C 55000C 70000C

serve a delimitare tre pezzi che vanno dalla posizione 10001 alla 20000, dalla 20101 alla 50000e dalla 55001 alla 70000. Si osservi quindi che nell’elenco di argomenti dell’opzione‘ --cut ’ ,il primo numero di ogni intervallo è escluso.

Per individuare le pause in modo automatico,Wav2cdr deve essere informato della durata minimache queste devono avere e dell’ampiezza sonora massima da considerare come «silenzio» (illivello di soglia del rumore di fondo). La durata delle pause si definisce attraverso l’opzione‘ --silencedelay ’ , a cui segue l’indicazione del numero corrispondente a quantità di 1/72 disecondo (come già visto per l’opzione‘ --cut ’), mentre il livello sonoro massimo di queste pauseè definito dall’opzione‘ --silencethresh ’ , a cui si aggiunge un numero da determinare in basea delle prove. In generale, il valore predefinito per questo livello sonoro è 10; incrementandolosi intende superare un rumore di fondo eventuale, come quello contenuto in una registrazione sunastro magnetico analogico.

Per suddividere un file audio conWav2cdr si passa generalmente per due stadi: la scansionedel file per individuare gli intervalli, utilizzando l’opzione‘ --silencecuts ’ , generando un filecontenente l’indicazione di tali intervalli; quindi la suddivisione del file, con l’opzione‘ --cut ’ ,riutilizzando il file contenente l’elenco dei tagli da fare. Ecco come si potrebbe procedere conuna registrazione ottenuta da una cassetta audio analogica:

$ wav2cdr --inwav --infile prova.wav ←→--silencecuts --silencedelay 30C --silencethresh 80 > elenco

$ wav2cdr --inwav --towav --infile prova.wav ←→--outfile traccia --cut ‘cat elenco‘

Come si può intuire, il file WAV-RIFF che viene scandito e poi separato è‘prova.wav ’ , mentreil file contenente l’elenco delle sezioni separate dalla pausa stabilita è‘elenco ’ . Il secondo deidue comandi creerà quindi una serie di file, in questo caso ancora WAV-RIFF in quanto richiestoespressamente, con nomi corrispondenti al modello‘ traccia n’ (‘ traccia01 ’ , ‘ traccia02 ’ ,ecc.).

4Wav2cdr GNU GPL

Page 122: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3856 Masterizzazione di CD audio

Dopo una suddivisione del genere è utile ascoltare i vari file ottenuti per determinare se le sud-divisioni sono corrette o meno. Nel caso si voglia eliminare una suddivisione è facile modificarel’elenco. Per esempio, supponendo di avere l’elenco

0C 2528C2528C 3236C3236C 5422C5422C 6597C6597C 18907C18907C 27772C27772C 40000C

si può decidere di eliminare completamente il primo intervallo, di fondere assieme il secondocon il terzo e il quarto con il quinto, lasciando stare il resto. Basterebbe modificare l’elenco nelmodo seguente, ottenendo in pratica solo quattro suddivisioni:

2528C 5422C5422C 18907C18907C 27772C27772C 40000C

Alcune opzioni--cut n_iniziale_esclusoC n_finale_inclusoC [ n_iniziale_esclusoC n_finale_inclusoC] ...

Delimita gli intervalli di tempo da estrarre dal file in ingresso.

--infile nome_file_in_ingresso

Definisce il nome del file audio in ingresso.

--outfile radice_nome_file_in_uscita

Definisce la radice del nome dei file audio ottenuti dalla separazione del file in ingres-so. A questo nome viene aggiunto un numero composto da due cifre, per distinguerne lasequenza.

--inwav | --incdr

Il file in ingresso è di tipo WAV-RIFF, oppure è in formato CDR.

--towav | --tocdr

I file da generare devono essere in formato WAV-RIFF oppure CDR.

--silencecuts

Emette l’elenco di intervalli distinguibili dalle pause di silenzio (da definire in base alleopzioni‘ --silencedelay ’ e ‘ --silencethresh ’). Si osservi che l’elenco viene emessoattraverso lostandard output, mentre dallostandard error si ottengono ugualmente altreinformazioni generali.

--silencedelay nC

Definisce la durata minima delle pause di silenzio, dove il numero esprime unità di 1/72 disecondo. Se non si usa questa opzione è stabilita una pausa minima di «30C», pari a 0,4 s.

--silencethresh n

Esprime il livello sonoro massimo, al di sotto del quale si intende si tratti di silenzio. Ilvalore predefinito è 10 e valori superiori alzano la soglia del rumore di fondo consentito.

Page 124: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 341

X-CD-RoastX-CD-Roast1 è un sistema di programmi fatti per la masterizzazione di CD audio e dati, rac-colti assieme sotto un pannello di controllo grafico per X.X-CD-Roast non è un applicativoindispensabile, tuttavia promette di essere aggiornato nel tempo e di facilitare sempre di più larealizzazione di CD.

Come al solito, a questo proposito, occorre ricordare che l’acquisto di un CD audio non dàimplicitamente il diritto di farne quello che si vuole. In generale si ottiene solo il diritto diascoltarlo per sé; mentre altre operazioni come la copia, l’esecuzione in pubblico e la tra-smissione, sono attività che devono essere autorizzate espressamente da chi detiene i diritti diquella pubblicazione sonora.

Tra le altre cose,X-CD-Roast facilita notevolmente l’estrazione di tracce dati e audio da unCD; tuttavia, utilizzare questa tecnica per memorizzare brani musicali o altri dati in un’unitàdi memorizzazione qualunque, vuol dire farne una «copia» e ciò rappresenta un’azione chenormalmente è vietata da chi possiede i diritti sulla pubblicazione relativa, salvo che si trattidi software libero, o di un’altra forma di espressione artistica altrettanto libera.

In generale, a meno di provvedere da soli alla compilazione dei sorgenti diX-CD-Roast, que-sto applicativo funzionerà bene solo se quello che si installa è un pacchetto fatto proprio per lapropria distribuzione GNU/Linux. In questo modo, tra le altre cose, si garantisce che siano soddi-sfatte tutte le dipendenze con i vari programmi, la cui presenza è necessaria per tutte le funzionicheX-CD-Roast è in grado di controllare.

341.1 Configurazione e permessi

Per svolgere le sue funzioni correttamente,X-CD-Roast richiede spesso i privilegi dell’utente‘ root ’ . Sarebbe meglio che questo programma venisse usato soltanto dall’utente‘ root ’ , maspesso questa limitazione non è tollerabile e si è quasi costretti ad attivare il bit SUID dell’ese-guibile ‘xcdroast ’ per scavalcare tutti i vincoli. Per limitare il problema le funzioni disponibiliagli utenti comuni che dovessero avviarlo sfruttando la presenza del permesso SUID sono limita-te; tuttavia, ciò non può bastare per garantire contro l’uso improprio del programma e tanto menoper risolvere tutti i problemi di sicurezza che potrebbero apparire in futuro. Quindi, se si decidedi attivare il bit SUID dell’eseguibile‘xcdroast ’ , bisogna sapere che il sistema non è più tantosicuro (ammesso che prima lo fosse).

Una volta installato per la prima voltaX-CD-Roast, prima di manomettere i suoi permessi, l’u-tente‘ root ’ che vuole concedere l’uso dell’applicativo anche agli altri utenti deve avviare unavolta l’eseguibile‘xcdroast ’ con l’opzione‘ -nonroot ’ . Dopo una prima schermata di avver-timento, con la quale si chiede di prendere atto dei pericoli che si corrono utilizzando questoapplicativo, si arriva alla maschera delmenù generale, in cui si vede chiaramente che la modalitàdi funzionamento è quella definita come‘nonroot ’ . Si veda a questo proposito la figura341.1.

# xcdroast -nonroot

1X-CD-Roast GNU GPL

3858

Page 125: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

X-CD-Roast 3859

Figura 341.1. Menù iniziale di X-CD-Roast. Si osservi che il programma sta funzionandoin modalità ‘nonroot ’.

La prima cosa da fare è quella di definire la configurazione di partenza, per gli aspetti a cuigli utenti comuni non potranno accedere successivamente. Si fa questo selezionando il pulsantegrafico SE T U P .

Figura 341.2. Configurazione del masterizzatore e del lettore. In questo caso, il lettoreè lo stesso masterizzatore.

In particolare, meritano attenzione le cartelle per la configurazione del masterizzatore e del letto-re, oltre all’area da utilizzare per le immagini delle tracce. Nella figura341.2si vede cheX-CD-Roast dovrebbe essere in grado di individuare da solo il tipo di masterizzatore e il tipo di lettoredi CD, ma qui deve essere regolata almeno la velocità di masterizzazione. Nella figura341.3sivede invece la definizione dell’area di memoria da utilizzare per preparare o per scaricare le im-magini delle tracce. Se si dispone di un elaboratore di fascia media, è più che sufficiente la sceltadi una directory apposita. Nella figura si mostra l’uso di‘ /tmp/ ’ .

Page 126: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3860 X-CD-Roast

Figura 341.3. Configurazione dell’area di memoria temporanea, nel disco fisso, per leimmagini delle tracce. Si osservi la selezione della directory ‘/tmp/ ’.

Dopo aver controllato anche le altre cartelle, si può salvare la configurazione selezionando ilpulsante graficoSA V E . Ciò fa sì che venga creato il file di configurazione generale, che potrebbeessere‘ /etc/xcdroast/xcdroast.conf ’ , o un altro simile collocato altrove (ma questo fattonon è auspicabile). Da questo momento in poi, l’utilizzo diX-CD-Roast è sempre in modalità‘nonroot ’ e si può attivare il bit SUID se lo si ritiene opportuno (per uscire dalla configurazionebasta selezionare il pulsante graficoDO N E e quindi EX I T per terminare il funzionamento diquesta sessione di lavoro particolare).

# chmod u+s /usr/bin/xcdroast

In seguito,X-CD-Roast può essere usato anche dagli utenti comuni, che avranno accesso auna configurazione ridotta; in particolare non potranno cambiare la definizione della memo-ria temporanea per la gestione delle tracce. La configurazione personalizzata degli utenti vienememorizzata nel file‘~/.xcdroast/xcdroast.conf ’ .

Però, non è ancora tutto finito se si vuole lasciare effettivamente che gli utenti comuni utilizzinoquesto programma. Infatti, è necessario regolare i permessi dei file di dispositivo relativi alleunità a cui deve accedereX-CD-Roast. In generale, i file di dispositivo corrispondenti ai lettoriCD devono avere esclusivamente i permessi di lettura e scrittura per l’utente‘ root ’ ;

# chmod 0600 /dev/sg* /dev/sr* /dev/scd*

ma per consentire la copia rapida, è necessario che gli utenti in questione possano leggere ildispositivo corrispondente al lettore CD. Se si suppone che ilcollegamento simbolico‘ /dev/

cdrom ’ corrisponda al file di dispositivo corretto, basta intervenire su questo. Prima di modificaretali permessi, però, si pone il problema di decidere quale libertà dare agli utenti comuni. Se sidecide di concedere l’accesso a tutti, si può usare il comando:

# chmod a+r /dev/cdrom

Invece, se si vuole limitare l’accesso agli utenti che appartengono al gruppo di questo file didispositivo (di solito si tratta di‘disk ’), occorre limitare i permessi al gruppo:

# chmod g+r /dev/cdrom

X-CD-Roast deve poter accedere anche al file di dispositivo‘ /dev/dsp ’ , almeno in scrittura.Anche in questo caso vale la possibilità di distinguere se si vuole concedere l’accesso solo a chiappartiene anche al suo gruppo (di solito si tratta di‘audio ’), oppure se si ritiene opportunolasciare l’accesso a qualunque utente:

Page 127: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

X-CD-Roast 3861

# chmod g+w /dev/dsp

oppure

# chmod a+w /dev/dsp

Se si lasciano i permessi di lettura agli utenti, questi possono ascoltare attraverso la schedaaudio, anche attraverso la rete, arrivando a poter spiare le conversazioni che si svolgono nellastanza in cui si trova quell’elaboratore. Questo è il motivo per cui si cerca di evitare di dare ipermessi di lettura a questo file di dispositivo.

341.2 Masterizzazione dati

La masterizzazione tradizionale, che parte dalla creazione di un’immagine per arrivare all’in-cisione di un disco, avviene per mezzo della funzione accessibile tramite il pulsante graficoMA S T E R CD , del menù principale diX-CD-Roast. La figura341.4 mostra la selezione della

directory a partire dalla quale si vuole ottenere l’immagine del contenuto.

Figura 341.4. Definizione della directory di partenza per la creazione di un’immagine.

Con il pulsante SE T I M A G E-T Y P E si accede a una maschera con la quale si definisconoalcuni dettagli importanti sulle caratteristiche dell’immagine. In generale, conviene attivaresimultaneamente sia le estensioniRock Ridge che quelleJoliet.

Con il pulsanteMA S T E R I M A G E si accede alla maschera con la quale poi si può confermare l’av-vio della creazione del file contenente l’immagine ISO 9660, che successivamente potrà esseretrasferita nel CD. Per iniziare, basta selezionare il pulsanteST A R T MA S T E R I M A G E. La figura341.5mostra la finestra di attesa per il processo di preparazione dell’immagine.

Page 128: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3862 X-CD-Roast

Figura 341.5. Attesa per la preparazione dell’immagine.

Con il pulsanteWR I T E I M A G E si accede alla maschera con la quale poi si può confermare l’avviodell’incisione del CD vergine. Si osservi nella figura341.6la disponibilità di una casella di sele-zione con la quale si può richiedere di eseguire l’operazione solo in simulazione, per controllareche il flusso di dati possa avvenire effettivamente alla velocità stabilita.

Con il pulsante VE R I F Y B U R N E D I M A G E si accede alla maschera di controllo del CD appe-na inciso. Il controllo avviene attraverso la lettura integrale della traccia. Infine, con il pul-sante DE L E T E I M A G E S si accede alla maschera con la quale si possono selezionare i file cherappresentano le immagini contenute nella directory temporanea che funge da serbatoio di questi.

Figura 341.6. Preparazione alla scrittura del CD.

341.3 Copia di un CD contenente dati

La copia di un CD contenente dati consiste nel trasferimento dell’immagine dalla traccia datidel CD-ROM in un file e nel successivo riutilizzo per l’incisione di un altro CD. L’operazione èmolto semplice, ma bisogna ricordare che questo tipo di copia può essere fatto solo quando i datiin questione possono essere riprodotti legalmente. Si accede a questa funzione diX-CD-Roastattraverso il pulsante graficoCO P Y DA T A-CD delmenù principale, quindi, in breve:

• RE A D I M A G E legge l’immagine del CD-ROM in un file;

• VE R I F Y I M A G E monta l’immagine e ne permette il controllo, prima di incidere un CD;

• WR I T E I M A G E inizia l’incisione di un nuovo CD;

Page 129: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

X-CD-Roast 3863

• VE R I F Y B U R N E D I M A G E verifica l’integrità del CD appena inciso;

• DE L E T E I M A G E S permette di eliminare facilmente le immagini che non servono più dalladirectory che le contiene;

• QU I C K CD CO P Y permette di incidere un CD a partire da un originale, senza passare per lagenerazione di un file-immagine (ammesso che sia disponibile un altro lettore CD.

341.4 CD contenente tracce audio

Un CD contenente dati, di solito è composto da una sola traccia, mentre un CD audio è compostoda tante tracce quanti sono i brani musicali contenuti. La riproduzione di un CD audio passa nor-malmente per l’estrazione di tutte le tracce in altrettanti file, che poi possono essere ricompostecome si vuole in un altro CD. Per accedere a queste funzionalità, si seleziona il tasto graficoCO P Y AU D I O-CD delmenù principale.

Per l’ennesima volta, si ricorda che queste cose si possono fare solo se sono concesseespressamente da chi detiene i diritti di autore.

In questa sezione, piuttosto che mostrare in dettaglio come estrapolare le tracce da un CD audio,per generarne una copia, si preferisce puntare l’attenzione sulla creazione di un CD audio inproprio. Tuttavia, non ci si devono aspettare risultati eccellenti, dal momento che spesso, perqualche motivo, i CD che si ottengono non funzionano sugli apparecchi di ascolto comuni.

X-CD-Roast consente di partire da tracce audio in formato grezzo, oppure in formato WAV-RIFF(16 bit, stereo, 44100 Hz). Il secondo, essendo fornito di intestazione, rappresenta decisamente lascelta migliore; infatti, se si vuole usare un formato grezzo, occorre poi preoccuparsi di stabilirel’ordine giusto dei byte.

Una volta preparati i file WAV, questi vanno collocati nella directory in cuiX-CD-Roast si aspettadi trovare le tracce da registrare. Nella figura341.7si vede la situazione mostrata dalla mascherache si raggiunge con il tastoWR I T E TR A C K S, prima di avere selezionato i file WAV da utilizzareper le tracce del CD da registrare.

È importante che la casellina indicata come‘Fix Wav-Files ’ , sia selezionata, come si vedenella figura.

Page 130: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3864 X-CD-Roast

Figura 341.7. Preparazione alla scrittura del CD audio.

In questo caso si vede già che sono disponibili due file (tracce), dei quali, nessuno è stato ancoraindicato. Per farlo, occorre selezionare il pulsante graficoSE L E C T/S H O W TR A C K S T O WR I T E e,nella finestra che si ottiene, occorre indicare l’ordine delle tracce. Nella figura341.8si vede cheè appena stato indicato questo ordine, mentre nella figura341.9si vede il risultato confermato conla selezione del pulsante graficoRE F R E S H. Al termine, si esce da questa finestra con il pulsantegrafico DO N E .

Figura 341.8. Selezione delle tracce audio.

Page 131: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

X-CD-Roast 3865

Figura 341.9. Conferma della selezione delle tracce audio.

Dalla maschera precedente, basta selezionare il pulsante graficoST A R T WR I T E TR A C K S peravviare l’incisione del CD.

Il CD audio che si ottiene potrebbe non funzionare in un lettore normale di sistemi audio, maquesta è una carenza del sistema di riproduzione, non del procedimento con cui si realizza ilCD.

341.5 Riferimenti

• Thomas Niederreiter,Manual for X-CD-Roast

<file:///usr/share/doc/xcdroast/README.html>

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 132: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3866 X-CD-Roast

Page 133: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Parte lxx

Transizione verso il software libero342 File con formati speciali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3868

342.1 Conversione da un insieme di caratteri a un altro . . . . . . . . . . . . . . . . . . . . . . . . .3868

342.2 File .DBF -- dBase III e derivati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3870

342.3 File tipici di MS-Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3873

343 DOSEMU: l’emulatore di hardware DOS compatibile . . . . . . . . . . . . . . . . . . . . . . . . . .3876

343.1 Predisporre un ambiente adatto al Dos all’interno di DOSEMU . . . . . . . . . . . .3876

343.2 La configurazione di DOSEMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3877

343.3 Installare e utilizzare il Dos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3879

344 Servente X su altre piattaforme grafiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3884

344.1 MI/X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3884

344.2 X-Win32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3886

345 Applicazioni proprietarie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3887

345.1 Motif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3887

345.2 StarOffice 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3887

345.3 StarOffice 5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3893

345.4 StarOffice 5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3895

345.5 Netscape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3896

345.6 XV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3898

345.7 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3902

3867

Page 134: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 342

File con formati specialiUno degli aspetti deleteri dell’informatica è stato il proliferare di formati incompatibili nei file didati.

In questo capitolo si raccolgono le informazioni sugli strumenti a disposizione per poter recupe-rare dati contenuti in file con un formato che in passato hanno avuto una certa diffusione. Comesi può intuire, di solito non si tratta delle dotazioni normali di una distribuzione GNU/Linux,per cui, i programmi che vengono descritti qui vanno forse cercati tra i «contributi» esterni allapropria distribuzione.

342.1 Conversione da un insieme di caratteri a un altro

Quando si convertono dati da un formato a un altro, il primo problema è e quello di traslittera-re l’insieme di caratteri. Purtroppo, non sempre è possibile «traslitterare» in modo reversibile,spesso si è costretti ad accettare una trasformazione che non permette più di riottenere lo stes-so formato iniziale. Questo fatto si comprende facilmente pensando alla necessità eventuale diconvertire uninsieme di caratteri in un altro in cui non si dispone di alcuni simboli del primo.

Un caso particolare riguarda le conversioni di file di testo dove da un sistema diinterruzioni diriga composte dalla sequenza<CR><LF> si vuole passare al solo<LF>. Per qualche motivo,il file di origine potrebbe contenere qualche codice<LF> isolato, che nel file di destinazioneverrebbe interpretato alla fine come un’interruzione di riga. In pratica, se si volesse riconvertireil file nel formato precedente, tutti i codici<LF> verrebbero riconvertiti in<CR><LF>.

342.1.1 $ recode

recode [ opzioni] codifica_prima.. codifica_dopo[ file...]

‘ recode ’ 1 è un programma per la conversione di file da uninsieme di caratteri a un altro.‘ recode ’ non si limita semplicemente a questo; spesso è in grado di intervenire anche su codifi-che composte da sequenze di caratteri, anche se in queste situazioni il suo utilizzo si complica ei risultati non sono sempre garantiti.

Osservando lo schema sintattico mostrato, si può vedere che è necessario indicare il tipo di con-versione attraverso due parole chiave: la prima serve a stabilire il modo in cui sono codificati idati in ingresso, la seconda stabilisce in che modo li si vuole trasformare in uscita.

Uno o più file in ingresso possono essere indicati alla fine della riga di comando, facendo sì che‘ recode ’ tenti di sovrascriverli; in alternativa, un file in ingresso può essere fornito attraverso lostandard input, ottenendo come il risultato della conversione dallostandard output.

Bisogna essere prudenti con‘ recode ’ quando si indicano i file nella riga di comando, perchéla conversione potrebbe essere irreversibile.

Nel suo piccolo,‘ recode ’ è un programma complesso. Questa sezione mostra solo alcuni aspettibanali, mentre per sfruttare bene tutte le sue potenzialità è necessario leggere la documentazioneoriginale:recode.info.

1recode GNU GPL

3868

Page 135: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

File con formati speciali 3869

Alcune opzioni

-a [ codifica] | --auto-check [ codifica]

Questa opzione è speciale e di solito viene usata da sola, senza indicare altri argomenti nellariga di comando di‘ recode ’ . Serve per ottenere da‘ recode ’ un riassunto sulle possibilitàdi conversione da o verso la codifica indicata.

-g | --graphics

Questa opzione riguarda la conversione dall’insieme di caratteri‘ IBM-PC ’ , a un altro ti-po, dove si vuole tentare di trasformare in qualche modo i simboli grafici tipici di quellacodifica. È evidente che questa conversione è irreversibile.

Alcune codificheLe codifiche da utilizzare nelle conversioni sono indicate attraverso la notazionecodifica_prima..codifica_dopo, come si vede nello schema sintattico introduttivo. Le pa-role chiave utilizzate per questo possono essere indicate indifferentemente utilizzando lelettere minuscole o maiuscole. L’elenco delle codifiche (e quindi delle trasformazioni pos-sibili) è molto lungo e potrebbe essere ottenuto un riepilogo attraverso l’opzione‘ -a ’ . Tut-tavia, sarebbe meglio leggere prima ciò che è stato annotato nel documentorecode.infoalriguardo, per non rischiare di trovarsi poi nei pasticci.

IBM437 | 437 | cp437

Rappresenta la codifica IBM usata normalmente nel Dos. Quando si converte da questacodifica a un’altra, icodici di interruzione di riga vengono lasciati inalterati.

IBM-PC | ibmpc

È praticamente la stessa codifica IBM437, con la differenza che quando si converte daquesta codifica a un’altra, icodici di interruzione di riga vengono trasformati.

IBM850 | 850 | cp850

Rappresenta la codifica IBM usata normalmente nel Dos per la localizzazione europea.

ISO_8859-1:1987 | ISO_8859-1 | ISO-8859-1 | CP819 | IBM819 | iso-ir-100 |l1 | latin1

Si riferisce alla codifica ISO 8859-1.

Esempi

$ recode -a IBM437

Mostra tutte le possibilità di abbinamento con la codifica IBM437.

$ recode -a IBM-PC

Mostra tutte le possibilità di abbinamento con la codifica IBM-PC.

$ recode IBM-PC..ISO_8859-1 lettera

Converte il file‘ lettera ’ dalla codifica IBM-PC a ISO 8859-1, sovrascrivendo il file.

$ recode IBM-PC..ISO_8859-1 < lettera > lettera2

Converte il file ‘ lettera ’ dalla codifica IBM-PC a ISO 8859-1, generando il file‘ lettera2 ’ .

$ recode -g IBM-PC..ISO_8859-1 < schema1 > schema2

Converte il file ‘schema1 ’ dalla codifica IBM-PC a ISO 8859-1, generando il file‘schema2 ’ , tentando di convertire anche i simboli grafici.

Page 136: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3870 File con formati speciali

342.2 File .DBF -- dBase III e derivati

Il software basato sui file in formato‘ .DBF ’ , ovvero quelli didBase III, è stato molto importantenell’ambito del sistema operativo Dos. Nel suo piccolo ha permesso agli utenti di quel sistemaoperativo di realizzare delle strutture di dati che si avvicinavano alle potenzialità di unabase didati relazionale.

Ancora oggi si trovano programmi applicativi gestionali basati su questo formato, scritti proba-bilmente con il famoso compilatoreClipper. Attualmente è disponibile il compilatoreHarbour,che si ripromette di offrire un ambiente totalmente compatibile con il passato; tuttavia è possibileleggere il contenuto di questi attraverso alcuni piccoli programmi.

342.2.1 $ dbview

dbview [ opzioni] file_dbf

Il programma‘dbview ’ 2 consente di leggere il contenuto dei file‘ .DBF ’ di dBase III e probabil-mente anche le versioni didBase IV. Se viene avviato senza opzioni, si ottiene la visualizzazionedel contenuto del file indicato nel formato predefinito, come si vede dall’esempio seguente:

Articolo : 1Descr : bicicletta uomoPrezzo u : 500.00Import : TScadenza : 20011120Note : 2

Articolo : 2Descr : bicicletta donnaPrezzo u : 550.00Import :Scadenza : 20011120Note : 3

Articolo : 3Descr : bicicletta uomo/donna leggeraPrezzo u : 600.00Import :Scadenza : 20011120Note : 4

In realtà, in questo modo, i nomi dei campi vengono mostrati in modo diverso dal reale, utilizzan-do anche le lettere minuscole ed eliminando i trattini bassi. Utilizzando l’opzione‘ -r ’ , il primorecord apparirebbe così:

ARTICOLO : 1DESCR : bicicletta uomoPREZZO_U : 500.00IMPORT : TSCADENZA : 20011111NOTE : 2

È necessario osservare che i campi booleani (in questo caso si tratta di quello intitolato‘ IMPORT’ )mostrano solo la lettera‘T’ per il valoreVero, altrimenti non si ha alcuna indicazione; inoltre, ledate vengono espresse secondo il formatoAAAAMMGG. Infine, dall’esempio non si intuisce,ma il campo‘NOTE’ è di tipo «memo» e in questo caso si sono persi i dati.

I dati contenuti nei file‘ .DBF ’ , dal momento che sono stati memorizzati presumibilmente conun sistema operativo Dos, utilizzano molto probabilmente uninsieme di caratteri diverso da

2dbview GNU GPL

Page 137: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

File con formati speciali 3871

Latin 1 o comunque diverso da ciò che si utilizza con GNU/Linux. Pertanto, è probabile che sianecessario rielaborare ciò che si ottiene con‘dbview ’ attraverso un programma di conversionecome ‘ recode ’ . Tuttavia, è bene considerare che nella storia dei file‘ .DBF ’ sono state usateanche codifiche differenti dal solito IBM437 e di questo occorre tenerne conto quando ci siaccorge che la conversione non funziona come ci si aspetterebbe.

Alcune opzioni

--browse | -b

Se si utilizza questa opzione, irecord vengono mostrati su una sola riga per volta, separandoi campi con un simbolo, il separatore, che di solito è costituito dai due punti (‘ : ’).

--delimiter x | -d x

Con questa opzione è possibile specificare il simbolo da utilizzare per separare i campi deirecord che vengono visualizzati. Il simbolo di separazione predefinito sono i due punti (‘ : ’ )

--description | -e x

In questo caso, oltre a mostrare il contenuto del file, nella parte iniziale vengono riepilogatele caratteristiche dei campi contenuti.

--omit | -o x

Non elenca il contenuto del file, ma si limita a dare le altre informazioni se richiesteattraverso le opzioni opportune.

--reserve | -r x

Mostra i nomi dei campi così come sono stati memorizzati.

Esempi

$ dbview articoli.dbf

Elenca il contenuto del file‘articoli.dbf ’ nella forma predefinita.

$ dbview -b articoli.dbf

Mostra irecord utilizzando una sola riga per ognuno.

$ dbview -b articoli.dbf | recode ibm437:latin1

Come nell’esempio precedente, ma utilizza‘ recode ’ per trasformare i caratteri specialiche altrimenti non sarebbero visibili correttamente (per esempio le lettere accentate).

342.2.2 $ dbf2pg

dbf2pg [ opzioni] file_dbf

Il programma‘dbf2pg ’ 3 consente di leggere il contenuto di un file‘ .DBF ’ e di inserire i datirelativi in una tabella di unabase di dati diPostgreSQL (capitolo324 e successivi). In basealle opzioni che vengono indicate, i dati possono essere aggiunti a una tabella esistente, oppurepossono sostituire le righe di tale tabella, oppure si può creare una tabella da zero. Quello checonta è che i permessi fissati attraversoPostgreSQL consentano l’accesso e le operazioni che siintendono svolgere.

3dbf2pg software libero con licenza speciale

Page 138: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3872 File con formati speciali

‘dbf2pg ’ non è in grado di trasferire i campi «memo», quelli che tradizionalmente venivanocreati utilizzando file con estensione‘ .DBT ’ .

Alcune opzioni-v

-vv

Permette di avere informazioni sulle operazioni svolte, ottenendo un dettaglio maggiore nelsecondo caso.

-h host

Permette di specificare ilnodo a cui accedere per connettersi con ilservente diPostgreSQL.In mancanza di questa indicazione, viene tentato l’accesso alocalhost .

-d base_di_dati

Permette di specificare il nome dellabase di dati a cui ci si vuole connettere. In mancanzadi questa indicazione, viene tentata la connessione con labase di dati‘ test ’ .

-t tabella

Permette di specificare il nome della tabella in cui si vogliono trasferire i dati del file‘ .DBF ’ .In mancanza di questa indicazione, viene tentato l’inserimento nella tabella‘ test ’ .

-D

Con questa opzione, si fa in modo di cancellare il contenuto della tabella di destinazione,prima di iniziare l’inserimento dei dati.

-c

Richiede espressamente che sia creata la tabella di destinazione. In mancanza di questaopzione, la tabella deve essere già disponibile, altrimenti l’operazione fallisce. Nel casosi utilizzi questa opzione mentre una tabella con lo stesso nome esiste già, si ottiene lacancellazione del suo contenuto prima di iniziare, come se fosse stata usata al suo postol’opzione ‘ -D ’ .

-f

Prima di procedere, converte i nomi dei campi in modo che questi siano scritti utilizzandosolo lettere minuscole.

-l

-u

Con l’opzione‘ -l ’ si fa in modo che il contenuto dei campi venga convertito in lettereminuscole, mentre con l’opzione‘ -u ’ si ottiene una conversione in maiuscole.

-s nome_vecchio=nome_nuovo[ , nome_vecchio=nome_nuovo] ...

Con questa opzione si può stabilire la sostituzione di alcuni nomi dei campi della tabella.Ciò può essere particolarmente utile nel caso in cui i nomi originali siano incompatibili conPostgreSQL.

-s n_riga_iniziale

-e n_riga_finale

Le opzioni ‘ -s ’ e ‘ -e ’ permettono di definire l’intervallo di righe da trasferire, dove nelprimo caso si indica la riga iniziale e nel secondo quella finale. Se non si indicano, iltrasferimento parte dall’inizio e prosegue fino alla fine.

Esempi

$ dbf2pg -d Anagrafe -c -t Indirizzi address.dbf

Page 139: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

File con formati speciali 3873

Crea la tabella‘ Indirizzi ’ nellabase di dati‘Anagrafe ’ disponibile presso l’elaboratorelocale, prelevando i dati dal file‘address.dbf ’ .

$ dbf2pg -h localhost -d Anagrafe -c -t Indirizzi address.dbf

Esattamente come nell’esempio precedente, con l’indicazione precisa delnodo locale.

342.3 File tipici di MS-Windows

Alcuni formati di file utilizzati con MS-Windows sono considerati da molti degli «standard». Tratutti, il più «importante» è quello diMS-Word, con in più il problema che di questo ne esistonomolte versioni.

342.3.1 $ mswordview

mswordview [ opzioni] file_doc

‘mswordview ’ 4 è un programma il cui scopo è quello di convertire file diMS-Word inHTML.La conversione non può essere perfetta, ma il progetto è condotto con impegno e i risultati chedà questo programma sono buoni.

Inizialmente, ‘mswordview ’ è in grado di convertire i file diMS-Word 8, ma dovrebberoaggiungersi successivamente anche i formati precedenti.

‘mswordview ’ è in grado di convertire solo un file alla volta, precisamente quello che vieneindicato alla fine degli argomenti. Se non viene richiesto qualcosa di particolare attraverso leopzioni, ‘mswordview ’ tenta di creare un file con lo stesso nome di quello che viene convertito,con l’aggiunta dell’estensione‘ .html ’ . Inoltre, se il file contiene delle immagini incorporate,queste vengono trasferite su file esterni.

Alcune opzioni

-o file_html | --outputfile file_html

Permette di indicare esplicitamente il fileHTML che si vuole generare.

-g file_errori | --errorfile file_errori

Permette di annotare gli errori incontrati durante la conversione nel file indicato.

342.3.2 $ catdoc

catdoc [ opzioni] file_doc

catdoc [ opzioni] < file_doc

‘catdoc ’ 5 è un programma molto semplice, che si sostituisce idealmente a‘cat ’ quando sitratta di visualizzare il contenuto di file scritti in formatoMS-Word. Il suo funzionamento èintuitivo e in generale non servono opzioni: il file indicato come argomento, o fornito attraversolo standard input, viene emesso dallostandard output dopo una conversione in formato testo. Seil file originale contiene in realtà solo testo puro, non avviene alcuna conversione.

4mswordview GNU GPL + alcuni file con licenza speciale5catdoc GNU GPL

Page 140: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3874 File con formati speciali

Alcune opzioni

-b

Cerca di elaborare anche fileMS-Word che apparentemente non lo sono, a causa di unafirma iniziale errata.

-mn

Specifica il margine destro del testo ottenuto. Il margine predefinito è a colonna 72. Siosservi che l’opzione‘ -m0 ’ equivale a‘ -w ’ .

-w

Specifica il margine destro del testo ottenuto di lunghezza indefinita, in modo da ottenereche i paragrafi occupino una riga intera.

-v

Genera alcune informazioni diagnostiche prima del testo trasformato.

Configurazione

Per quanto semplice,‘catdoc ’ prevede una configurazione, composta dal file‘ /etc/

catdocrc ’ per il sistema e dai file‘~/.catdocrc ’ per gli utenti. Senza entrare neldettaglio delle direttive di configurazione, è il caso di descrivere quella che rappresental’impostazione comune:charset_path=/usr/lib/catdocmap_path=/usr/lib/catdocsource_charset=cp1252target_charset=8859-1unknown_char=’?’

Come si può intuire, le direttive‘charset_path ’ e ‘map_path ’ servono a indicare la col-locazione di file utilizzati da‘catdoc ’ per la conversione. La direttiva‘source_charset ’permette di stabilire la codifica predefinita del file sorgente, quando questo non appare uti-lizzare la UTF-16. La direttiva‘ target_charset ’ permette di definire la codifica da usareper il testo generato; come si vede nell’esempio viene usata la codifica ISO 8859-1. Infine,è possibile stabilire in che modo mostrare i caratteri che non possono essere rappresentati,attraverso la direttiva‘unknown_char ’ , che in questo caso usa il punto interrogativo.

Esempi

$ catdoc pippo.doc | less

Visualizza il contenuto del file‘pippo.doc ’ , con l’aiuto di‘ less ’ per scorrerlo.

$ catdoc pippo.doc > pippo.txt

Genera il file‘pippo.txt ’ a partire da‘pippo.doc ’ .

342.3.3 $ antiword

antiword [ opzioni] file_doc...

‘antiword ’ 6 è un programma molto semplice per convertire file dal formatoMS-Word (versione6 o successiva) in testo puro e semplice, oppure inPostScript , estrapolando anche le immagini. Ilsuo funzionamento è intuitivo e in generale non servono opzioni: il file indicato come argomento,viene emesso attraverso lostandard output dopo la conversione.

6Antiword GNU GPL

Page 141: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

File con formati speciali 3875

Alcune opzioni-t

Genera una conversione in formato testo puro e semplice. L’uso di questa opzione èimplicito.

-w n_colonne

Permette di specificare, nell’ambito di una conversione in formato testo, l’ampiezza deltesto in caratteri. Se si utilizza il valore zero, si ottiene ogni paragrafo in una sola riga.

-m file_mappa

Consente di indicare la conversione che si vuole ottenere daUnicode in uninsieme di carat-teri a 8 bit. Se non si usa questa opzione, è come se fosse stato stabilito‘ -m 8859-1.txt ’ ,corrispondente alla richiesta di ottenere una conversione nello standard ISO 8859-1. Questifile di conversione dovrebbero trovarsi nella directory‘ /usr/share/antiword/ ’ .

-p dimensioni_carta

L’utilizzo di questa opzione richiede implicitamente la conversione in formatoPostScript,mentre in condizioni normali si ottiene un testo puro e semplice. L’argomento dell’opzionestabilisce la dimensione della carta e può trattarsi delle parole chiave seguenti, con il si-gnificato intuitivo che hanno:‘10x14 ’ , ‘a3 ’ , ‘a4 ’ , ‘a5 ’ , ‘b4 ’ , ‘b5 ’ , ‘executive ’ , ‘ folio ’ ,‘ legal ’ , ‘ letter ’ , ‘note ’ , ‘note ’ , ‘quarto ’ , ‘statement ’ , ‘ tabloid ’ .

-L

Nell’ambito di una conversione inPostScript, indica un orientamento orizzontale del foglio.

-i livello_di_visualizzazione_immagini

Consente di specificare cosa fare delle immagini che fossero eventualmente contenutenel file di partenza. L’argomento è un numero che ha il significato descritto nell’elencoseguente.

• 0 genera un file compatibile conGhostscript, ma non adatto a stampantiPostScriptcomuni. Tuttavia, in condizioni normali, se si arriva alla stampa, si passa generalmenteperGhostscript, per cui questo valore è quello che può essere adatto.

• 1 non estrapola le immagini.

• 2 PostScript livello 2.

• 3 PostScript livello 3.

-s

Include anche il testo nascosto, indicato come tale nel file originale.

Esempi

$ antiword pippo.doc | less

Visualizza il contenuto del file‘pippo.doc ’ , con l’aiuto di‘ less ’ per scorrerlo.

$ antiword -p a4 pippo.doc > pippo.ps

Genera il file‘pippo.ps ’ (PostScript, A4) a partire da‘pippo.doc ’ .

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 142: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 343

DOSEMU: l’emulatore di hardware DOS com-patibileDOSEMU1 è fondamentalmente un emulatore dell’hardware x86 per vari sistemi Unix funzio-nanti su architetturai386. Il suo obiettivo è quello di permettere il funzionamento del sistemaoperativo Dos (MS-Dos o cloni). Si tratta di un progetto eternamente in fase di sviluppo (alpha),anche se da diversi anni è sufficientemente funzionante. Tuttavia non ci sono punti fermi: da unaversione all’altra si possono incontrare novità imprevedibili.

Dal momento che l’emulazione riguarda l’hardware, il Dos deve essere installato all’interno diquesto sistema di emulazione; quindi, è necessaria una copia di questo sistema operativo, insiemealla licenza d’uso.

DOSEMU permette di utilizzare la stessa copia installata del Dos su più terminali contempora-neamente. Se si intende concedere l’utilizzo simultaneo di una singola copia di questo sistemaoperativo, è necessario un numero maggiore di licenze d’uso, oppure una licenza multipla.

A fianco del lavoro suDOSEMU è anche in corso quello sul progetto FreeDOS per un sistemaoperativo Dos libero (capitolo366).

343.1 Predisporre un ambiente adatto al Dos all’interno diDOSEMU

Perché il sistema operativo Dos possa funzionare all’interno diDOSEMU, occorre preparare unfile-immagine di un disco Dos dal quale si possa effettuare l’avvio del Dos stesso. Questo fileche viene descritto di seguito, verrà visto dal Dos come disco‘C: ’ .

Successivamente è conveniente predisporre uno spazio all’interno delfile system del propriosistema GNU/Linux da utilizzare per i programmi Dos che verrà letto come un disco di rete.

343.1.1 Un disco C: immagine

Per effettuare l’avvio del Dos occorre che sia predisposta l’immagine di un disco di piccoledimensioni. Questo potrebbe essere un file contenuto nella directory‘ /var/lib/dosemu/ ’ ,oppure‘ /var/state/dosemu/ ’ , il cui nome inizia normalmente per‘hdimage ’ .

Attualmente, il file dovrebbe chiamarsi‘hdimage.first ’ e al limite potrebbe essere uncollegamento simbolico a un altro file che costituisce l’immagine vera e propria.

Se non esiste questo file è necessario copiarlo dal pacchetto sorgente. Il nome dovrebbe essere‘hdimage.dist ’ , o qualcosa di simile. Questa immagine verrà preparata in seguito.

1DOSEMU GNU GPL

3876

Page 143: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

DOSEMU: l’emulatore di hardware DOS compatibile 3877

343.1.2 Un disco D: virtuale o di rete

In questa fase conviene preparare una directory che servirà per definire l’inizio (la radice) deldisco‘D: ’ virtuale utilizzato dai programmi Dos. Stabiliamo che questo sia‘ /var/emul/dos/ ’ .Da questo punto in poi,‘D:\ ’ è equivalente a‘ /var/emul/dos/ ’ .

343.1.3 La struttura essenziale del disco D: virtuale

Il disco ‘D: ’ virtuale dovrebbe contenere alcune directory che riproducono in pratica il classicoambiente Dos:

• ‘D:\TEMP\ ’

equivalente a‘ /var/emul/dos/temp/ ’ ;

• ‘D:\DOS\ ’

equivalente a‘ /var/emul/dos/dos/ ’ .

Per evitare la proliferazione di directory temporanee, è possibile utilizzare al posto di‘ /var/

emul/dos/temp/ ’ uncollegamento simbolico che punti a‘ /tmp/ ’ .

# ln -s /tmp /var/emul/dos/temp

343.2 La configurazione di DOSEMU

La configurazione diDOSEMU consiste nella modifica dei file‘ /etc/dosemu.conf ’ e di‘ /etc/dosemu.users ’ . Il file ‘ /etc/dosemu.users ’ permette di definire gli utenti chepossono utilizzareDOSEMU, mentre l’altro stabilisce tutte le altre caratteristiche.

Purtroppo, la configurazione diDOSEMU, specialmente per ciò che riguarda il file‘ /etc/

dosemu.conf ’ , è complessa e cambia da versione a versione. Inoltre,DOSEMU può costituireanche un problema per la sicurezza del sistema dal momento che di solito l’eseguibile‘dos ’ ,deve essereSUID-root (cioè deve appartenere a‘ root ’ e avere il bit SUID attivato) per utilizzarefunzionalità particolari dell’hardware (soprattutto l’adattatore graficoVGA).2

343.2.1 /etc/dosemu.users

DOSEMU permette di distinguere alcune categorie di utenti, attribuendogli privilegi differen-ti, in base a una diversa configurazione nel file‘ /etc/dosemu.conf ’ . Tali categorie di utentidipendono quindi dalla configurazione di questo file.

Il file ‘ /etc/dosemu.users ’ può contenere righe di commento, introdotte dal simbolo‘#’ , righebianche o vuote, che vengono ignorate, e direttive espresse dalla sintassi seguente:

utente [ variabile_di_configurazione...]

In pratica, si possono abbinare a un utente una o più variabili di configurazione che fanno ri-ferimento a elementi del file‘ /etc/dosemu.conf ’ . È da osservare, in particolare, che si puòindicare anche un utente particolare,‘all ’ , per fare riferimento a tutti gli utenti a cui non si famenzione in modo esplicito.

2Se ci si accontenta di uno schermo a caratteri, senza grafica e senza cornici, non dovrebbe essere necessario attivareil bit SUID.

Page 144: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3878 DOSEMU: l’emulatore di hardware DOS compatibile

A titolo di compromesso, viene mostrato un esempio di configurazione del file‘ /etc/

dosemu.users ’ che dovrebbe essere sufficiente nella maggior parte delle situazioni. Si trat-ta in pratica della versione standard distribuita assieme aDOSEMU, con l’aggiunta di qualcheutente ipotetico.

# This is a sample /etc/dosemu.users file# For more details look at ./doc/README.conf

root c_all # root is allowed to do all weird thingsnobody guest # variable ’guest’ is checked in /etc/dosemu.conf

# to allow only DEXE executionguest guest # login guest treated as ’nobody’

# Utenti inseriti normalmentetiziocaiosemproni

# If you want to allow limited dosemu to all users, uncomment the line below#all restricted # all other users have normal user restrictions

Come si intuisce, l’utente‘ root ’ ha tutti i diritti necessari a compiere quello che vuole dall’in-terno diDOSEMU. Sono previsti gli utenti‘nobody ’ e ‘guest ’ , a cui sono concesse solo pochecose, mentre agli utenti‘ tizio ’ , ‘caio ’ e ‘semproni ’ sono concessi privilegi normali. Infine,appare commentata la direttiva‘all restricted ’ , con la quale si potrebbe consentire l’utilizzodi DOSEMU a tutti gli altri utenti, con privilegi ridotti.

343.2.2 /etc/dosemu.conf

La preparazione di‘ /etc/dosemu.conf ’ è invece più delicata. Il file di esempio già fornito al-l’interno del pacchetto di distribuzione diDOSEMU è commentato molto dettagliatamente, peròè anche molto complesso. Di seguito vengono indicate solo alcune parti particolarmente impor-tanti. Le altre direttive di questo file, possono essere lasciate come sono, ignorandole, almenofino a quando non si raggiunge una buona esperienza con l’uso diDOSEMU.

# Viene impostata la mappa della tastiera per uniformarsi alla# disposizione dei tasti in Italia.$_rawkeyboard = (1) # bypass normal keyboard input, maybe dangerous$_layout = "it" # one of: finnish(-latin1), de(-latin1), be, it, us

# uk, dk(-latin1), keyb-no, no-latin1, dvorak, po# sg(-latin1), fr(-latin1), sf(-latin1), es(-latin1)# sw, hu(-latin2), hu-cwi, keyb-user

$_keybint = (on) # emulate PCish keyboard interrupt

# Vengono definite le potenzialità dello schermo# (per poter utilizzare la grafica, come impostato in questo# esempio, occorre avviare il programma dos con i privilegi# dell’utente root).$_video = "vga" # one of: plainvga, vga, ega, mda, mga, cga$_console = (1) # use ’console’ video$_graphics = (1) # use the cards BIOS to set graphics$_videoportaccess = (1) # allow videoportaccess when ’graphics’ enabled$_vbios_seg = (0xc000) # set the address of your VBIOS (e.g. 0xe000)$_vbios_size = (0x10000)# set the size of your BIOS (e.g. 0x8000)$_vmemsize = (1024) # size of regen buffer$_chipset = "" # one of: plainvga, trident, et4000, diamond, avance

# cirrus, matrox, wdvga, paradise$_dualmon = (0) # if you have one vga _plus_ one hgc (2 monitors)

# Viene definito l’uso dei dischetti e dell’immagine del disco C:.$_floppy_a ="threeinch" # or "fiveinch" or empty, if not existing

Page 145: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

DOSEMU: l’emulatore di hardware DOS compatibile 3879

$_floppy_b = "" # ditto for B:

$_hdimage = "hdimage.first" # list of hdimages under /var/lib/dosemu# assigned in this order such as# "hdimage_c hdimage_d hdimage_e"# If the name begins with ’/dev/’, then partition# access is done instead of virtual hdimage such as# "/dev/hda1" or "/dev/hda1:ro" for readonly# Currently mounted devices and swap are refused.# Hdimages and devices may be mixed such as# "hdimage_c /dev/hda1 /dev/hda3:ro"# Note: ’wholedisk’ is _not_ supported.

$_hdimage_r = $_hdimage # hdimages for ’restricted access (if different)

# Viene definita la stampante.$_printer = "lp" # list of (/etc/printcap) printer names to appear as

# LPT1, LPT2, LPT3 (not all are needed, empty for none)$_printer_timeout = (20)# idle time in seconds before spooling out

$_ports = "" # list of portnumbers such as "0x1ce 0x1cf 0x238"# or "0x1ce range 0x280,0x29f 310"# or "range 0x1a0,(0x1a0+15)"

343.3 Installare e utilizzare il Dos

Il prossimo problema è quello di riuscire a installare il Dos nel file-immagine che servirà pereffettuare l’avvio del Dos stesso. L’immagine in questione, che probabilmente è il file‘ /var/

lib/dosemu/hdimage.first ’ , contiene già una serie di programmi Dos che fanno parte diDOSEMU e come tali non vanno cancellati. Ma l’immagine che viene distribuita così non èavviabile e il problema è proprio quello di inserirvi ilkernel del Dos e l’interprete dei comandi‘COMMAND.COM’ , salvo il caso in cui sia già presente una versione di FreeDOS.

1. Preparazione di un dischetto di avvio

Per prima cosa occorre preparare un dischetto Dos avviabile che contenga qualcheprogram-ma di servizio indispensabile. Da un elaboratore che stia eseguendo il sistema operativo Dossi procede come segue:

C:> FORMAT A: /S

C:> COPY C:\DOS\SYS.* A:

C:> COPY C:\DOS\FDISK.* A:

Oltre a questi file converrebbe preparare nel dischetto un programma per la creazione emodifica di file di testo. Servirà per preparare i file‘CONFIG.SYS’ e ‘AUTOEXEC.BAT’ .

2. Avvio del dischetto attraversoDOSEMU

È necessario quindi avviare il Dos contenuto nel dischetto appena creato attraversoDOSEMU. Per fare questo, dall’elaboratore GNU/Linux si avviaDOSEMU nel modoseguente:

# dos -A

Se tutto è andato bene si avvia il Dos; quindi, dopo la richiesta della data e dell’o-ra appare l’invito classico (ilprompt), per l’inserimento dei comandi attraverso lashell(‘COMMAND.COM’).A:\>

Page 146: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3880 DOSEMU: l’emulatore di hardware DOS compatibile

3. Trasferimento del sistema

Per trasferire nel file-immagine il sistema contenuto nel dischetto, in modo da rendere que-sta immagine avviabile, occorre procedere prima con la creazione di un MBR (Master bootrecord):

A:\> FDISK /MBR

quindi con il trasferimento del sistema:

A:\> SYS C:

Se è andato tutto bene, adesso il disco‘C: ’ , cioè l’immagine, è pronto.3

4. Controllo del disco C:

Il disco ‘C: ’ dovrebbe contenere alcuni file diDOSEMU. Per verificare il contenuto èsufficiente spostarsi in‘C: ’ .

A:\> C:

C:\> DIR

5. Modifica di config.sys

Trovandosi in ‘C: ’ , potrebbe essere conveniente modificare i file‘CONFIG.SYS’ e‘AUTOEXEC.BAT’ . Si inizia con‘CONFIG.SYS’ .

Si stabilisce di poter utilizzare tutte le lettere di unità (drive) a disposizione.LASTDRIVE=Z

Si definisce attraverso ildriver ‘EMUFS.SYS’ di DOSEMU che la prossima lettera di discoa disposizione punti alla directory‘ /var/emul/dos/ ’ . Di conseguenza, quella directoryverrà interpretata come disco‘D: ’DEVICE=C:\EMUFS.SYS /var/emul/dos

Viene avviato ildriver ‘EMS.SYS’ di DOSEMU che si occupa della gestione della memoriaestesa.DEVICE=C:\EMS.SYS

Se in seguito sarà opportuno, si potrà sempre apportare modifiche a questo file.

6. Modifica di ‘AUTOEXEC.BAT’

Inizialmente il file non necessita di modifiche. Si vedrà in seguito come configurare almeglio questo file.

7. Conclusione dell’installazione

Per terminare la sessione di lavoro dell’installazione occorre fare terminare l’esecuzione diDOSEMU che era stato avviato in precedenza con il comando‘dos -A ’ . Per chiudere siutilizza il programma‘EXITEMU.COM’ :

C:\> C:\EXITEMU

8. Verifica

Se tutto è andato come previsto, il Dos è pronto. Si può provare ad avviare il Dos senzal’uso del dischetto semplicemente con il comando:

$ dos

Se ha funzionato, si otterrà l’invito normale:3Il comando ‘FDISK /MBR’ riguarda precisamenteMS-Dos, mentre nel caso di cloni le cose potrebbero essere

differenti; per esempio potrebbe essere necessario avviare il programma nel modo solito e poi specificare la richiestaselezionando una voce da unmenù.

Page 147: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

DOSEMU: l’emulatore di hardware DOS compatibile 3881

C:\>

Per uscire si utilizza il programma‘EXITEMU.COM’ :

C:\> EXITEMU

343.3.1 I dischi virtuali con LREDIR.COM

Il programma‘LREDIR.COM’ è in grado di consentire l’accesso a porzioni delfile system diGNU/Linux attribuendo una lettera di unità. Per esempio:

C:\> LREDIR X: \linux\fs\/home

fa sì che il disco‘X: ’ corrisponda al contenuto della directory‘ /home/ ’ . Invece,

C:\> LREDIR Y: \linux\fs\$home

fa sì che il disco‘Y: ’ corrisponda al contenuto delladirectory personale dell’utente che sta usandoDOSEMU.

343.3.2 Il mouse

Teoricamente,DOSEMU è in grado di gestire da solo il mouse. In pratica potrebbe non essere co-sì. In tal caso conviene provare ad avviare un programma apposito all’interno del‘CONFIG.SYS’o di ‘AUTOEXEC.BAT’ .

343.3.3 Un esempio di AUTOEXEC.BAT

Nell’esempio seguente viene utilizzato un programma per la gestione del mouse estraneo aDO-SEMU. Il disco ‘D: ’ era stato definito implicitamente all’interno di‘CONFIG.SYS’ attraverso‘DEVICE=C:\EMUFS.SYS /var/emul/dos ’ .

@echo off

LREDIR H: linux\fs\$ homeLREDIR R: linux\fs\/mnt/cdrom

PROMPT=$p$gPATH=c:\PATH=%PATH%;D:\;D:\DOS

SET TEMP=D:\TEMP

D:

D:\DOS\MOUSE

ECHO "Questo è DOSEMU. Benvenuto!"

343.3.4 DOSEMU e le console virtuali

Quando viene avviato il Dos attraversoDOSEMU, questo opera nella console virtuale sulla qua-le ci si trova. Di solito, per passare da una console virtuale all’altra è sufficiente premere lacombinazione[ Alt+F1 ] o [ Alt+F2 ]... Quando ci si trova su una console virtuale all’interno dellaquale sta funzionando il Dos, per passare a un’altra si agisce con la combinazione[ Ctrl+Alt+F1 ]

o [ Ctrl+Alt+F2 ]...

Page 148: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3882 DOSEMU: l’emulatore di hardware DOS compatibile

343.3.5 DOSEMU da X

Per avviare il Dos in una finestra del sistema grafico X, conviene avviareDOSEMU attraverso‘xdos ’ che normalmente è uncollegamento simbolico a‘dos ’ .

343.3.6 DOSEMU e Mtools

Nelle sezioni precedenti si è visto l’uso del file-immagine‘ /var/lib/dosemu/hdimage ’ , checostituisce normalmente il disco‘C: ’ per DOSEMU. Questo file non è gestibile con strumentiUnix normali, soprattutto perché non è un’immagine standard. Si tratta dell’immagine di unpiccolo disco fisso contenente una partizione, con l’aggiunta di un’intestazione aggiuntiva.

Questo disco‘C: ’ può essere utilizzato principalmente attraverso strumenti Dos all’interno diDOSEMU, così come è stato già mostrato, oppure può essere raggiunto anche tramiteMtools,purché configurato opportunamente. Infatti, è sufficiente informareMtools sulla posizione esattain cui ha inizio la prima partizione all’interno del file-immagine, per potervici accedere anche conquesto strumento. Potrebbe trattarsi della direttiva seguente, nel file di configurazione‘ /etc/

mtools.conf ’ .

drive n: file="/var/lib/dosemu/hdimage.first" partition=1 offset=128

In tal modo, perMtools, il disco‘N: ’ corrisponderebbe al disco‘C: ’ di DOSEMU.

È importante fare attenzione al valore dello scostamento (offset) che potrebbe cambiare da unaversione all’altra diDOSEMU.

343.3.7 Implicazioni sulla gestione dei permessi

Il Dos non è un sistema operativo multiutente e di conseguenza non è in grado di attribuire deipermessi ai file. Quando si utilizza il Dos all’interno diDOSEMU, i permessi vengono gestiti inmodo predefinito.

Quando si crea un file gli vengono attribuiti i permessi predefiniti in base a quanto stabilito conla maschera dei permessi; inoltre, l’utente e il gruppo proprietario corrispondono all’utente cheha avviatoDOSEMU e al gruppo cui questo utente appartiene.

Quando si accede a un file, l’apparenza delle caratteristiche di questo cambiano a seconda chel’accesso avvenga da parte di un utente rispetto a un altro: l’utente che ha creato il file puòmodificarlo, un altro potrebbe trovarlo protetto in sola lettura.

In particolare, i file contenuti nel file-immagine che costituisce il disco‘C: ’ hanno le proprietà ei permessi del file-immagine stesso.

Ma il Dos non è in grado di gestire tutte le finezze che può invece amministrare un sistema Unix,di conseguenza, quando si tenta di fare qualcosa che i permessi non consentono, si ottengono perlo più delle segnalazioni di errore che normalmente non si vedono quando si usa il Dos da solosenza emulazioni.

Quando si utilizza il Dos conDOSEMU su un sistema al quale accede un solo utente, non do-vrebbero porsi problemi: basta che l’unico utente utilizzi sempre lo stesso nominativo (lo stessoUID). Quando lo si utilizza invece in un sistema al quale accedono più utenti, è ragionevole desi-derare che i dati personali possano essere inaccessibili agli altri; quindi, questo modo trasparentedi gestire i permessi può essere solo positivo. Quando si vogliono gestire alcune attività in gruppo

Page 149: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

DOSEMU: l’emulatore di hardware DOS compatibile 3883

si può aggirare eventualmente l’ostacolo utilizzando un utente comune creato appositamente perquel compito.

Un’ultima annotazione deve essere fatta per i file eseguibili che non necessitano dei permessidi esecuzione, come invece richiederebbe GNU/Linux. È generalmente sufficiente che ci sianoi permessi di lettura. A volte sono necessari anche quelli in scrittura, ma prima di dare questipermessi è meglio verificare, onde evitare di lasciare campo libero a un possibile virus.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 150: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 344Servente X su altre piattaforme graficheUna delle caratteristiche importanti di X è quella di permettere l’utilizzo di unservente graficoin una stazione di lavoro diversa dall’elaboratore in cui il programma applicativo viene eseguitorealmente.

Normalmente, quando la propria rete locale è composta sia da elaboratori con sistema operativoUnix che di altro tipo, si può accedere agli elaboratori Unix attraverso il protocollo TELNET,ma con questo strumento manca la possibilità di utilizzare le applicazioni che usano la grafica.Per questo occorre un programma che svolga le funzioni di X anche nelle altre piattaforme.Generalmente, tale programma sfrutta l’ambiente grafico del sistema operativo in cui si trova afunzionare.

Un software del genere è anche chiamatoterminale X, perché in pratica permette l’utilizzo di unelaboratore come terminale grafico per le applicazioni X.

344.1 MI/X

MI/X 1 è unservente X in grado di gestire le finestre di applicazioni in funzione su altri elabo-ratori. Può funzionare solo se nell’elaboratore in cui viene installato è attivata la gestione delleconnessioni TCP/IP.

Ne esistono due versioni: una per MS-Windows 95/98/NT/2000 e una perMacOS. È prodotto daMicroImages, Inc.,<http://www.microimages.com/>, che ne rilascia una versione gratuita, non moltosofisticata, ma funzionante.

L’installazione di questoservente non richiede alcuna configurazione particolare, bisogna pe-rò ricordarsi di avviarlo prima di tentare di utilizzare applicativi che ne richiedono la presenza.Basta fare una connessione TELNET con l’elaboratore dal quale si vogliono avviare gli appli-cativi da utilizzare attraverso ilservente grafico e ricordarsi di mettere l’opzione‘ -display ’seguita dall’indirizzo dell’elaboratore locale e del numero dello schermo, come nell’esempioseguente. L’elaboratore locale (MS-Windows) èroggen.brot.dg e quello remoto (Unix oGNU/Linux) èdinkel.brot.dg .

C:\> TELNET dinkel.brot.dg [ Invio ]

login: tizio [ Invio ]

Password: **** [ Invio ]

Finalmente appare l’invito dell’elaboratore remoto.

dinkel$ xterm -display roggen.brot.dg:0 [ Invio ]

In questo modo dovrebbe apparire la finestra di terminale nelservente X locale.

Il servente MI/X sfrutta l’ambiente grafico del sistema operativo in cui è stato installato, in parti-colare utilizza una finestra che, a sua volta, diventerà lafinestra principale per tutte le applicazioniX.

Il solo servente grafico non può essere sufficiente a gestire le finestre delle varie applicazioni. Perquesto, MI/X incorpora ungestore di finestre simile a‘ twm’ .

MI/X può essere ottenuto direttamente da MicroImages, Inc., all’indirizzo<http://

www.microimages.com/freestuf/mix/download.htm>.2

1MI/X software proprietario2La versione gratuita di questoservente funziona bene se la profondità di colori è di 256, pari a 8 bit. Non è in grado

3884

Page 151: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Servente X su altre piattaforme grafiche 3885

di funzionare se la risoluzione è inferiore, mentre se è superiore, funziona, ma si possono presentare dei problemi.

Page 152: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3886 Servente X su altre piattaforme grafiche

344.2 X-Win32

X-Win32 3 è unservente X in grado di fare gestire a MS-Windows 95/98/NT/2000 le finestre diapplicazioni X che sono in funzione su altri elaboratori. Può funzionare solo se nell’elaboratorein cui viene installato è attivata la gestione delle connessioni TCP/IP.

È prodotto da StarNet Communications Corporation<http://www.starnet.com/>. Di questo softwarenon esiste alcuna versione gratuita, ma può essere scaricato liberamente dalla rete e provato inmodalità dimostrativa (dopo alcune ore di funzionamento si interrompe eliminando i processi).

Il funzionamento è analogo a quello di altri prodotti del genere. La particolarità più importan-te sta nella gestione delle finestre completamente a carico di MS-Windows, cosa che facilitanotevolmente l’impiego.

X-Win32 può essere ottenuto direttamente da StarNet all’indirizzo già segnalato. La stessaazienda produce anche una versione di questoservente funzionante su MS-Windows 3.* .

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

3X-Win32 software proprietario

Page 153: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 345Applicazioni proprietarieLa disponibilità di software proprietario per GNU/Linux dimostra la maturità di questo siste-ma operativo. Negli ambienti meno preparati dal punto di vista informatico, i sistemi operativiUnix sono semplicemente temuti. Il software proprietario confortevole e spesso uniforme tra unapiattaforma e un’altra, permette di attenuare questi problemi di inserimento.

Attualmente il software libero offre molte alternative valide alla maggior parte del software pro-prietario; pertanto, le notizie che appaiono in questo capitolo, hanno più un valore storico chealtro.

345.1 Motif

Motif 1 è un’interfaccia grafica sviluppata originariamente da OSF (Open software foundation),divenuta attualmente parte diThe Open Group.Motif costituisce ancora uno standard molto im-portante, tanto che quasi tutte le applicazioni grafiche proprietarie, funzionanti su Unix e quindisu X, utilizzano questa GUI.

La cosa più importante diMotif sono le librerie che possono fornire ai programmi una serie difunzioni e di oggetti grafici.

345.1.1 Link statico o dinamico

Un programma che utilizza le librerieMotif può essere stato compilato utilizzando queste libreriein modo differente: con unlink statico o dinamico.

Un programma prodotto con unlink statico si trova in pratica a incorporare le librerie, per cui,può essere utilizzato così com’è senza la necessità di installarle separatamente. Un programmaprodotto con unlink dinamico richiede la presenza delle librerie, ma ha il vantaggio di richiedereun po’ meno risorse rispetto a quello compilato in modo statico.

Normalmente, la licenza diMotif consente di incorporare le librerie nel programma e non didistribuirle assieme al programma. Di conseguenza, se si vogliono utilizzare programmi che siservono delle librerieMotif in modo dinamico, occorre acquistare una copia delle librerieMotif.

345.1.2 Il prezzo del nome

Motif viene commercializzato da diverse aziende che spesso utilizzando nomi differenti. Nellamaggior parte dei casi si tratta sempre di lavori derivati dagli stessi sorgenti e perfettamentecompatibili con l’originale, ma l’uso del nomeMotif ha un prezzo.

Per quanto riguarda la piattaformai386 si possono trovare nomi come Moo-tiff, SWiM, MetroLink, MoTeeth,...

345.2 StarOffice 3.1

StarOffice2 è stato prodotto dallaStar Division, oggi acquisita dallaSun Microsystems (<http://

www.sun.com/staroffice/>). Si tratta di un pacchetto integrato per ufficio, comprendente un program-ma di scrittura, un foglio elettronico, un programma di disegno vettoriale, un programma per ilfotoritocco, un disegnatore di grafici e un programma per la scrittura di equazioni.

1Motif software proprietario2StarOffice 3.1 software proprietario, gratuito per alcuni tipi di utenti

3887

Page 154: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3888 Applicazioni proprietarie

Una delle caratteristiche più importanti è la sua compatibilità con i formati di altri prodotti pro-prietari, almeno fino alle versioni esistenti nell’anno 1997; inoltre, anche se si tratta di un’edi-zione molto vecchia, c’è da considerare che si tratta della versione che esige meno risorse perfunzionare e per questo è l’unica che possa essere usata su macchine con poco più di 16 Mibytedi memoria centrale.

La versione per GNU/Linux può essere ritrovata ancora in diversi FTP e per raggiungerli si puòsempre chiedere aiuto aFTPSearch<http://www.alltheweb.com/?c=ftp>.3

345.2.1 Archivi necessari

La versione GNU/Linux diStarOffice è organizzata in blocchetti contenuti in archivi compressiattraverso‘ tar ’ e ‘gzip ’ . I file utili sono:

• ‘StarOffice31-common.tar.gz ’ ;

• ‘StarOffice31-english.tar.gz ’ ;

• ‘StarOffice31-dynbin.tar.gz ’ , nel caso si disponga diMotif 2.0;

• ‘StarOffice31-statbin.tar.gz ’ , nel caso non si disponga diMotif 2.0.

Nel caso si disponga già dei file della versione 3.1beta4, basta utilizzare l’archivio‘StarOffice31-upgrade2final.tar.gz ’ per togliere la scadenza di funzionamento cheaveva quella versione. Di fatto la versione 3.1 non è altro che la stessa 3.1beta4 senza alcunascadenza.

345.2.2 Librerie

Le versioni Unix diStarOffice, utilizzano la libreria graficaMotif 2.0, cioè un altro prodottoproprietario. Per questo motivo, tra i file diStarOffice che vengono distribuiti, esistono due tipidi binari: quelli che richiedono la presenza della libreriaMotif e quelli che sono stati compilati inmodo da contenerla già come libreria statica. I secondi sono i binari che possono essere utilizzatisenza la libreriaMotif, anche se ciò penalizza notevolmente le prestazioni diStarOffice.

345.2.2.1 libc

StarOffice richiede la presenza di una versione di‘ libc ’ superiore o uguale a 5.4.4. Se nel propriosistema è installata una versione precedente, bisogna provvedere all’aggiornamento. Se non siha la possibilità di effettuare un aggiornamento automatico, dopo aver copiato i file aggiornatidella libreria nella directory‘ /lib/ ’ , occorre correggere ilcollegamento‘ libc.so.5 ’ , ma inun colpo solo! Supponendo di avere copiato i file della versione 5.4.28, si può procedere comenell’esempio seguente:

# ln -sf /lib/libc.so.5.4.28 /lib/libc.so.5

3Oltre alle considerazioni di carattere tecnico per motivare la scelta di una versione così antiquata, è importantenotare che la versione 3.1 disponeva di una licenza molto chiara per la parte che riguarda l’utilizzo «non-commerciale»,al contrario delle versioni immediatamente successive. Con l’acquisizione del prodotto da parte dellaSun Microsystems,la versione 5.1 ha offerto il prodotto gratuitamente, con una licenza non ambigua.

Page 155: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Applicazioni proprietarie 3889

345.2.3 Localizzazione

StarOffice è sensibile al contenuto della variabile di ambiente‘LANG’ . Se contiene il valore corret-to, cioè‘ it_IT ’ (o ‘ it_IT.ISO-8859-1 ’ , si può verificare con‘ locale -a ’), tutti i messaggi(o quasi) appariranno in italiano.

Vale la pena di predisporre in ogni caso questa variabile, non solo perStarOffice.

345.2.4 Collocazione

La collocazione del programma non è obbligatoria, a parte il nome della directory da cui si diramatutto l’applicativo: ‘StarOffice-3.1/ ’ . Normalmente si pongono due alternative: installare apartire dalla directory‘ /usr/local/ ’ , oppure da‘ /opt/ ’ : negli esempi che seguono si supponedi installare da questa ultima directory.

Ci si posiziona nella directory‘ /opt/ ’ e da lì si espandono i file necessari.

Se si installa la versione beta, occorre espandere l’archivio‘StarOffice31-upgrade2final.tar.gz ’ per ultimo.

# cd /opt

# tar xzvf StarOffice31-common.tar.gz

# tar xzvf StarOffice31-english.tar.gz

...

345.2.5 Librerie dinamiche (ld.so)

L’archivio ‘StarOffice31-common.tar.gz ’ , espandendosi, colloca una serie di librerie nel-la directory‘ /opt/StarOffice-3.1/linux-x86/lib/ ’ . Prima di poter fare qualunque co-sa conStarOffice, occorre aggiornare il file‘ /etc/ld.so.conf ’ e avviare il programma‘ ldconfig ’ in modo da ottenere un nuovo file‘ /etc/ld.so.cache ’ .

Si procede aggiungendo la riga seguente al file‘ /etc/ld.so.conf ’ .

/opt/StarOffice-3.1/linux-x86/lib/

Quindi si avvia semplicemente il programma‘ ldconfig ’ che provvede a fare il resto.

# ldconfig

Eventualmente, se non si vuole intervenire in questo modo, si può agire su una variabile di am-biente,‘LD_LIBRARY_PATH’ , che deve contenere anche il percorso necessario a raggiungere lelibrerie di StarOffice. Questa variabile viene gestita normalmente attraverso unoscript creatoautomaticamente dalla procedura di installazione.

Page 156: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3890 Applicazioni proprietarie

345.2.6 Installazione personale: setup

Finalmente, al termine di tutte queste operazioni ogni utente è pronto per installareStarOfficenella propriadirectory personale. Le operazioni seguenti vanno svolte utilizzando una finestra diterminale (come‘xterm ’ per esempio) all’interno dell’ambiente grafico X.

$ cd /opt/StarOffice-3.1

$ ./setup

StarOffice 3.1 Installation Tool

Figura 345.1. Inizio della procedura di installazione personale di StarOffice.

Dopo la presentazione, viene offerta una scelta possibile tra diversi tipi di installazione:

• installazione da rete o CD;

• personalizza installazione;

• installazione minima;

• installazione standard.

Nel primo caso, viene creata la directory‘~/StarOffice-3.1/ ’ contenente altre directory e poisoltantocollegamenti a file contenuti nella posizione originale. Negli altri casi, vengono copiatelocalmente le porzioni diStarOffice che si intendono utilizzare. In generale, dovrebbe esseresufficiente il primo tipo di installazione.

Al termine, nelladirectory personale dell’utente si troveranno duescript:‘ .sd.sh ’ e ‘ .sd.csh ’ .Il primo è fatto per essere interpretato da unashellBourne o una compatibile, mentre il secondoda unashellC.

In pratica, se si utilizza lashellBash, si tratta di includere alla fine di‘~/.bash_profile ’ o ‘~/

.profile ’ , o ancora in‘~/.bashrc ’ (a seconda di come è organizzato il proprio sistema), lariga seguente:

. ~/.sd.sh

In questo modo, il file‘ .sd.sh ’ viene letto ed eseguito.

Il file ‘ .sd.sh ’ , come pure‘ .sd.csh ’ , contiene la dichiarazione della variabile‘LANG’ con ilvalore‘us ’ . Evidentemente questo è sbagliato. Se è stato seguito il consigliato di predisporrela variabile‘LANG’ nel modo corretto, basta commentare questa dichiarazione.

Page 157: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Applicazioni proprietarie 3891

345.2.6.1 Se setup non funziona

Potrebbe anche capitare che il programma‘setup ’ non funzioni nella propria installazio-ne di GNU/Linux. Tuttavia, non è detto che sia pregiudicato il funzionamento del restodell’applicativo.

La cosa più importante che viene svolta dal programma di installazione è la creazione dei duefile script citati precedentemente. Si può sostituire la loro funzione con loscript seguente, adattoper unashellBourne o derivata.

#!/bin/sh

PATH="/opt/StarOffice-3.1/linux-x86/bin:$PATH"export PATH

LD_LIBRARY_PATH="/opt/StarOffice-3.1/linux-x86/lib:$LD_LIBRARY_PATH"export LD_LIBRARY_PATH

XPPATH="/opt/StarOffice-3.1/xp3"export XPPATH

HELPPATH="/opt/StarOffice-3.1/linux-x86/modules"export HELPPATH

XENVIRONMENT="/opt/StarOffice-3.1/starview.xres"export XENVIRONMENT

SVFONTPATH="/opt/StarOffice-3.1/fonts/75dpi:\/opt/StarOffice-3.1/fonts/75dpi/bdf:/opt/StarOffice-3.1/fonts/type1"export SVFONTPATH

SVHOME="$HOME"export SVHOME

Evidentemente, se si intende installareStarOffice a partire da una directory differente da‘ /opt/ ’ , occorre cambiare i percorsi indicati nell’esempio. La creazione della directory‘~/

StarOffice-3.1/ ’ (quella che parte dalladirectory personale dell’utente) e delle discendenti,con il loro contenuto dicollegamenti simbolici, non è strettamente necessaria: a volte si potreb-bero ricevere delle segnalazioni di errore, così come qualche componente potrebbe non funzio-nare perfettamente. Eventualmente si può provare a creare uncollegamento simbolico che puntidirettamente alla posizione originale dell’applicativo, come nell’esempio seguente:

$ ln -s /opt/StarOffice-3.1 ~/StarOffice-3.1

345.2.7 Avvio

I file binari di StarOffice sono collocati nella directory‘ /opt/StarOffice-3.1/linux-x86/

bin/ ’ , ma se l’installazione personale è stata eseguita correttamente, dovrebbero essereraggiungibili senza l’indicazione del percorso.

Prima di avviare un eseguibile qualunque diStarOffice, conviene attivare la guida interattiva e ilsistema di comunicazione interna.

$ svdaemon

$ svportmap

I programmi a disposizione sono:

• ‘sdraw3 ’ -- un disegnatore vettoriale;

Page 158: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3892 Applicazioni proprietarie

• ‘swriter3 ’ -- un programma di scrittura;

• ‘scalc3 ’ -- un foglio elettronico;

• ‘smath3 ’ -- un programma per la scrittura di equazioni matematiche;

• ‘schart3 ’ -- un programma di grafici;

• ‘simage3 ’ -- un programma per il fotoritocco.

345.2.8 Linguaggio

Se la variabile‘LANG’ è configurata correttamente, i messaggi appaiono in lingua italiana, manon tutti, dove mancano le traduzioni appaiono in inglese o in tedesco.

È importante sapere che «beenden» significa terminare, ovvero, «fine lavoro».

345.2.9 Stampa

StarOffice è (almeno in teoria) in grado di gestire alcuni tipi di stampanti diversi daPostScript.Utilizzando ‘ lpr ’ (cioè il sistema di stampaBSD, o uno compatibile), è sufficiente avere pre-disposto un filtro di stampa adatto a convertire il formatoPostScript in quello della propriastampante. Quando si stampa, quindi, si deve scegliere il tipo di stampante‘ lp ’ , eventualmentemodificando la riga di comando. Di solito è sufficiente specificare la voce corrispondente allastampante o al filtro di stampa più adatto alle proprie esigenze.

Figura 345.2. Richiamando l’impostazione della stampante, vengono proposti diversitipi di driver, ma se il proprio sistema è configurato correttamente, dovrebbe esseresufficiente selezionare il tipo standard: ‘lp ’.

Page 159: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Applicazioni proprietarie 3893

Figura 345.3. La riga di comando per ottenere la stampa può essere modificata aseconda delle esigenze, per esempio si può cambiare l’indicazione della voce delfile ‘/etc/printcap ’ e di altre indicazioni. Di solito, non serve alcuna intestazione, in talcaso, l’opzione ‘-T ’ non serve e può essere cancellata.

345.2.10 Semplificazioni nella distribuzione Debian

La distribuzione GNU/LinuxDebian organizza un pacchetto speciale, per installareStarOffice3.1. Il nome del pacchetto in questione è‘staroffice3 ’ ; con questo basta procurarsi i fileche compongono la distribuzione originale diStarOffice 3.1 e collocarli nella directory‘ /tmp/ ’ .L’installazione del pacchettoDebian, attraverso l’avvio degliscript di installazione, provvede ainstallare anche i file diStarOffice, predisponendo tutti gli accorgimenti necessari a garantire ilsuo funzionamento corretto.

Il pacchetto‘staroffice3 ’ organizza anche alcuniscript che avvolgono gli eseguibili originali.Questo serve a controllare all’avvio che tutto sia in ordine e, se necessario, ad avviare primal’installazione personale del programma. In questo modo, vengono creati automaticamente anchei file ‘~/.sd.sh ’ e ‘~/.sd.csh ’ , che poi vengono caricati automaticamente, senza la necessitàdi manomettere la configurazione della propriashell.

In breve, se si utilizza la distribuzioneDebian, l’installazione diStarOffice 3.1 diventaun’operazione banale.

Se si vuole disinstallareStarOffice 3.1, quando questo è stato installato con l’aiuto del pacchettoDebian a cui si fa riferimento, basta disinstallare il pacchetto: i suoiscript di disinstallazioneprovvedono a eliminarlo.

345.3 StarOffice 5.1

StarOffice4 nella versione 5.1 torna a essere accessibile gratuitamente, con una licenza che con-sente espressamente la duplicazione per uso interno. Quello che conta è acquisire «correttamen-te» il pacchetto degli eseguibili binari, da una fonte autorizzata. A questo proposito, la stessaSunMicrosystems vende il CD-ROM (senza assistenza) a un prezzo molto basso. Comunque, è benenon fare confusione: non si tratta di software libero, ma di software gratuito.5

Questa versione diStarOffice è disponibile solo su piattaformai386 e richiede molta memo-ria centrale: 64 Mibyte, anche se teoricamente ne basterebbero solo 32. Per quanto riguarda

4StarOffice 5.1 e 5.2 software gratuito, non libero5Per quanto riguarda la versione 5.1, laSun Microsystems non consente la ridistribuzione del prodotto, benché questo

sia gratuito, a meno che sia stato ottenuto un permesso esplicito dallaSun stessa. In particolare, alle scuole è consentito difirmare una licenza apposita, nella quale viene consentito espressamente di distribuire l’applicativo al personale di facoltàe agli studenti, purché queste persone accettino a loro volta le condizioni della licenza. Per ottenere questo risultato, ènecessario spedire una copia firmata di questa licenza specifica, che si ottiene dal sito dellaSun.

Page 160: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3894 Applicazioni proprietarie

GNU/Linux, è importante poter disporre di unkernel relativamente recente, sono indispensabilile librerie GNU C Library (ovvero‘ /lib/libc.so.6 * ’) ed è necessario che X sia messo infunzione con una risoluzione di almeno 256 colori (8 bit).

345.3.1 Archivio di partenza, documentazione e installazione nelsistema

La versione GNU/Linux diStarOffice 5.1 è distribuita in pratica in un solo archivio‘ tar ’ , chenon è compresso perché i file che contiene sono già stati compressi in precedenza. Il file in que-stione è‘so51a_lnx_39.tar ’ , oppure potrebbe trattarsi di un nome simile in caso di edizionisuccessive, anche se attribuibili sempre alla stessa versione 5.1. Il contenuto di questo file deveessere estratto da qualche parte, per esempio in una directory temporanea:

# tar xvf so51a_lnx_39.tar

Come si vede, in questa fase conviene agire con i privilegi dell’utente‘ root ’ . Dopo averestratto il contenuto dell’archivio, si ottengono due sottodirectory: in una si trova la docu-mentazione (‘so51inst/documentation/ ’), che dovrebbe essere distribuita in forma di filePDF, mentre nell’altra (‘so51inst/office51/ ’) si trovano una serie di file che vengono usatinell’installazione.

# cd so51inst/office51

Conviene spostarsi nella directory contenente i file necessari all’installazione, come si vede nel-l’esempio. Qui si dovrebbero trovare un paio di file di testo:‘LICENSE’ , che è bene leggere primadi iniziare l’installazione, e‘README’ che riepiloga le informazioni salienti sull’installazione delpacchetto.

Per iniziare l’installazione basta avviare l’eseguibile‘setup ’ , tenendo conto però che ènecessario farlo a partire dall’ambiente grafico.

La prima volta che si installa il pacchetto nel sistema, è bene utilizzare l’opzione‘ /net ’ , in mododa renderla disponibile a tutti gli utenti:

# ./setup /net

A questo punto, il programma di installazione si avvia e comincia a mostrare le finestre di dialogoattraverso le quali guida l’amministratore all’installazione dell’applicazione.

Viene mostrato il testo del file‘README’ e del file‘LICENSE’ , quindi viene richiesta l’approvazio-ne esplicita del contenuto del secondo. Successivamente si passa alla selezione dei componentiche si vogliono installare: in condizioni normali si seleziona tutto, «installazione standard», evi-tando così di essere interrogati ulteriormente a questo proposito. Dopo questa fase, subito primadi passare all’installazione dei file, viene richiesta la directory in cui dovrà risiedere l’applicativo.In questa situazione, è consigliabile limitarsi a due sole alternative:‘ /opt/Office51 ’ , oppure‘ /usr/local/Office51 ’ .

Purtroppo, l’installazione generale non basta: ogni utente che vuole usare l’applicativo deve av-viare una sua configurazione, attraverso la quale verrà anche invitato a registrarsi personalmente(anche se per questo non si è obbligati espressamente).

Page 161: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Applicazioni proprietarie 3895

345.3.2 Installazione personale e avvio

Una volta che i file diStarOffice sono stati installati nel sistema dall’amministratore, supponendoche questo sia avvenuto nella directory‘ /opt/Office51/ ’ , l’utente che vuole farne uso deveconfigurarlo la prima volta, sempre attraverso l’interfaccia grafica:

$ /opt/Office51/bin/setup

Questa volta, oltre a chiedere l’approvazione della licenza d’uso, l’utente è invitato a inserire ipropri dati, allo scopo di effettuare la registrazione. La compilazione di questa mascherina non èindispensabile per il funzionamento diStarOffice.

Successivamente viene chiesto di precisare il tipo di «installazione» che si intende eseguire. In-fatti, devono essere installati alcuni file, potendo scegliere tra l’installare solo il minimo indispen-sabile, «installazione workstation standard», oppure l’installazione dell’applicativo completo inuna sottodirectory della propria directory personale. In condizioni normali, gli utenti sceglieran-no la prima ipotesi. In ogni caso, questi file vanno installati da qualche parte ed è normale chequesto avvenga nella directory‘~/Office51/ ’ .

A partire dalle versioni 4.* di StarOffice, è stato introdotto il file‘ .sversionrc ’ nella di-rectory personale degli utenti che hanno installato la sua configurazione. All’interno di questofile sono elencate le versioni installate dell’applicativo, assieme al percorso dell’eseguibile daavviare. Se l’utente ha già installato personalmente una copia dell’applicativo, che poi ha can-cellato manualmente, mentre adesso vuole reinstallarne la configurazione, deve prima cancel-lare in questo file la riga che vi fa riferimento, altrimenti il programma propone di modificarel’impostazione dell’installazione precedente, anche se questa non c’è più.

L’avvio dell’applicativo, una volta completate le fasi di installazione e di configurazione, avvieneper mezzo dell’eseguibile‘soffice ’ , meglio se con tutto il suo percorso iniziale:

$ /opt/Office51/bin/soffice &

345.3.3 Stampa

In generale, se il proprio sistema GNU/Linux è stato configurato correttamente per ciò che ri-guarda la stampa, in modo che attraverso il comando‘ lpr ’ possano essere stampati filePost-Script, non c’è bisogno di modificare l’impostazione predefinita diStarOffice sulla stampa.Eventualmente, l’amministratore del sistema potrebbe valutare la possibilità di ritoccare qualcosaattraverso il programma‘spadmin ’ :

# /opt/Office51/bin/spadmin

345.4 StarOffice 5.2

StarOffice 5.2 ha un’installazione simile a quella della versione 5.1. L’archivio viene fornito informa binaria, dove l’estrazione del contenuto prima dell’installazione vera e propria avviene inmodo automatico, creando una directory temporanea che al termine viene rimossa.

Per l’installazione è sufficiente il file eseguibile‘so-5_2-ga-bin-linux-it.bin ’ , proceden-do semplicemente secondo i passi seguenti:

Page 162: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3896 Applicazioni proprietarie

1. l’utente ‘ root ’ avvia X e da lì, con una finestra di terminale, avvia l’eseguibile‘so-5_2-ga-bin-linux-it.bin ’ con l’opzione‘ /net ’ ;

# so-5_2-ga-bin-linux-it.bin /net &

2. l’utente‘ root ’ richiede l’installazione in una directory conveniente, per esempio‘ /opt/

Office52/ ’ ;

3. al termine dell’installazione, l’utente‘ root ’ conclude il funzionamento di X;

4. l’utente comune che vuole utilizzareStarOffice deve avviare a sua volta X;

5. l’utente comune, attraverso una finestra di terminale, avvia l’installazione personalizza-ta con l’eseguibile‘setup ’ , specificando la modalitàworkstation standard , quandorichiesto;

$ /opt/Office/program/setup &

6. al termine dell’installazione personalizzata, l’utente comune può avviareStarOffice con ilcomando‘ /opt/Office/program/soffice ’ .

$ /opt/Office/program/soffice &

345.5 Netscape

Netscape Communicator6 è prodotto dallaNetscape Communications Corporation (<http://

www.netscape.com>). Si tratta di uncliente integrato per diversi tipi di protocolliInternet, inparticolare: HTTP, FTP e GOPHER, oltre che per la posta elettronica e i gruppi di discussione.

Recentemente, laNetscape Communications Corporation ha dichiarato ufficialmente di rilasciareil suo prodotto, nella versione normale, in forma gratuita per qualunque piattaforma.

345.5.1 Configurazione

Ogni utente ha una propria configurazione diNetscape e una propria gestione dellamemoria ca-che delle pagine visitate di recente. La prima volta che viene avviato, viene richiesta l’accettazio-ne esplicita delle condizioni della licenza d’uso, quindi viene creata la directory‘~/.netscape ’che poi si articola ulteriormente.

$ netscape [ Invio ]

6Netscape Communicator software gratuito, non libero

Page 163: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Applicazioni proprietarie 3897

Figura 345.4. Quando un utente avvia per la prima volta Netscape, viene richiestal’accettazione esplicita della licenza d’uso. Trattandosi di un prodotto proprietario,per quanto gratuito, è bene leggere e verificare la licenza.

Figura 345.5. Dopo l’accettazione della licenza, viene creata una directory percontenere la configurazione e la memoria cache delle pagine visitate.

La configurazione diNetscape è abbastanza intuitiva. In generale vi si accede attraverso ilmenùEdit , selezionando la vocePreferences .

Page 164: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3898 Applicazioni proprietarie

Figura 345.6. La configurazione di Netscape, attraverso la selezione della vocePreferences , dal menù Edit .

345.5.2 Tempi morti

Un problema che riguarda un po’ tutti questi programmicliente, sono i tempi morti. Questiprogrammi, quando tentano di accedere a un risorsa senza riuscirci, restano a lungo in attesaprima di restituire una segnalazione di errore. Se si utilizza, o si gestisce, unservente DNS equesto non risulta raggiungibile, oppure a sua volta non riesce a raggiungere gli altriserventiDNS di livello superiore, le attese sono dovute al ritardo nella risposta nella risoluzione deinomi.

Quando si vuole utilizzareNetscape semplicemente per delle attività locali e si notano questiproblemi nelle risposte, se si gestisce unservente DNS locale che, almeno temporaneamente,non ha accesso alla rete esterna, si può provare a disattivarlo utilizzando il comando seguente:

# rndc stop [ Invio ]

In seguito, per riattivarlo, basterà utilizzare il comando opposto.

# rndc restart [ Invio ]

345.6 XV

XV 7 è un applicativo proprietario di tiposhareware, anche se abbastanza permissivo, per l’ela-borazione di immagini. È relativamente completo, nel senso che consente di effettuare un buonnumero di operazioni e trasformazioni. Il suo funzionamento è un po’ insolito e le prime voltepossono sfuggire molte delle sue buone qualità.

7XV software gratuito, non libero

Page 165: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Applicazioni proprietarie 3899

345.6.1 Avvio di XV

xv [ opzioni] [ file...]

L’eseguibile‘xv ’ è quello che svolge tutto il lavoro. Si tratta di un programma interattivo con cuisolitamente non viene usata alcuna opzione e nemmeno alcun nome di file. Quello che si ottieneè una finestra di presentazione sulla quale basta portare il cursore e fare un clic con il terzo tastoper ottenere il pannello di controllo del programma.

Figura 345.7. All’avvio dell’eseguibile ‘xv ’ senza argomenti, viene visualizzata questaimmagine. Basta portavi sopra il puntatore del mouse e fare un clic con il terzo tastoper fare apparire il pannello di controllo.

La finestra che contiene questa immagine di presentazione è quella utilizzata per mostrare leimmagini che si elaborano, o che semplicemente si vogliono visualizzare.

XV potrebbe essere utilizzato anche solo come mezzo per visualizzare delle immagini. In talcaso, indicando i nomi dei file nella riga di comando dell’eseguibile, si ottiene la visualizzazionedel primo nella finestra iniziale e le operazioni più semplici possono essere compiute attraversol’uso della tastiera. La tabella345.1elenca i comandi che possono essere impartiti attraverso latastiera per ottenere lo scorrimento, la rotazione e l’ingrandimento delle immagini.

Tabella 345.1. Alcuni comandi utili per l’uso di XV come visualizzatore di immagini.

Tastiera DescrizioneSpazio Passa all’immagine successiva.m Ingrandisce l’immagine al massimo consentito dallo schermo.n Riporta l’immagine alla sua dimensione normale.t Ruota di 90 gradi in senso orario.h Rovescia l’immagine orizzontalmente.v Rovescia l’immagine verticalmente.q Termina l’esecuzione del programma.

345.6.2 Controlli

Come accennato precedentemente, portando il puntatore del mouse sull’immagine e premendo ilterzo tasto appare il pannello di controllo diXV. La parte centrale di questo mostra un elenco difile di immagini. Questo potrebbe essere vuoto se il programma è stato avviato senza argomenti,come nel caso mostrato nella figura345.8.

Page 166: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3900 Applicazioni proprietarie

Figura 345.8. Il pannello di controllo di XV.

Tutto attorno a questa zona centrale appaiono una serie di pulsanti grafici, che permettono diaccedere amenù nascosti oppure eseguono subito delle funzioni particolari.

345.6.3 Caricamento, salvataggio, scorrimento e stampa

I pulsanti grafici posti alla destra dell’elenco di file sono particolarmente importanti. La figura345.9mostra un elenco di immagini e i pulsanti relativi.

Figura 345.9. Le funzioni principali del pannello di controllo di XV.

La tabella345.2elenca le funzioni riferite a questi pulsanti.

Tabella 345.2. Alcuni comandi utili per l’uso di XV come visualizzatore di immagini.

Nome DescrizionePrevious Visualizza l’immagine precedente dell’elenco.Next Visualizza l’immagine successiva dell’elenco.Load Carica un file, lo aggiunge all’elenco e lo visualizza.Save Salva un’immagine, eventualmente cambiandone il formato o il nome.Print Stampa l’immagine selezionata.Delete Elimina un’immagine dall’elenco oppure cancella il file corrispondente.

Page 167: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Applicazioni proprietarie 3901

345.6.4 Funzionalità di uso frequente

Nella parte inferiore del pannello di controllo appaiono alcuni pulsanti con significati che posso-no apparire più o meno oscuri, fino a quando non si è appreso il loro funzionamento. La figura345.10mostra questa serie di pulsanti.

Figura 345.10. Le funzionalità di uso frequente, poste nella parte inferiore del pannellodi controllo di XV.

I pulsanti che non possono essere utilizzati, in funzione del contesto, sono offuscati. Molte diqueste funzioni fanno riferimento a una zona dell’immagine selezionata. Questa zona può esseredefinita utilizzando il mouse, puntando il cursore su un punto nella finestra contenente l’immagi-ne, premendo il primo tasto e trascinando. I pulsanti grafici della prima fila sono particolarmenteimportanti:

1. copia la zona selezionata dell’immagine visualizzata;

2. taglia la zona selezionata dell’immagine visualizzata;

3. riproduce la zona copiata o tagliata precedentemente;

4. cancella il contenuto di una zona;

Per riprodurre una zona copiata o tagliata precedentemente, è necessario prima selezionare l’im-magine su cui intervenire (potrebbe essere la stessa di origine). Quindi occorre selezionare lazona di destinazione, nel solito modo, attraverso un’operazione di trascinamento del mouse. Perfacilitare tutto questo si può usare lo stesso pulsante grafico di riproduzione della zona ritagliata:la prima volta che viene richiamato evidenzia un rettangolo nell’immagine attuale che può esserespostato dove serve, trascinandolo con il mouse; la seconda volta che viene richiamato, incolla ilritaglio in quel punto.

Quando di un’immagine serve solo una parte, basta selezionare la zona nel solito modo, attraversoil mouse. Quindi, utilizzando il pulsanteCR O P si ottiene una nuova immagine contenente solo ilpezzo selezionato precedentemente. Eventualmente, si può evitare questo metodo utilizzando alsuo posto il salvataggio della sola zona selezionata.

Un’altra funzionalità importante, racchiusa in questa parte del pannello di controllo, è il pulsanteGR A B . Attraverso questo è possibile catturare una finestra o una zona dello schermo.

345.6.5 Menù

Nella parte superiore del pannello di controllo appaiono alcuni pulsanti grafici che in realtà ri-chiamano diversimenù. Possono apparire più o meno oscuri, fino a quando non si è appreso illoro funzionamento. Il manuale diXV è il punto di riferimento migliore per apprendere l’uso diqueste funzioni. La figura345.11mostra questo sistema dimenù.

Figura 345.11. Il sistema di menù posto nella parte superiore.

Page 168: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3902 Applicazioni proprietarie

In particolare, con il pulsanteWI N D O W S è possibile selezionare unmenù contenente un po’ ditutto. Attraverso la funzioneVisual Schnauzer si ottiene ungestore di file (file manager) perla ricerca e la visualizzazione in anteprima delle immagini da caricare. La figura345.12mostral’aspetto di questogestore di file.

Figura 345.12. Il gestore di file di XV.

345.7 Riferimenti

• Matthew Borowski,StarOffice mini-HOWTO

<http://www.linux.org/docs/ldp/howto/HOWTO- INDEX/howtos.html>

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 169: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Parte lxxi

Prevenzione346 Copie di sicurezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3904

346.1 Scelta del sistema di copia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3904

346.2 Strategia nelle copie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3906

346.3 Supporti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3908

346.4 Compressione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3908

346.5 Archiviazione e recupero attraverso tar e gzip . . . . . . . . . . . . . . . . . . . . . . . . . . . .3909

346.6 Archiviazione di un file system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3914

347 Emergenza con GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3915

347.1 Dischetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3915

347.2 Personalizzazione di dischetti di emergenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3917

347.3 Dischetti Slackware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3918

347.4 Kernel per dischetti di emergenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3920

347.5 Cavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3921

347.6 Utenti e gruppi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3922

348 nanoLinux II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3923

348.1 Lavoro di cesello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3923

348.2 Dischi più grandi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3927

348.3 Provare nanoLinux II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3927

348.4 Organizzazione di nanoLinux II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3930

348.5 Personalizzazione della procedura di inizializzazione del sistema . . . . . . . . . .3936

349 Dischetti di emergenza delle distribuzioni GNU/Linux e di altre fonti . . . . . . . . . . . .3938

349.1 SuSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3938

349.2 Dischetti realizzati per scopi specifici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3942

3903

Page 170: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 346Copie di sicurezzaL’amministrazione di un sistema Unix è da sempre un grosso problema sotto tutti i punti di vista.Il primo tra tutti è quello della salvaguardia dei dati, ma al rischio della loro perdita si ponerimedio solo attraverso una corretta gestione delle copie di sicurezza.

346.1 Scelta del sistema di copia

Gli strumenti a disposizione per eseguire copie di sicurezza sono molti e si possono distingueredue estremi possibili:

• copiare i file e le directory;

• copiare una partizione o un disco intero.

La copia di una partizione o di un disco può avere il vantaggio di permettere l’archiviazionedella situazione esatta in cui si trova, problemi inclusi. Inoltre, non avendo un processo di letturasui file, la data di lettura di questi non viene modificata. Lo svantaggio fondamentale di taletipo di copia è che questa è riferita a un disco particolare (o a una partizione) di una macchinaparticolare: è molto poco probabile che si possano recuperare dati archiviati in questo modo in undisco fisso diverso. Questa tecnica, più che per eseguire delle copie di sicurezza, viene utilizzataper archiviare dischetti nel loro stato originale.

La copia di file e directory non tiene conto del supporto fisico in cui si trovano e nemmeno deltipo di file system utilizzato. Questo comporta una serie di conseguenze:

• i file e le directory vengono scanditi in lettura, alterando quindi le date di lettura;

• i collegamenti simbolici vanno copiati come tali e non devono essere copiati gli oggetti acui questi puntano;

• i collegamenti fisici potrebbero non essere distinti.

In generale, dal momento che una copia di file e directory è portabile, mentre una copia di undispositivo intero non lo è (quando non si tratta di un dispositivo standard come i dischetti),dovrebbe essere preferibile la prima di queste due soluzioni.

346.1.1 Archiviazione

È intuitiva la ragione per la quale le copie di sicurezza non vanno fatte archiviando un dispositivointero come se fosse un file unico. La copia pura e semplice dei file e delle directory è una tecnicapossibile, ma richiede condizioni particolari:

• l’unità di destinazione deve essere in grado di accogliere i dati come sono all’origine, inpratica dovrebbe trattarsi di un disco;

• deve trattarsi di unità rimovibili;

• la capacità di queste unità deve essere maggiore di quella del file più grande che si ha adisposizione.

Di solito si preferisce la tecnica dell’archiviazione dei dati in un file unico (che rappresental’archivio), assieme a tutte le informazioni necessarie per riprodurre i file e le directory originali.In questo modo si possono utilizzare unità di memorizzazione di qualunque tipo, eventualmentesuddividendo l’archivio in pezzi più piccoli contenibili al loro interno.

3904

Page 171: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Copie di sicurezza 3905

346.1.2 Archiviazione di file speciali

Gli oggetti contenibili in unfile system possono essere di vario tipo (file puri e semplici, directory,file di dispositivo,collegamenti, ecc.) e così pure i loro attributi (permessi, date, ecc.). Il sistemadi archiviazione che si utilizza deve essere in grado riprodurre correttamente tutti i dati del tipodi file system che si utilizza.

Per esempio, non sarebbe possibile archiviare i dati di unfile system Unix in un archivio‘ .zip ’che è nato per gli ambienti Dos.

346.1.3 Utenti e gruppi proprietari

Tra gli attributi dei file, è molto importante l’indicazione degli utenti e dei gruppi proprietari.I programmi di archiviazione potrebbero non essere in grado di memorizzare il numero UID eGID, limitandosi ad annotare solo i nomi degli utenti e dei gruppi. In tal modo, nel momento delrecupero, i numeri UID e GID verrebbero riprodotti in base alle caratteristiche del sistema, cioèin base alla particolare configurazione dei file‘ /etc/passwd ’ e ‘ /etc/group ’ .

Il fatto che il programma di archiviazione memorizzi i numeri UID e GID, oppure che memorizzii nomi di utenti e gruppi, ha delle implicazioni che si traducono, a seconda delle circostanze, invantaggi o svantaggi.

Se i dati archiviati devono essere riprodotti in un sistema diverso da quello di origine, in cui cisono gli stessi nomi di utenti e di gruppi, che però potrebbero corrispondere a numeri UID e GIDdifferenti, diventa conveniente un metodo di archiviazione che ignori i numeri degli utenti e deigruppi. Tuttavia, se alcuni nomi di utenti o gruppi non sono presenti nel sistema di destinazione,la proprietà di questi file verrebbe assegnata automaticamente all’utente‘ root ’ .

Quando si esegue una copia di sicurezza di un intero sistema e poi lo si vuole riprodurre altrove,si agisce per mezzo di un sistema operativo minimo, avviato probabilmente attraverso dischetti.In queste condizioni, lo scopo è quello di riprodurre esattamente il sistema originale, per cui, i nu-meri UID e GID andrebbero rispettati fedelmente, nell’attesa che sia ripristinato tutto, compresii file ‘ /etc/passwd ’ e ‘ /etc/group ’ originali.

Quando il programma di archiviazione memorizza entrambe le informazioni, sia UID/GID chei nomi, nel momento del recupero si pone il problema di come comportarsi quando questi noncorrispondono. Si presentano queste alternative:

• se i numeri corrispondono ai nomi, non si pongono problemi nell’estrazione;

• se i numeri e i nomi non sono utilizzati nel sistema di destinazione, si possono estrarre idati utilizzando i numeri originali, anche se non sono abbinati ad alcun nome;

• se i numeri non sono utilizzati nel sistema di destinazione, mentre i nomi sì, si possonocambiare i numeri in modo che corrispondano i nomi;

• se i nomi non sono utilizzati nel sistema di destinazione, mentre i numeri corrispondonoa nomi differenti, non si può fare altro che recuperare i numeri come solo, assegnando inpratica la proprietà a utenti e gruppi con nomi differenti;

• se sono presenti sia i nomi che i numeri, ma questi non hanno lo stesso abbinamento (cioèi numeri corrispondono a nomi diversi), dovrebbe essere preferibile cambiare i numeri inmodo che corrispondano ai nomi.

Page 172: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3906 Copie di sicurezza

346.1.4 Percorsi assoluti o relativi

Quando si intende archiviare una porzione difile system e quindi solo ciò che si trova a partire dauna certa directory in poi, è importante sapere come si comporta il programma di archiviazioneal riguardo della registrazione dei percorsi (path). Se si vuole archiviare la directory‘ /home/

tizio/esempi/ ’ , il programma di archiviazione potrebbe registrare il suo contenuto in uno deitre modi seguenti.

1. ‘ /home/tizio/esempi/ * ’

2. ‘home/tizio/esempi/ * ’

3. ‘ ./ * ’

Naturalmente, ciò dipende anche dal modo in cui vengono date le istruzioni al programma stesso.

Nel primo caso, quando dovesse rendersi necessario il recupero dei dati, questi verrebbero col-locati esattamente nella directory indicata, in modo assoluto. Nel secondo, verrebbero collo-cati in modo relativo a partire dalla directory corrente, ottenendo così la directory‘ ./home/

tizio/esempi/ * ’ . Nel terzo caso si avrebbe il recupero del contenuto di quella directory senzainformazioni sul percorso precedente.

346.2 Strategia nelle copie

Le copie di sicurezza permettono di conservare la situazione dei dati in un istante determinato,ma i dati sono soggetti a continui aggiornamenti. Per questo occorre una procedura attraverso laquale si possa avere una gestione ordinata e ragionevolmente sicura delle copie.

A parte i rischi connessi con il tipo di supporto utilizzato per le copie e il luogo in cui questevengono conservate, vanno almeno considerate le modalità sequenziali con cui queste possonoessere eseguite. È importante rispettare un paio di regole elementari:

1. non si riutilizzano i supporti contenenti la copia effettuata la volta precedente;

2. non si utilizzano supporti in cattive condizioni.

346.2.1 Generazioni delle copie

Per distinguere una copia effettuata in un momento rispetto a quella fatta in un altro, si parladi generazione. In pratica, l’ultima copia di sicurezza effettuata è l’ultima generazione, mentrele altre sono tutte generazioni precedenti. Questo termine si riferisce naturalmente a copie fattesullo stesso insieme di dati.

Il buon senso suggerisce di utilizzare almeno tre generazioni di copie: l’ultima, quella precedentee quella ancora precedente.

Page 173: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Copie di sicurezza 3907

346.2.2 Livelli delle copie

La copia di unfile system intero comporta solitamente un impegno consistente, sia in termini ditempo che di supporti impiegati. Il programma che si utilizza per le copie, oppure un gruppettoopportuno discript dishell, potrebbe permettere di effettuare la copia successiva dei soli file chesono stati modificati nel frattempo.

Quando si esegue una copia dei soli file che risultano diversi rispetto all’ultima copia completa,si parla dicopia di primo livello; quando se ne esegue un’altra in un momento successivo per levariazioni avvenute dopo quella di primo livello, si parla disecondo livelloe così di seguito.

A parte le difficoltà legate alla conservazione dell’informazione sullo stato dei file (di solitosi tratta della data di modifica e di creazione), si pongono poi dei problemi nel momento incui dovesse essere necessario un ripristino dalle copie. Si dovrebbe ripristinare l’ultima copiacompleta, seguita da tutte quelle aggiuntive dei soli file modificati, nello stesso ordine in cuisono state fatte: dalla più vecchia alla più recente.

Sotto questo aspetto, quando non si vuole ripetere una copia completa troppo frequentemente, sicerca almeno di eseguire copie successive sempre di primo livello (si hanno quindi più genera-zioni di copie di primo livello). In tal modo, un eventuale recupero richiederebbe solo il ripristinodell’ultima generazione di copia completa e dell’ultima generazione di copia di primo livello.

Questo sistema potrebbe non tenere conto dei file cancellati dopo l’ultima generazione di copiacompleta: in tal modo, un eventuale recupero dalle copie di sicurezza potrebbe comportare ilripristino di file che non servono più.

346.2.3 Distribuire le responsabilità

In un sistema monoutente, l’unico utilizzatore è anche l’amministratore del proprio sistema e diconseguenza anche l’unico responsabile. Sarà quindi lui (o lei) a sapere esattamente cosa ha fattoe cosa è necessario copiare per sicurezza.

In un sistema multiutente o comunque quando si condividono dati in gruppo, anche se a primavista potrebbe sembrare conveniente la gestione delle copie in modo centralizzato, è comunqueutile affidarla in parte anche alla responsabilità dei singoli:

• periodicamente, un amministratore potrebbe occuparsi di eseguire la copia complessiva ditutto il sistema;

• ogni giorno, gli utenti dovrebbero preoccuparsi di eseguire le copie dei dati di lorocompetenza.

Nel momento in cui dovesse essere necessario, si dovrebbero recuperare i dati dalle copie generalifatte dall’amministratore e successivamente da quelle particolari dei singoli utenti.

Se determinate attività vengono svolte in gruppo, si potrebbe eleggere ugualmente unresponsabile all’interno di questo che si occupi delle copie di quell’attività.

Il vantaggio di questo metodo sta nell’alleggerimento delle responsabilità dell’amministratore enella soluzione più facile di piccoli problemi locali:

• se un gruppo di lavoro ha alterato i dati a causa di un’operazione errata, è sufficienterecuperare i dati di quel gruppo senza disturbare l’intero sistema;

• la distribuzione della responsabilità aumenta la consapevolezza da parte degli utenti.

Page 174: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3908 Copie di sicurezza

346.3 Supporti

La scelta del supporto di conservazione della copia è importante e comporta alcune conseguenze:

• il costo;

• la disponibilità di unità in grado di utilizzarli;

• la facilità o difficoltà nel recupero di porzioni dei dati archiviati.

Il supporto tradizionalmente più economico e più diffuso nel passato è il nastro magnetico. Que-sto ha però lo svantaggio fondamentale di essere un mezzo di memorizzazione sequenziale: nonè possibile estrarre un file se prima non si scorre tutto il nastro (o tutti i nastri) che c’è prima diquel dato. Un altro svantaggio importante sta nella necessità di rileggere il suo contenuto, dopola copia, per verificare che i dati siano stati registrati correttamente.

Da alcuni anni si possono trovare dischi rimovibili di grandi capacità a prezzi ragionevolmentebassi. Questi hanno il vantaggio di poter essere utilizzati come dischi normali, pertanto, il re-cupero di dati parziali diventa molto più facile, anche quando la copia di sicurezza avviene permezzo di un’archiviazione tradizionale.

Anche i CD-R sono diventati un ottimo mezzo di archiviazione, data l’economicità dei supporti:anche se è possibile una sola registrazione, il prezzo di un CD vergine è molto contenuto. Lapreparazione di un CD-ROM richiede molto spazio su disco per la preparazione dell’immagineprima dell’operazione di «incisione» (burn) e richiede anche l’investimento del masterizzatore.Si tratta di soldi ben spesi: una copia di sicurezza fatta su CD-ROM può essere letta ovunque cisia un lettore, ma questo è ormai un accessorio standard degli elaboratori; inoltre, il CD-ROMha una vita media molto lunga, garantendo la durata delle copie di sicurezza. Esiste tuttaviaun problema nuovo: si deve essere prudenti con le copie obsolete. Infatti, quando le copie disicurezza sono molto vecchie e non servono più, si può essere tentati di conservare i CD o didonarli a qualcuno, magari per gioco, o perché li usi come un addobbo. È evidente che si tratta diun’idea sbagliata: dal momento che questi CD-ROM sono stati usati per delle copie di sicurezza,contengono potenzialmente informazioni delicate e riservate.

I CD-ROM contenenti copie di sicurezza obsolete vanno distrutti prima di essere gettati nelcassonetto del riciclaggio del materiale plastico! Per distruggere un CD, basta tagliarlo a metàcon una forbice normale.

Quando i dati da archiviare sono pochi, può convenire l’utilizzo dei soliti dischetti: sono sicura-mente una scelta economica e le unità a dischetti sono disponibili ovunque. Per quanto riguarda lafacilità di estrazione dei dati, ciò dipende dal modo con cui questi vengono usati: se si registranoi dati al loro interno senza fare uso di alcunfile system, si ottiene un comportamento equivalenteai nastri; se si utilizzano con unfile system, è necessario che l’archivio sia contenibile all’internodi un solo dischetto.

346.4 Compressione

Il problema della dimensione dei dati da archiviare può essere ridotto parzialmente con l’aiutodella compressione. La tecnica della compressione può essere applicata all’archiviazione in duemodi possibili:

• prima della costruzione dell’archivio, ottenendo così un’archivio di file compressi;

Page 175: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Copie di sicurezza 3909

• dopo la costruzione dell’archivio, ottenendo così un archivio compresso.

La differenza è enorme. La compressione introduce un elemento di rischio maggiore nella perditadi dati: se una copia di sicurezza viene danneggiata parzialmente, l’effetto di questo danno siriflette in una quantità di dati maggiore (spesso è compromesso tutto l’archivio).

346.4.1 Compressione prima dell’archiviazione

I programmi di archiviazione compressa maggiormente diffusi negli ambienti Dos utilizzanola tecnica della compressione prima dell’archiviazione. È questo il caso degli archivi‘ .zip ’ ,‘ .arj ’ , ‘ .lzh ’ e di altri ancora. Tale sistema ha il vantaggio di permettere una facile scansionedell’archivio alla ricerca di file da estrarre (e decomprimere) o un ampliamento dell’archivio inun momento successivo alla sua creazione. Un altro vantaggio è la minore sensibilità alla perditadei dati: se una parte dell’archivio è danneggiato, dovrebbe essere possibile ripristinare almeno ilresto. Lo svantaggio principale è che la compressione fatta in questo modo, a piccoli pezzi, nonè molto efficiente.

346.4.2 Compressione dopo l’archiviazione

La compressione fatta dopo l’archiviazione elimina ogni possibilità di accedere ai dati contenutinell’archivio e di poterlo ampliare, se non dopo averlo decompresso. Questo significa anche cheun danneggiamento parziale dell’archivio implica la perdita di tutti i dati da quel punto in poi.1

Un altro tipo di problema deriva dalla difficoltà di distribuire un archivio compresso suddivi-dendolo su più unità di memorizzazione. In questo caso però, l’efficienza della compressione èmassima. Negli ambienti Unix, di fatto, è questa la scelta preferita.

346.5 Archiviazione e recupero attraverso tar e gzip

La coppia‘ tar ’ e ‘gzip ’ rappresenta lo standard nell’archiviazione dei dati:‘ tar ’ genera unarchivio non compresso che può comprendere anchecollegamenti simbolici e file speciali;‘gzip ’lo comprime generando un archivio più piccolo.

La coppia funziona così bene che‘ tar ’ è in grado di utilizzare‘gzip ’ direttamente senza do-ver far uso dipipeline, purché il risultato dell’archiviazione non debba essere suddiviso su piùsupporti.

L’origine del nome‘ tar ’ è Tape archive, ma questo programma permette ugualmente di gestirequalunque altro tipo di sistema di memorizzazione.

La versione GNU di‘ tar ’ (quella utilizzata normalmente nelle distribuzioni GNU/Linux), nonmemorizza percorsi assoluti.

I programmi ‘ tar ’ e ‘gzip ’ sono descritti rispettivamente nelle sezioni76.1.2e 76.2.1. Nellesezioni seguenti sono riportati alcuni esempi.

Negli esempi seguenti si immagina di dover archiviare il contenuto della directory‘~/

lettere/ ’ , equivalente a‘ /home/tizio/lettere/ ’ , comprese eventuali sottodirectorydiscendenti.

1Ci sono programmi di archiviazione che si comportano così anche se non subiscono compressioni successive.

Page 176: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3910 Copie di sicurezza

Negli esempi si cerca di utilizzare la forma tradizionale per l’indicazione delle opzioni standarddi ‘ tar ’ . Alcune di queste possono fare a meno del trattino iniziale, come nel caso di‘c ’ e ‘x ’ .Altre opzioni hanno quel trattino, ma possono essere aggregate in un’unica serie di lettere, comenel caso di‘czvf ’ , dove si ha l’unione di:‘c ’ , ‘ -z ’ , ‘ -v ’ e ‘ -f ’ .

Page 177: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Copie di sicurezza 3911

346.5.1 Archiviazione diretta su dispositivi di memorizzazione

L’archiviazione attraverso la registrazione diretta sui dispositivi utilizza completamente il sup-porto di memorizzazione destinatario, anche se la quantità di dati da archiviare è moltopiccola.

Quello sotto indicato è un esempio di archiviazione in un nastro magnetico singolo: l’opzione‘c ’ sta perCreate; ‘ -f ’ sta perFile e permette di definire la destinazione dell’archiviazione;‘ -z ’ attiva la compressione attraverso‘gzip ’ . Dal momento che si utilizza la compressione,l’archiviazione multivolume non è ammissibile.

# tar czf /dev/ftape ~/lettere

I dischetti possono essere utilizzati come i nastri, in modo sequenziale, ma questo lo si fa so-lo quando l’archivio generato non è contenibile in un solo dischetto: si ha quindi una copiamultivolume e in tal caso non è ammissibile l’uso della compressione.

# tar cf /dev/fd0u1440 -M ~/lettere

In questo caso, l’opzione‘ -M’ sta proprio perMultivolumeindicando quindi la possibilità cheil supporto di destinazione non sia in grado di contenere l’intero archivio. In tal modo,‘ tar ’ siprende cura di sospendere l’archiviazione ogni volta che viene raggiunta la capienza massima.‘ tar ’ non è in grado di determinare da solo questa capacità, per cui, nell’esempio, il dispositivodel dischetto è stato indicato in modo da riconoscerne la geometria, ma in alternativa si potevautilizzare l’opzione‘ -L ’ seguita dalla dimensione:

# tar cf /dev/fd0 -M -L 1440 ~/lettere

Quando si utilizzano in questo modo, i dischetti non contengono unfile system e di conseguen-za non possono essere montati. La lettura del loro contenuto avviene nello stesso modo dellascrittura, attraverso il nome del dispositivo.

L’archiviazione su dischetti, attraverso il dispositivo, richiede comunque che questi siano giàstati inizializzati (a basso livello) secondo il formato che viene indicato. Non conta che sianovuoti: è importante che ci siano le tracce e i settori come previsto.

346.5.2 Archiviazione normale su file

Quando l’archiviazione può essere fatta su dischi (confile system ) di dimensione sufficientea contenere l’archivio intero, invece di utilizzare l’opzione‘ -f ’ per specificare un file di di-spositivo, si può indicare direttamente un normalissimo file al loro interno, come nell’esempioseguente:

$ tar cf /mnt/mo1/lettere.tar ~/lettere

In pratica, nel caso appena visto, si utilizza un disco montato nella directory‘ /mnt/mo1/ ’ e sicrea il file ‘ lettere.tar ’ al suo interno.

L’archiviazione compressa, con l’utilizzo di‘gzip ’ , può essere ottenuta semplicemente conl’opzione ‘ -z ’ , come nell’esempio seguente:

$ tar czf /mnt/mo1/lettere.tar.gz ~/lettere

In tal caso l’estensione standard utilizzata (ma non obbligatoria) è‘ .tar.gz ’ che rende esplicitoil fatto che la compressione è stata fatta dopo l’archiviazione. In alternativa si può usare anche‘ .tgz ’ , diffusa nei sistemi Dos.

Page 178: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3912 Copie di sicurezza

346.5.3 Archiviazione e percorsi

Gli esempi seguenti, pur archiviando gli stessi dati, mostrano un modo diverso di registrare ipercorsi all’interno dell’archivio. La directory di lavoro nel momento in cui si avvia il comando,è ‘ /home/tizio/ ’ , corrispondente alladirectory personale dell’utente.

/home/tizio$ tar czf /mnt/mo1/lettere.tar.gz ~/lettere

/home/tizio$ tar czf /mnt/mo1/lettere.tar.gz /home/tizio/lettere

/home/tizio$ tar czf /mnt/mo1/lettere.tar.gz lettere

/home/tizio$ tar czf /mnt/mo1/lettere.tar.gz ./lettere

Nei primi due esempi, viene archiviata l’indicazione del percorso precedente, ma pur essendostato dato in modo assoluto (‘ /home/tizio/lettere ’), questo viene reso relativo da‘ tar ’ ,eliminando la prima barra obliqua che si riferisce alladirectory radice.2

Negli ultimi due esempi, viene archiviata l’indicazione della sola directory‘ lettere/ ’ , semprein modo relativo.

346.5.4 Archiviazione di periodi

I file sono forniti di informazioni orarie. In base a queste è possibile eseguire delle copie disicurezza riferite a dei periodi. Le copie di sicurezza a più livelli possono essere ottenute inmodo semplificato attraverso l’uso dell’opzione‘ -N ’ seguita da una data di partenza: si ottienel’archiviazione di quanto variato a partire da una certa data; di solito si utilizza quella dell’ultimaarchiviazione completa.3

$ tar czf /mnt/mo1/lettere.tar.gz -N 19970801 ~/lettere

In questo caso, la data che segue l’opzione‘ -N ’ rappresenta la mezzanotte del primo agosto 1997.

$ tar czf /mnt/mo1/lettere.tar.gz -N "19970801 15:30" ~/lettere

Questo ultimo esempio aggiunge alla data l’indicazione di un’ora particolare, 15:30; per evitareche sia interpretato in maniera errata, il gruppo data-orario viene racchiuso tra virgolette.

346.5.5 Archiviazione limitata a un’unità

Quando si eseguono delle copie di sicurezza, è probabile che si voglia archiviare solo la situazio-ne di una certa unità di memorizzazione (partizione o directory condivisa in rete). In tal caso sideve indicare precisamente questo limite con l’opzione‘ -l ’ (Limit).

346.5.6 Estrazione dei percorsi

Quando si accede all’archivio per estrarne il contenuto o per compararlo con i dati originali, entrain gioco il problema dei percorsi. I dati vengono estratti normalmente nella directory corrente,oppure vengono comparati utilizzando come punto di partenza la directory corrente. Quindi, sel’archivio contiene la directory degli esempi precedenti, registrata a partire dalla radice (ma comegià spiegato, senza l’indicazione della radice stessa), questi verranno estratti in‘ ./home/tizio/

lettere/ ’ , oppure comparati con i dati contenuti a partire da questo percorso.2Questo comportamento riguarda almeno il programma‘ tar ’ di GNU.3Il concetto di variazione, in questo caso, si deve intendere come variazione del contenuto o degli attributi. Quindi si

tratta della data di modifica o della data di «creazione».

Page 179: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Copie di sicurezza 3913

Se in fase di estrazione o comparazione si vuole fare riferimento a percorsi assoluti, si può utiliz-zare l’opzione‘ -P ’ . In questo modo si afferma esplicitamente che i percorsi indicati nell’archiviovanno considerati come discendenti dalladirectory radice.

Questo particolare della gestione dei percorsi è molto importante quando si fanno le copie disicurezza: spesso si hanno dischi montati supunti di innesto provvisori, pertanto non è moltoconveniente memorizzare anche il percorso su cui sono montati.

346.5.7 Recupero

Per poter effettuare un recupero di dati da un archivio è necessario conoscere in particolare ilmodo in cui questo era stato creato: normale, compresso, multivolume.

In generale, per recuperare dati da un archivio si utilizza l’opzione‘x ’ (Extract) al posto di‘c ’ ea essa si devono eventualmente aggiungere‘ -z ’ nel caso di estrazione da un archivio compressocon ‘gzip ’ o ‘ -M’ nel caso di un archivio multivolume.

Durante il recupero di una copia di sicurezza è importante fare in modo che i dati riprodotti man-tengano gli stessi attributi originali (permessi e proprietà). Per questo si aggiungono le opzioni‘ -p ’ (riproduce i permessi) e‘ --same-owner ’ (riproduce le proprietà: UID e GID).

L’esempio seguente mostra un recupero da un archivio multivolume su dischetti.

~$ tar x -M -p --same-owner -f /dev/fd0u1440

L’esempio seguente mostra un recupero con percorso assoluto: i percorsi indicati all’internodell’archivio vengono aggiunti alladirectory radice.

$ tar xz -P -p --same-owner -f /mnt/mo1/lettere.tar.gz

346.5.8 Recupero parziale

Il recupero parziale del contenuto di un archivio‘ tar ’ può essere fatto per file singoli o per direc-tory, oppure attraverso l’uso di caratteri jolly. In questo ultimo caso però, occorre fare attenzionea evitare che lashell esegua l’espansione: è compito di‘ tar ’ determinare a cosa corrispondanoall’interno dei suoi archivi.4

Valgono le regole solite: l’asterisco rappresenta uninsieme di caratteri qualunque; il punto in-terrogativo rappresenta un carattere qualsiasi; le parentesi quadre rappresentano un carattere ascelta tra un insieme o tra un intervallo determinato.

Quando si indicano nomi di file o directory, o quando si utilizzano i caratteri jolly, occorre tenerepresente che si sta facendo riferimento ai dati contenuti nell’archivio, con i percorsi memorizzatioriginariamente. Inoltre, se con i caratteri jolly si determina la corrispondenza con una directory,si ottiene l’estrazione del contenuto complessivo di quella.

L’esempio seguente mostra in che modo potrebbero essere recuperate le lettere contenute nelladirectory‘home/tizio/lettere/nuove/ ’ (l’esempio appare diviso su due righe, a causa dellasua lunghezza).

$ tar xz -P -p --same-owner -f /mnt/mo1/lettere.tar.gz ←→home/tizio/lettere/nuove

L’esempio seguente mostra l’estrazione di tutti i file e delle directory corrispondenti a‘home/

tizio/lettere/ve * ’ . Gli apici sono necessari per evitare che intervenga lashell a espanderel’asterisco.

4Questo è un po’ quello che accade a‘ find ’ con l’opzione‘ -name ’ : è ‘ find ’ stesso ad analizzare i caratteri jolly.

Page 180: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3914 Copie di sicurezza

$ tar xz -P -p --same-owner -f /mnt/mo1/lettere.tar.gz ←→’home/tizio/lettere/ve*’

346.5.9 Elenco e controllo

Per ottenere un elenco del contenuto di un archivio e per compararne il contenuto con i datioriginali, valgono le stesse regole del recupero dei dati. In particolare, al posto dell’opzione‘x ’si deve utilizzare‘ t ’ (List) per gli elenchi e‘d’ (Diff ) per la comparazione.

346.6 Archiviazione di un file system

L’archiviazione di unfile system intero, va fatta considerando le caratteristiche di questo, in par-ticolare della sua struttura fisica: partizioni e condivisione attraverso la rete. In generale dovrebbeessere conveniente l’archiviazione separata per ogni partizione e per ognifile system condivisoin rete.

Oltre a questo occorre evitare di archiviare anche l’archivio che si sta creando: quando la desti-nazione dell’archiviazione è un file su disco, questo deve essere montato da qualche parte e perquesto si potrebbe creare un circolo vizioso.

Ci sono directory che, per la loro natura, non conviene o non devono essere archiviate: per‘ /tmp/ ’ non conviene; con‘ /proc/ ’ non si deve.5 In questi casi si deve solo ricordare di ricrearequeste directory, nel momento in cui fosse necessario il recupero.6

346.6.1 Strumenti per il recupero

L’archiviazione di copie di sicurezza non è sufficiente a garantirsi contro gli incidenti: in chemodo si può avviare un elaboratore in cui è appena stato sostituito il disco fisso? Evidentemente,occorre essere più previdenti e predisporre in anticipo gli strumenti necessari per preparare lepartizioni di un nuovo disco fisso e per recuperare i dati archiviati precedentemente.

Questo argomento viene trattato nei prossimi capitoli.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

5GNU/Linux6Non bisogna dimenticare i permessi:‘ /tmp/ ’ 17778 e ‘ /proc/ ’ 05558.

Page 181: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 347

Emergenza con GNU/LinuxNel momento dell’imprevisto si può agire solo se si è stati previdenti, pensando ai tipi di si-tuazioni che si possono presentare e preparando gli strumenti necessari in anticipo. Le copie disicurezza sono la prima cosa da fare per prepararsi ai guai, ma da sole non bastano: occorronoaltri strumenti per rimettere in sesto un sistema prima di poter effettuare un eventuale recuperodalle copie.

347.1 Dischetti

Di fronte a un problema qualunque di una gravità tale da non permettere l’avvio di un sistemalocale, l’unica possibilità di intervenire è data da strumenti su dischetti. Esistono diversi tipi didischetti che possono essere stati preparati in precedenza:

• dischetti di avvio;

• dischetti di installazione della distribuzione GNU/Linux;

• dischetti preparati appositamente.

347.1.1 Dischetti di avvio

Un dischetto di avvio può essere utile quando, per qualche motivo, il metodo normale di cari-camento del sistema operativo non funziona più. Esistono almeno tre tipi di dischetti di questotipo:

• dischetti con un settore di avvio, ma senzakernel;

• dischetti con un settore di avvio e con ilkernel;

• dischetti contenenti solo l’immagine delkernel.

347.1.1.1 Settore di avvio senza il kernel

La prima soluzione, quella del dischetto senzakernel, non è adatta per avviare un sistema indifficoltà: è solo un modo per verificare una configurazione diLILO quando non si vuole inter-ferire con l’MBR del disco fisso. In pratica si ottiene semplicemente indicando nel file‘ /etc/

lilo.conf ’ la riga ‘boot=/dev/fd0 ’ , come nell’esempio seguente:

boot=/dev/fd0prompttimeout=50image=/boot/vmlinuz

label=linuxroot=/dev/hda2read-only

Quando viene avviato l’eseguibile‘ lilo ’ con questa configurazione, si ottiene la scrittura delprimo settore del primo dischetto (il dischetto deve essere stato inizializzato in precedenza e puòanche non contenere alcunfile system). Ma in questo modo si intende che i file per il caricamentodel sistema si devono trovare nella directory‘ /boot/ ’ del momento in cui si esegue‘ lilo ’ ,

3915

Page 182: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3916 Emergenza con GNU/Linux

ovvero nelfile system in funzione in quel momento e non nel dischetto. Inoltre, anche ilkernel‘ /boot/vmlinuz ’ si intende contenuto in quelfile system e non nel dischetto.

Quando si avvia con un dischetto fatto in questo modo, il programma contenuto nel primo settoreva alla ricerca delkernel e degli altri file, necessari per il caricamento del sistema, nel disco fissonel momento dell’utilizzo diLILO. Se il sistema non si avvia perché questi file o ilkernel sonostati spostati, a nulla serve un dischetto fatto in questo modo.

347.1.1.2 Settore di avvio e kernel

Per fare in modo che il dischetto avvii unkernel contenuto al suo interno, è necessario chequesto dischetto contenga unfile system, che vi sia stata copiata la directory‘ /boot/ ’ con ilsuo contenuto, la directory‘ /etc/ ’ con il file ‘ lilo.conf ’ e che sia stata riprodotta la directory‘ /dev/ ’ con il file di dispositivo‘ fd0 ’ (assieme agli altri file di dispositivo necessari a individuarei dischi o le partizioni a cui si vuole fare riferimento). Quindi è sufficiente eseguire‘ lilo ’ conl’opzione ‘ -r ’ , come descritto nella sezione18.4.

Esiste anche la possibilità di usareSYSLINUX, che permette di realizzare un dischetto con lestesse caratteristiche e con meno difficoltà.SYSLINUX è descritto nel capitolo16.

Rispetto alla prossima tecnica, un dischetto contenenteLILO e il kernel, come appena descritto,è uno strumento di avvio più completo perché permette di specificare, sia attraverso la configu-razione del file‘ /etc/lilo.conf ’ che per mezzo del cosiddettobootprompt, alcuni parametridi avvio particolari del quale il proprio sistema potrebbe avere bisogno.

347.1.1.3 Immagine del kernel

L’ultima possibilità è la più semplice e, sotto questo aspetto, anche la più sicura: il file delkernelviene copiato sul dispositivo del dischetto, senza fare uso di alcunfile system. Si può utilizzareuno dei due modi seguenti.

# cp vmlinuz /dev/fd0

# dd if=vmlinuz of=/dev/fd0

Evidentemente, il file delkernel è speciale perché riesce ad avviare se stesso. Ilkernel da solo,però, potrebbe non sapere quale dispositivo contiene ilfile system principale da montare al mo-mento dell’avvio. È necessario utilizzare il programma‘ rdev ’ per inserire questa e altre notizienel kernel.

Supponendo che si debba avviare la partizione‘ /dev/hda2 ’ , inizialmente in sola lettura, siprocede come segue per fare queste annotazioni in unkernel copiato in un dispositivo‘ /dev/

fd0 ’ :

# rdev /dev/fd0 /dev/hda2

# rdev -R /dev/fd0 1

Page 183: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Emergenza con GNU/Linux 3917

347.1.2 Dischetti di una distribuzione

La maggior parte delle distribuzioni GNU/Linux predispone dei dischetti di emergenza checonsentono generalmente di accedere al disco fisso e di fare delle piccole riparazioni.

Tra tutti, i dischetti più rudimentali sono quelli della distribuzioneSlackware. La loro sempli-cità è da considerare un pregio, dal momento che utilizzandoli ci si trova di fronte un sistemaGNU/Linux più o meno tradizionale, senza ottimizzazioni particolari.

347.1.3 Dischetti realizzati appositamente

Ogni sistema ha le proprie caratteristiche ed esigenze. I dischetti di emergenza preparati da al-tri, oppure ottenuti da una distribuzione GNU/Linux, possono adattarsi a un certo insieme disituazioni, ma non a tutte.

Quando si vuole essere sicuri di avere gli strumenti giusti al momento giusto, occorre che questisiano stati preparati e collaudati bene, in modo da non sprecare tempo inutilmente. In sostanza,la realizzazione o la personalizzazione di dischetti di emergenza è una tappa importante per chivuole amministrare seriamente il proprio sistema.

347.2 Personalizzazione di dischetti di emergenza

L’utilizzo di dischetti di emergenza preparati da altri è un buon punto di partenza, ma leparticolarità che ogni sistema può avere consigliano almeno una personalizzazione delkernel.

347.2.1 Loopback block device

Per poter costruire o almeno personalizzare dei dischetti di emergenza è particolarmente utileattivare nelkernel la gestione diretta delle immagini di questi (sezione29.2.7).

In questo modo, un’immagine non compressa di un dischetto può essere montata con un comandosimile a quello seguente:

mount -o loop -t tipo_di_file_system file_immagine punto_di_innesto

347.2.2 disco RAM

Il file system principale può essere caricato in memoria centrale (RAM) e montato da lì. Si ottieneun cosiddettodisco RAM. A parte ogni considerazione sui vantaggi che questo può avere nelleprestazioni del sistema, si tratta di una modalitàquasi obbligata per l’utilizzo di dischetti diemergenza. Infatti, undisco RAM può essere ottenuto a partire da un’immagine compressa: è ilkernel stesso che la espande in memoria all’atto del caricamento. Quindi, si può fare stare in undischetto un’immagine di dimensioni superiori alla sua capacità.

Oltre a questo vantaggio, che però richiede la presenza di molta memoria RAM, un dischettocontenente unfile system che è stato trasferito nella RAM, può essere rimosso subito dopo ilsuo caricamento, permettendo il riutilizzo dell’unità a dischetti, magari per accedere ad altriprogrammi di servizio non inclusi neldisco RAM.

Per la gestione di undisco RAM occorre che ilkernel sia configurato appositamente (29.2.7).

Page 184: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3918 Emergenza con GNU/Linux

347.2.3 Scostamento (offset)

Quando ilkernel carica undisco RAM da un’immagine contenuta in un dischetto, deve conoscerela posizione di inizio di questa immagine. Ciò è importante quando sia ilkernel che l’immagineda caricare risiedono nello stesso dischetto. Quando l’immagine da caricare neldisco RAM ècontenuta in un dischetto separato, questa si troverà normalmente a partire dall’inizio di questo,cioè da uno scostamento pari a zero.

347.3 Dischetti Slackware

I dischetti della distribuzioneSlackware sono i più semplici ed efficaci in situazioni di emergenza.Per essere avviati necessitano di un dischetto di avvio (boot) contenente ilkernel, ma questo puòessere eventualmente predisposto localmente in modo da avere a disposizione la configurazionepiù adatta al proprio sistema. Questi dischetti sono reperibili normalmente presso gli indirizziseguenti:

<http://www.ibiblio.org/pub/Linux/distributions/slackware/rootdsks/>

<http://www.ibiblio.org/pub/Linux/distributions/slackware/bootdsks.144/>

Il dischetto migliore per la soluzione di problemi è rappresentato dall’immagine compressa‘ rescue.gz ’ . Se si intende utilizzare anche un dischetto di avvio ottenuto dalla distribuzione,occorre sceglierlo in base alle indicazioni che si trovano nei file di testo inclusi nelle directoryindicate.

L’immagine ‘ rootdsks/rescue.gz ’ è compressa e contiene in pratica un disco in formatoExt2 di qualche mebibyte (simbolo: Mibyte). Questo implica che per poterne fare uso occorremolta memoria RAM.

Nelle prime versioni della distribuzioneSlackware era distribuita un’immagine‘ rescue.gz ’molto più piccola, che poteva essere espansa e collocata comodamente su un dischetto da1440 Kibyte. Questa immagine è ancora disponibile e si trova nel percorso‘ rootdsks/

obsolete/rescue.gz ’ . Il fatto di poterla decomprimere su un dischetto da 1440 Kibyte per-mette di evitare il caricamento nella RAM. Per elaboratori aventi fino a 8 Mibyte di memoriaRAM, questo è l’unico dischetto di emergenza che possa essere utilizzato ragionevolmente.

Se si intende utilizzare l’immagine‘ rootdsks/obsolete/rescue.gz ’ , è necessarioavviare con unkernel in grado di gestire i vecchi binaria.out.

347.3.1 Organizzazione dei dischetti Slackware

Come già accennato, la distribuzioneSlackware mette a disposizione immagini di dischetti di av-vio, contenenti essenzialmente ilkernel, assieme a immagini di dischetti contenenti ilfile systemprincipale (root).

Le immagini per l’avvio rappresentano dischetti con unfile system normale, contenente un set-tore di avvio, la directory‘ /boot/ ’ e il kernel. Si tratta in pratica di dischetti realizzati in modoanalogo a quanto descritto in precedenza nella sezione347.1.1, quando si faceva riferimento adischetti contenenti questi elementi. Le immagini dei dischetti di avvio, anche se non sono didimensioni pari a quelle di un dischetto normale, non dovrebbero essere compresse e si possonocopiare semplicemente sul dispositivo del dischetto di destinazione.

Page 185: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Emergenza con GNU/Linux 3919

# dd if=net.i of=/dev/fd0

Le immagini dei dischetti contenenti il sistema minimo (root), sono invece dischetti di qualchemebibyte, compressi in modo da poter essere collocati all’interno di un dischetto da 1440 Kibyte,costringendo però all’uso di undisco RAM.

347.3.2 Utilizzare un kernel personalizzato

Per abbinare unkernel personalizzato a un dischetto contenente il sistema minimo della distribu-zioneSlackware, si potrebbe ricostruire un dischetto di avvio seguendo le stesse modalità usatedalla distribuzione stessa, oppure in maniera più semplice, copiando ilkernel in un dischettodirettamente attraverso il suo dispositivo e poi intervenendo con il programma‘ rdev ’ . Vienedescritta l’ultima di queste modalità.

# dd if=zImage of=/dev/fd0

La copia di unkernel in un dischetto, attraverso il suo dispositivo, genera il solito dischettodi avviamento già descritto tante volte. Questokernel su dischetto deve però essere informatodi dove e come fare il caricamento del sistema. Ilfile system principale viene caricato da undischetto, quindi si scrive questo messaggio nelkernel attraverso‘ rdev ’ .

# rdev /dev/fd0 /dev/fd0

I dischetti contenenti il sistema minimo della distribuzioneSlackware non prevedono il controllodel file system e il successivomontaggio in lettura e scrittura. In pratica, ilfile system principaledeve essere montato inizialmente in lettura-scrittura.

# rdev -R /dev/fd0 0

Infine si deve specificare che:

• l’immagine del dischetto contenente il sistema (compressa o meno che sia) si trova in undischetto separato e parte dalla posizione iniziale: lo scostamento è pari a zero;

• si vuole, oppure non si vuole, che tale dischetto sia caricato in undisco RAM;

• si vuole un preavviso per sapere quando si può togliere il dischetto delkernel per inserireil dischetto contenente il sistema.

Per fare questo si agisce su una serie di bit configurabili attraverso‘ rdev ’ con l’opzione‘ -r ’ :

• i primi 11 (dal bit 0 al bit 10) permettono di definire l’indirizzo dello scostamento (inblocchi di 1024 byte);

• il bit 14 indica che si vuole caricare undisco RAM;

• il bit 15 indica che si vuole avere una pausa per lo scambio dei dischetti.

Se si vuole caricare ilfile system principale in undisco RAM si deve utilizzare‘ rdev ’ nel modoseguente:

# rdev -r /dev/fd0 49152

infatti, 215 + 214 + 0 = 49152.

Se invece non si vuole ildisco RAM si deve utilizzare‘ rdev ’ nel modo seguente:

Page 186: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3920 Emergenza con GNU/Linux

# rdev -r /dev/fd0 32768

infatti, 215 + 0 + 0 = 32768.

347.4 Kernel per dischetti di emergenza

Quando si configura unkernel da utilizzare assieme a dischetti di emergenza, occorre tenere pre-sente che non è ragionevolmente possibile utilizzare i moduli ed è importante attivare determinatecaratteristiche che di solito non vengono considerate per i sistemi normali.

• Gestione dei binaria.out.

I dischetti di emergenza obsoleti sono nel vecchio formatoa.out. Ilkernel deve essere statopredisposto per gestirli.

Kernel support for a.out binaries

• File systemMinix.

Il file system più utilizzato in passato per i dischetti di emergenza, specialmente quan-do questi dovevano essere di dimensioni minime, èMinix. Anche se adesso i dischetti diemergenza che si trovano in circolazione sono prevalentemente in formatoExt2, convieneincludere la gestione di questo vecchio tipo di formato.

Minix fs support

• dischi RAM.

Anche se non si intendono utilizzare dischetti caricati in memoria RAM, vale la pena dipreparare unkernel che ne permetta comunque l’utilizzo.

RAM disk support

• Porta parallela PLIP.

Un kernel per un dischetto di emergenza deve permettere la gestione della rete (TCP/IP)e, in particolare, invece di attivare la gestione della porta parallela per la stampa, convieneattivare la gestione della connessione PLIP.

PLIP (parallel port) support

347.4.1 Tastiera

Quando si usano dei dischetti di emergenza si hanno già molte limitazioni e a queste si aggiungeanche la scomodità di una tastiera che non combacia con quella USA.

Si può risolvere il problema direttamente nelkernel senza dover tentare di inserire il programma‘ loadkeys ’ in dischetti già troppo piccoli. È sufficiente trovare il file della mappa della tastieraitaliana (di solito si tratta del file‘ it.kmap ’ collocato nella directory‘ /usr/share/keymaps/

piattaforma/qwerty/ ’) e quindi generare il sorgente‘defkeymap.c ’ . Si procede come segue,nel caso si utilizzi la piattaformai386.

# cd /usr/src/linux/drivers/char

# loadkeys --mktable /usr/share/keymaps/i386/qwerty/it.kmap ←→> defkeymap.c

La compilazione successiva di un nuovokernel utilizzerà la mappa italiana come predefinita enon ci sarà bisogno di utilizzare‘ loadkeys ’ .

Page 187: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Emergenza con GNU/Linux 3921

347.5 Cavi

Quando si ha la disponibilità di più elaboratori, è probabile che il danno presentatosi su uno diquesti non si sia riprodotto in tutti. Una piccola rete locale potrebbe essere di aiuto in situazionidi emergenza e in sua mancanza potrebbero andare bene anche dei cavi paralleli PLIP. Questotipo di cavo viene descritto nella partexciv. La sua realizzazione non è difficile: basta un piccolosaldatore, un po’ di stagno, due connettori maschi DB-25 e una piattina multipolare con almeno13 fili. La schermatura non è necessaria.

Con i dischetti della distribuzioneSlackware, preferibilmente con l’immagine‘ resque.gz ’ , èpossibile stabilire una semplice connessione con unservente NFS.

347.5.1 Ethernet

Attraverso una connessioneEthernet, con un’interfaccia riconosciuta come‘eth0 ’ , si può agirecome nell’esempio seguente. Si suppone in particolare che l’indirizzo di rete sia 192.168.1.0,che lamaschera di rete sia 255.255.255.0 e di poter utilizzare l’indirizzo IP 192.168.1.17 perl’elaboratore avviato con i dischetti di emergenza.

# ifconfig eth0 192.168.1.17 netmask 255.255.255.0

# route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0

Per verificare la connessione si può fare un‘ping ’ verso l’elaboratore da raggiungere: potrebbetrattarsi dell’indirizzo 192.168.1.1.

# ping 192.168.1.1

Se tutto è andato bene si può procedere. Si suppone che l’elaboratore 192.168.1.1 metta adisposizione il suofile system a partire dalladirectory radice.

# mount -t nfs 192.168.1.1:/ /mnt

347.5.2 PLIP

Nel caso di una connessione PLIP, la procedura è un po’ differente. In particolare bisogna ri-cordare che l’elaboratore dal quale si vogliono attingere i dati attraverso il protocollo NFS, deveavere unkernel compilato in modo da gestire questo tipo di connessione.

Si fa riferimento allo stesso esempio riportato nella sezione precedente. L’unica differenza stanell’interfaccia usata per la comunicazione: si suppone che sia stata riconosciuta la‘plip1 ’ daentrambi i lati.

Il procedimento di connessione va fatto da entrambi i capi, infatti, raramente un elaboratoreha una connessione PLIP stabile, per cui non si trova ad avere un indirizzo e una tabella diinstradamento già pronti.

Dal lato dell’elaboratore avviato con i dischetti si procede come segue:

rescue# ifconfig plip1 192.168.1.17 pointopoint 192.168.1.1

rescue# route add -host 192.168.1.17 dev plip1

rescue# route add -host 192.168.1.1 dev plip1

Page 188: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3922 Emergenza con GNU/Linux

Dal lato dell’elaboratoreservente si effettua l’operazione inversa.

server# ifconfig plip1 192.168.1.1 pointopoint 192.168.1.17

server# route add -host 192.168.1.1 dev plip1

server# route add -host 192.168.1.17 dev plip1

Per verificare la connessione si può fare un‘ping ’ .

rescue# ping 192.168.1.1

Se tutto è andato bene si può procedere montando ilfile system di rete.

rescue# mount -t nfs 192.168.1.1:/ /mnt

347.5.3 Considerazioni accessorie

Il dischetto di emergenza ha bisogno di un altropunto di innesto per accedere a un disco fissolocale. È sufficiente creare un’altra directory.

Quando si accede a unservente NFS e non è possibile farlo mantenendo i privilegi dell’utente‘ root ’ , una semplice copia attraverso‘cp -dpR ’ non dà un risultato garantito: alcuni file po-trebbero risultare inaccessibili in lettura. La cosa si risolve facilmente impacchettando quello cheserve nell’elaboratore di origine e dando a questo archivio tutti i permessi necessari.

347.6 Utenti e gruppi

Quando si utilizza un sistema operativo minimo, avviato attraverso dischetti di emergenza, perrecuperare i dati da uno o più archivi, occorre fare mente locale al problema dell’abbinamentoutenti/gruppi, UID/GID.

Trattandosi di un sistema minimo, conterrà alcuni nomi di utenti e di gruppi, presumibilmentenon «umani», ma comunque esistenti. Solitamente, questi nomi di utenti e di gruppi sono stan-dardizzati, tuttavia il loro abbinamento con numeri UID/GID non è sempre uniforme. A questopunto, se si recuperano i dati di un sistema in cui questi nomi non corrispondono esattamente,si rischia di riprodurre una copia differente, che non sarà valida quando il sistema normale saràripristinato.

Se non ci sono alternative, si può accettare l’inconveniente, riavviare il sistema rigenerato eripetere il recupero. In questo modo, i file verranno sovrascritti e le proprietà saranno abbinate inbase ai nuovi file‘ /etc/passwd ’ e ‘ /etc/group ’ .

In generale, proprio per questo problema, sarebbe opportuno che il dischetto di emergen-za contenesse esclusivamente l’indicazione dell’utente e del gruppo‘ root ’ , eliminandoqualunque altro tipo di utente di sistema.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 189: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 348

nanoLinux IIIn questo capitolo si intende descrivere in che modo si può preparare un sistema GNU/Linux diemergenza attraverso un esempio allegato a questa documentazione.

In questo periodo le unità di memorizzazione a disco, di medie o alte capacità, diventano semprepiù accessibili e presto potrebbero addirittura sostituire completamente i nastri. In questa si-tuazione, un piccolo sistema GNU/Linux potrebbe risiedere all’interno di dischi, insieme a dellecopie di sicurezza, di modo che, con l’aiuto di un semplice dischetto di avvio, si possa ripristinarefacilmente un sistema danneggiato.

A parte le considerazioni legate a una buona strategia per la sicurezza del proprio sistema, unpiccolo sistema GNU/Linux può essere un buon banco di scuola per apprendere il funzionamentodi componenti che altrimenti sfuggono nell’intrico di file di cui un sistema normale è composto.

Le condizioni alle quali è sottoposto l’utilizzo dinanoLinux II sono riportate nell’introduzione.

nanoLinux II contiene una vecchia edizione diSecure Shell, con una licenza particolare,benché gratuita.

nanoLinux II è un lavoro ormai obsoleto, ma può essere ancora utile in situazioni di emergenza.

348.1 Lavoro di cesello

Il modo più semplice per arrivare a una mini configurazione è quello di preparare una piccolapartizione, installarvi GNU/Linux selezionando il minimo numero possibile di pacchetti, cancel-lando tutto quello che sembra inutile per i propri scopi. Naturalmente, non si può fare tutto inuna volta, bisogna andare per tentativi: a un certo punto si potrebbe scoprire semplicemente chequesto sistema non si avvia più.

Quanto più la distribuzione GNU/Linux che si utilizza è sofisticata, attenta alla sicurezza egradevole da utilizzare, tanto più difficile sarà questa operazione.

Se il risultato finale è di dimensioni ragionevolmente piccole (la dimensione critica potrebbeessere intorno agli 8 Mibyte), si può decidere di preparare un file-immagine. Quindi, con un po’di fortuna, se comprimendolo si riesce a stare al di sotto della dimensione fatidica di 1440 Kibyte,si può realizzare il proprio dischetto di emergenza, altrimenti occorre lasciare fuori una parte chenon pregiudichi l’avvio, caricandola durante la fase di inizializzazione del sistema.

348.1.1 Scegliere la fonte

Un mini sistema GNU/Linux necessita di pochi attributi: semplicità e funzionalità. La sicurezzanon conta, o almeno non dovrebbe. Quando si sceglie la fonte di GNU/Linux da «cannibalizzare»per arrivare a una propria miniconfigurazione, non contano le misure di sicurezza che potrebberoinvece servire a complicare le cose ulteriormente.

Per questo è il caso di rivolgersi alla distribuzioneSlackware: la più semplice e spartana, siaper il modo in cui sono realizzati i pacchetti che per la semplicità nella struttura degliscriptdellaprocedura di inizializzazione del sistema (‘ /etc/rc.d/ * ’). Vale la pena di ricordare cheper installare un pacchettoSlackware qualunque basta decomprimere i pacchetti con‘ tar ’ edeseguire loscript ‘ /install/doinst.sh ’ .

3923

Page 190: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3924 nanoLinux II

348.1.2 Installare e cancellare il superfluo

Dopo aver installato il minimo indispensabile, si procede con la cancellazione di ciò che non è as-solutamente necessario, come per esempio la documentazione. Il vero problema sono le librerie:bisogna conservare fino all’ultimo quelle contenute in‘ /lib/ * ’ ; solo dopo che è stato decisoquale insieme di programmi si vuole mantenere si potranno eliminare le librerie superflue.

Ci sono due librerie essenziali:

• ‘ /lib/ld.so ’ , la libreria dinamica per i binari compilati in formatoa.out;

• ‘ /lib/ld-linux.so ’ , la libreria dinamica per i binari compilati in formatoELF.

Se si utilizza solo uno dei due formati di programmi binari, basta la libreria dinamica relativa.

Il nome effettivo di queste librerie è formato spesso dall’aggiunta dei numeri di versione. Quindi,‘ ld.so ’ potrebbe essere in realtà‘ ld.so.1.7.14 ’ , o qualunque altra cosa. Per fare in modo chenon ci siano problemi a raggiungere le librerie, occorre abbinare deicollegamenti (di solito sonocollegamenti simbolici) in modo da mantenere i riferimenti ai nomi normali.

Per conoscere di quali altre librerie si può avere bisogno, basta utilizzare il programma‘ ldd ’ .Per esempio:

$ ldd /bin/gzip [ Invio ]

libc.so.5 => /lib/libc.so.5.4.38 (0x40002000)

Quando si interviene con i file di libreria, specialmente nel caso in cui questi vengano spo-stati o aggiunti, è necessario rigenerare il file‘ /etc/ld.so.cache ’ , attraverso il programma‘ ldconfig ’ .

Se si sta tentando di preparare un sistema su un disco che non sia ilfile system principale at-tuale, il file ‘ ld.so.cache ’ potrebbe trovarsi ovunque, per esempio in‘ /mnt/prove/etc/

ld.so.cache ’ . In una situazione del genere, si può utilizzare l’opzione‘ -r ’ , come mostratonell’esempio seguente:

# ldconfig -r /mnt/prove

348.1.3 Revisione della procedura di inizializzazione del sistema

Vale la pena di analizzare e modificare anche l’insieme discript che compongono laproceduradi inizializzazione del sistema, quelli che solitamente si trovano sotto‘ /etc/rc.d/ ’ . Da lorodipende l’avvio e l’arresto corretto del sistema. L’attivazione di tutti i demoni superflui puòessere eliminata.

Se l’obiettivo finale è quello di realizzare un dischetto da caricare comedisco RAM, non èpossibile fare il controllo della partizione o del disco contenente ilfile system principale.

Page 191: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

nanoLinux II 3925

348.1.4 Preparazione di un file-immagine

Quando si pensa di avere raggiunto un risultato accettabile, se le dimensioni sono ragionevoli,si può preparare un file da utilizzare come immagine di un disco ipotetico. Si pone subito ilproblema della scelta del formato:Ext2 o Minix? Probabilmente il sistema appena sintetizzatoavrà un numero molto elevato di file a causa dei dispositivi elencati all’interno di‘ /dev/ ’ . Senon si eliminano quelli superflui, un’immagineMinix potrebbe non permettere l’inserimento diun numero di file così elevato. Nel caso del tipoExt2 occorre specificare una dimensione diinodemolto piccola per permettere l’inserimento del massimo numero di voci possibili.

Si inizia con la creazione del file-immagine, per esempio di 4 Mibyte.

# dd if=/dev/zero of=~/miniroot.img bs=1k count=4k

Nell’esempio viene creato il file‘~/miniroot.img ’ , composto da caratteri<NUL>.

Si procede quindi con la creazione di unfile systemExt2.

# mke2fs -v -m 0 -i 1024 ~/miniroot.img

In questo modo si ottiene la creazione delfile system; in particolare non viene riservata alcu-na parte per l’utente‘ root ’ e la dimensione degliinode viene limitata a 1024 byte (il mini-mo possibile). Si ottiene quindi la possibilità di inserire un massimo teorico di 4096 file al suointerno.

Il programma fa notare che non si tratta di un disco, ma basta confermare e l’operazione procedeugualmente. Un controllo può essere utile per verificare la situazione.

# e2fsck ~/miniroot.img

Infine, per potervi inserire il sistema GNU/Linux creato, si deve eseguire ilmontaggiodell’immagine (sempre che ilkernel permetta di farlo).

# mount -o loop -t ext2 ~/miniroot.img /mnt

Nel file-immagine non vanno copiati i file contenuti nella directory‘ /boot/ ’ e tanto meno ilkernel.

348.1.5 Preparazione del dischetto

Con un po’ di fortuna, si riesce a comprimere il file-immagine portandolo a una dimensione cosìpiccola da poter essere contenuto in un dischetto. Prima di farlo, occorre che sia stato smontato.

# umount /mnt

# gzip -9 ~/miniroot.img

Il risultato sarà naturalmente il file‘~/miniroot.img.gz ’ . Se è andato tutto bene, si puòtrasferire in un dischetto.

# dd if=~/miniroot.img.gz of=/dev/fd0

Al termine il dischetto è pronto.

Page 192: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3926 nanoLinux II

348.1.6 Kernel

L’ultima cosa da fare è la preparazione delkernel. Nel capitolo precedente sono state descrittealcune caratteristiche importanti che questo dovrebbe avere. Vale la pena di ricordare che deveessere in grado di gestire idischi RAM, altrimenti non si può avviare un’immagine compressa.Alla fine deve essere preparato nel modo seguente:

1. Viene copiato nel dispositivo del dischetto.

# dd if=zImage of=/dev/fd0

2. Il file system principale si troverà nel dischetto posto nella prima unità (anche se si tratta diun’immagine compressa).

# rdev /dev/fd0 /dev/fd0

3. Il file system principale viene aperto inizialmente in lettura e scrittura: trattandosi di undisco RAM non è possibile fare altrimenti.

# rdev -R /dev/fd0 0

4. L’immagine contenente ilfile system principale si trova in un dischetto separato, nel qualesi colloca a partire dalla posizione iniziale dello stesso: lo scostamento è zero; si vuole chel’immagine delfile system principale sia caricata in undisco RAM; si vuole un preavvisoper sapere quando si può togliere il dischetto delkernel per inserire il dischetto successivo.

215 + 214 + 0 = 49152

# rdev -r /dev/fd0 49152

La dimensione predefinita deldisco RAM è di 4 Mibyte. Se questo non basta, occorre informareil kernel in qualche modo. Se ci si trova in questa situazione, non è più tanto conveniente l’utiliz-zo di unkernel copiato direttamente e configurato attraverso‘ rdev ’ ; piuttosto diventa preferibilela preparazione di un dischetto conLILO che provvede all’avvio delkernel con tutte le opzio-ni necessarie. A questo proposito, si potrebbe usare una configurazione di‘ /etc/lilo.conf ’simile a quanto descritto più avanti in riferimento ananoLinux II.

348.1.7 Ultime considerazioni

Se si è fortunati, la coppia di dischetti è pronta per essere collaudata. Naturalmente, oltre allafortuna occorre avere anche una buona quantità di memoria RAM.

C’è un particolare che è stato trascurato fino ad ora e qualcuno potrebbe porsi il problema. Cosadeve contenere il file‘ /etc/fstab ’ sulla riga che descrive ilfile system principale? Si trattadi un disco RAM e teoricamente vi si dovrebbe fare riferimento utilizzando il file di dispositivo‘ /dev/ram ’ . Se non dovesse funzionare così, si può lasciare il nome del dispositivo del dischetto,benché ciò sia falso.

/dev/fd0 / ext2 defaults 1 1

Page 193: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

nanoLinux II 3927

348.2 Dischi più grandi

Se si hanno a disposizione dischi più grandi, non è necessario indaffararsi così tanto: con l’aiutodel programma di installazione della distribuzione che si ha a disposizione dovrebbe essere facile,relativamente, arrivare a una configurazione inferiore ai 20 Mibyte.

348.3 Provare nanoLinux II

nanoLinux II richiede molta memoria RAM per poter funzionare, almeno 20 Mibyte. Per poterloutilizzare occorrono tre dischetti: uno per contenere ilkernel, un altro per l’immagine compres-sa delfile system principale e l’ultimo per i file aggiuntivi che non potevano essere contenutinell’immagine compressa.

348.3.1 Reperire nanoLinux II

nanoLinux II dovrebbe essere raggiungibile presso lo stessonodo dal quale è stato ottenutoquesto documento, oppure presso uno dei varisiti speculari FTP diAppunti di informatica libera.

Si tratta di tre file: uno contenente l’immagine di un dischetto avviabile con unkernel molto sem-plice, in grado di gestire undisco RAM, una schedaEthernet NE2000 e una connessione PLIP;gli altri due sono il veronanoLinux II, cioè un’immagine compressa delfile system principale,seguita da una serie di file aggiuntivi che non potevano essere contenuti nell’altro dischetto. Inomi dovrebbero essere strutturati nel modo seguente:

1. ‘nLinux-II.boot ’

2. ‘nLinux-II.root1.gz ’

3. ‘nLinux-II.root2.tar.gz ’

I file vanno copiati così come sono nei dischetti, senza decomprimerli.

348.3.2 Preparazione dei dischetti

Si procede nel solito modo trasferendo prima l’immagine di avvio.

# dd if=nLinux-II.boot of=/dev/fd0

Se invece di utilizzare questa immagine si preferisce unkernel realizzato personalmente, sarebbemeglio ricostruire un dischetto simile a quello che accompagnananoLinux II, di tipoExt2, conte-nenteLILO. Infatti, è necessario specificare l’utilizzo di undisco RAM complessivo di 7 Mibyte.In pratica, è necessario il file‘ /etc/lilo.conf ’ seguente:

boot=/dev/fd0#map=/boot/mapinstall=/boot/boot.bprompt#timeout=50#message=/intro.txtimage=/vmlinuz

label=linuxroot=/dev/fd0append="ramdisk_start=0 load_ramdisk=1 prompt_ramdisk=1 ramdisk_size=7168"read-write

Page 194: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3928 nanoLinux II

Quindi si possono preparare gli altri dischetti.

# dd if=nLinux-II.root1.gz of=/dev/fd0

# dd if=nLinux-II.root2.tar.gz of=/dev/fd0

348.3.3 Avvio di nanoLinux II

Per avviarenanoLinux II basta avviare l’elaboratore con il dischetto delkernel. Nel momento incui il kernel presenta la richiesta

VFS: Insert root floppy disk to be loaded into ramdisk and press ENTER

si deve sostituire il dischetto con quello successivo (‘* .root1. * ’ ) e quindi si può premere[ Invio ].

RAMDISK: Compressed image found at block 0

Se l’elaboratore è dotato di memoria sufficiente, l’immagine compressa contenuta nel dischettoviene caricata ed espansa, altrimenti si blocca il sistema.

Inizia quindi la procedura di inizializzazione del sistema e viene richiesto quasi subitol’inserimento dell’ultimo dischetto.

Inserire il secondo dischetto e premere un tasto.

Successivamente viene richiesto di inserire laparola d’ordine per l’utente‘ root ’ . È necessariodefinire taleparola d’ordine, dal momento chenanoLinux II mette in funzione alcuni servizi direte che, nel tempo in cui vengono usati, potrebbero essere sfruttati per attaccare l’elaboratore sucui sono in funzione.

Appare quindi la richiesta di un possibile utilizzo della rete. Conviene rispondereaffermativamente, almeno nella maggior parte dei casi.

"Si vuole utilizzare un collegamento in rete? (s/n)"

s [ Invio ]

Viene quindi richiesta l’indicazione del tipo di interfaccia di rete da utilizzare.

Selezionare l’interfaccia1) eth02) eth13) eth24) plip05) plip16) plip2#?

Supponendo di volere utilizzare una connessione PLIP sulla porta parallela, probabilmente sidovrà utilizzare l’interfaccia‘plip1 ’ .1

5[ Invio ]

Selezionare l’indirizzo.1) 1.nano 4) 4.nano 7) 7.nano2) 2.nano 5) 5.nano 8) 8.nano

1Dipende dalkernel l’assegnazione di questi nomi di interfaccia. Le nuove versioni 2.1.x e successive, potrebberoassegnare alla prima porta parallela l’indirizzo zero e di conseguenza si avrebbe‘ /dev/lp0 ’ o ‘plip0 ’ .

Page 195: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

nanoLinux II 3929

3) 3.nano 6) 6.nano 9) 9.nano#?

nanoLinux II prevede già una rete e degli indirizzi abbinati a dei nomi, in modo da facilitare leoperazioni di connessione con un altro elaboratore avviato con gli stessi dischetti. In questa fase,un indirizzo vale l’altro: viene scelto il primo.

1[ Invio ]

Dal momento che si tratta di una connessione PLIP e quindi punto-punto, è necessario indicarel’indirizzo dell’elaboratore all’altro capo. L’altro elaboratore verrà avviato nello stesso modo,utilizzando la stessa coppia di dischetti, ma facendo riferimento a indirizzi inversi.

Selezionare l’indirizzo dell’altro capo.1) 1.nano 4) 4.nano 7) 7.nano2) 2.nano 5) 5.nano 8) 8.nano3) 3.nano 6) 6.nano 9) 9.nano#?

2[ Invio ]

Al termine si ottiene un riassunto finale.

La configurazione selezionata è la seguente.Interfaccia plip1Indirizzo 1.nanoIndirizzo punto-punto 2.nanoSi intende confermarla? (s/n)

Se va tutto bene si conferma.

s [ Invio ]

La procedura di inizializzazione del sistema prosegue e al termine viene presentata la richiesta diidentificazione per l’accesso.

(none) login:

Si può usare solo l’utente‘ root ’ e laparola d’ordine è quella specificata in precedenza, all’iniziodella procedura di avvio.

root [ Invio ]

348.3.4 NFS

Continuando con lo stesso esempio iniziato nella sezione precedente, supponendo che anchel’elaboratore all’altro capo del cavo sia stato configurato correttamente (2.nano ), le operazioniper il montaggio delfile system di rete sono state semplificate opportunamente.

# mount /mnt/2

Quello appena visto è il modo più semplice per montare tutto ilfile system (a partire dalladi-rectory radice) delnodo2.nano nella directory‘ /mnt/2/ ’ . Sono state previste tutte le direc-tory necessarie, più altre aggiuntive (‘ /mnt/a/ ’ e ‘ /mnt/b/ ’ per i dischetti Dos-VFAT,‘ /mnt/

cdrom/ ’ per il CD-ROM e‘ /mnt/hd*/ ’ per i dischi fissi).

Page 196: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3930 nanoLinux II

348.3.5 SMB

nanoLinux II contiene anche il necessario per collegarsi a unservente SMB (Samba). sotto questoaspetto, se la cosa non scandalizza, potrebbe anche essere utilizzato per ripristinare un elaboratoresu cui si utilizza MS-Windows 95/98, accedendo a un altro elaboratore del genere.

Per eseguire ilmontaggio di una directory condivisa da unservente SMB, si deve utilizzare‘smbmount ’ . Per esempio, se ilservente‘ \\W5\ ’ offre la condivisione di una directory iden-tificata con il nome‘C’ e il suo indirizzo IP è 192.168.100.1, la si può montare nel modoseguente:

# smbmount //W5/C /mnt/extra1 -c micro -I 192.168.100.1

Parte delle opzioni di questo comando potrebbero essere ridondanti, ma conviene avere unesempio completo piuttosto che insufficiente. La directory condivisa viene montata a partire da‘ /mnt/extra1/ ’ ; l’elaboratore locale (quello avviato con il dischetto) verrà identificato conil nome ‘micro ’ ai fini del protocolloNetBIOS; l’elaboratore da raggiungere ha l’indirizzo IP192.168.100.1 (questo deve essere specificato se si deve attraversare unrouter).

Operando come utente‘ root ’ , per smontare ilfile system di rete basta il normale‘umount ’ .

# umount /mnt/extra1

348.3.6 Spegnimento

La conclusione avviene nel modo solito.

# shutdown -h now

348.4 Organizzazione di nanoLinux II

nanoLinux II è il risultato delle operazioni di finitura descritte in precedenza, a partire dai binaridi una distribuzioneSlackware 3.5 e in parte da una distribuzione S.u.S.E. 5.2. Si tratta di unmini sistema di emergenza che comprende anche unservente NFS, unserventeRlogin/Rsh e unserventeSecure Shell, in modo da permettere il trasferimento di dati tra elaboratori connessi inuna piccola rete locale o attraverso un cavo parallelo (PLIP), senza bisogno di unservente giàesistente. Per motivi di comodità di utilizzo, lashell èBash.

Tutto questo occupa unfile systemExt2 di 7 Mibyte, al quale si può accedere decomprimen-do l’immagine del dischetto contenente ilfile system (‘* .root1. * ’) e copiandovi dentro ilcontenuto della seconda immagine (che in pratica è solo un file tar+gzip).

mount -o loop -t ext2 nLinux-II.root1 punto_di_innesto

cd punto_di_innesto ; tar xzvf nLinux-II.root2.tar.gz

348.4.1 Struttura

La struttura di questa specie di dischetto è molto semplice ed è schematizzabile nel modoseguente:

/|-- bin| || ‘ binari di uso generale

Page 197: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

nanoLinux II 3931

||-- dev| || ‘ file di dispositivo||-- etc| || |-- rc.d| | || | |-- init.d| | | || | | ‘ script per il controllo dei servizi| | || | ‘ script di inizializzazione| || ‘ file di configurazione||-- lib| || ‘ file di libreria||-- mnt| || ‘ varie directory di innesto||-- proc||-- root| || ‘ file di configurazione dell’utente root||-- sbin --> bin||-- script| || ‘ script di servizio||-- share| |-- terminfo| | || | ‘ informazioni sui tipi di terminale| || ‘ file condivisi||-- tmp||-- usr| || |-- bin --> ../bin| |-- sbin --> bin| |-- lib --> ../lib| ‘-- share --> ../share|‘-- var

|‘ directory e file amministrativi vari

348.4.2 Procedura di inizializzazione del sistema

La prima cosa da fare per comprendere il funzionamento di un sistema particolare, è l’analisidellaprocedura di inizializzazione del sistema:‘ /etc/inittab ’ e gli script collegati.

• ‘ /etc/inittab ’

Page 198: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3932 nanoLinux II

# Livelli di esecuzione:# 0 Arresto del sistema# 1 Monoutente# 2# 3 Multiutente# 4# 5# 6 Riavvio

# Livello di esecuzione predefinito.id:3:initdefault:

# Inizializzazione del sistema - viene eseguito all’avvio.si::sysinit:/etc/rc.d/rc Sysinit

# Monoutentel1:1:wait:/etc/rc 1

# Multiutente: Servente di retel3:3:wait:/etc/rc.d/rc 3

# [Ctrl+Alt+Canc].ca::ctrlaltdel:/sbin/shutdown -t5 -rfn now

# Il livello di esecuzione 0 ferma il sistema.l0:0:wait:/etc/rc.d/rc 0

# Il livello di esecuzione 6 riavvia il sistema.l6:6:wait:/etc/rc.d/rc 6

# Attivazione della console.c1:3:respawn:/sbin/agetty 38400 tty1 linuxc2:3:respawn:/sbin/agetty 38400 tty2 linuxc3:3:respawn:/sbin/agetty 38400 tty3 linuxc4:3:respawn:/sbin/agetty 38400 tty4 linuxc5:3:respawn:/sbin/agetty 38400 tty5 linuxc6:3:respawn:/sbin/agetty 38400 tty6 linux

Come si può osservare i livelli di esecuzione sono i soliti. Il livello normale è il numero tre,che permette la gestione dei demoni per l’attivazione dei servizi di rete.

Si fa riferimento sempre solo a unoscript: ‘ /etc/rc ’ . A seconda dei casi, viene chiamatocon un argomento differente.

• ‘ /etc/rc.d/rc ’

Il file ‘ /etc/rc.d/rc ’ è organizzato in funzioni, in modo da permettere un’organizzazionestrutturata delloscript. Quello che segue è lo schema che ne riassume il funzionamento.#!/bin/bash

function Sysinit () .../sbin/update &...OperazioniIniziali

function ControlloDisco () ...fsck ......

function OperazioniIniziali () ...

function OperazioniFinali () ...

Page 199: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

nanoLinux II 3933

function Net () ifconfig ...route add ...

function Monoutente () ...

function Multiutente () NetServerOperazioniFinali

function Server () /etc/rc.d/init.d/portmap start/etc/rc.d/init.d/nfs start/etc/rc.d/init.d/inet start...

function Conclusione () .../etc/rc.d/init.d/inet stop/etc/rc.d/init.d/nfs stop/etc/rc.d/init.d/portmap stop...sync...umount ...

function Halt () halt -f

function Reboot () reboot -f

#-----------------------------------------

case $1 inSysinit) Sysinit ;;0) Conclusione ; Halt ;;1) Monoutente ;;3) Multiutente ;;6) Conclusione ; Reboot ;;Server) Server ;;

esac

Lo script inizia alla fine, dopo la dichiarazione di tutte le funzioni. A secondadell’argomento ricevuto, esegue una catena differente di funzioni.

348.4.3 Configurazione della rete

La rete è già stata configurata in modo da facilitare le connessioni volanti tra un piccolo gruppodi elaboratori avviati connanoLinux II. È stata definita una rete secondo gli elementi riportatinella tabella348.1.

Page 200: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3934 nanoLinux II

Tabella 348.1. Configurazione preimpostata della rete all’interno di nanoLinux II.

Elemento Indirizzo IP Nome completo Abbreviazionereteloopback 127.0.0.0 localdomainloopback 127.0.0.1 localhost.localdomain localhostrete esterna 192.168.100.0 nanoelaboratore 1 192.168.100.1 1.nano unoelaboratore 2 192.168.100.2 2.nano dueelaboratore 3 192.168.100.3 3.nano treelaboratore 4 192.168.100.4 4.nano quattroelaboratore 5 192.168.100.5 5.nano cinqueelaboratore 6 192.168.100.6 6.nano seielaboratore 7 192.168.100.7 7.nano setteelaboratore 8 192.168.100.8 8.nano ottoelaboratore 9 192.168.100.9 9.nano nove

• ‘ /etc/host.conf ’

Non si usa alcunservente DNS e quindi la risoluzione dei nomi viene fatta esclusivamenteutilizzando il file ‘ /etc/hosts ’ .order hostsmulti on

• ‘ /etc/networks ’loopback 127.0.0.0nano 192.168.100.0

• ‘ /etc/hosts ’127.0.0.1 localhost localhost.localdomain192.168.100.1 1.nano uno192.168.100.2 2.nano due192.168.100.3 3.nano tre192.168.100.4 4.nano quattro192.168.100.5 5.nano cinque192.168.100.6 6.nano sei192.168.100.7 7.nano sette192.168.100.8 8.nano otto192.168.100.9 9.nano nove

348.4.4 File system

Il file ‘ /etc/fstab ’ è organizzato in modo tale da facilitare ilmontaggio deifile system di retee di dischetti Dos eventuali.

Quindi, per esempio, per montare un dischetto Dos, è sufficiente il comando

# mount /mnt/a

e per montare la directory‘ /mnt/ ’ dell’elaboratore5.nano basta il comando seguente:

# mount /mnt/5

• ‘ /etc/fstab ’#dispositivo mount tipo opzioni dump fsck/dev/ram / ext2 defaults 1 1proc /proc proc ignore1.nano:/mnt /mnt/1 nfs noauto2.nano:/mnt /mnt/2 nfs noauto3.nano:/mnt /mnt/3 nfs noauto

Page 201: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

nanoLinux II 3935

4.nano:/mnt /mnt/4 nfs noauto5.nano:/mnt /mnt/5 nfs noauto6.nano:/mnt /mnt/6 nfs noauto7.nano:/mnt /mnt/7 nfs noauto8.nano:/mnt /mnt/8 nfs noauto9.nano:/mnt /mnt/9 nfs noauto/dev/fd0 /mnt/a vfat noauto/dev/fd1 /mnt/b vfat noauto

• ‘ /etc/exports ’

Il sistema consente l’utilizzo del propriofile system a partire dalla directory‘ /mnt/ ’ , inlettura e scrittura a tutta la rete locale 192.168.100.0 (il dominionano ), specificando ancheche l’utente‘ root ’ può mantenere i suoi privilegi. In aggiunta, è consentito l’accesso inlettura a tutto ilfile system/ *.nano(ro) 192.168.100.*(ro)/mnt *.nano(rw,no_root_squash) 192.168.100.*(rw,no_root_squash)

348.4.5 Shell

La shell utilizzata èBash, in modo da concedere all’utilizzatore un minimo di comodità. Il filedello storico dell’utente‘ root ’ e dell’utente generico sono in realtà diretti a‘ /dev/null ’ inmodo da non utilizzare inutilmente lo spazio prezioso.

• ‘ /etc/profile ’

Attraverso la configurazione dellashell si introducono dei sistemi minimi di protezionecontro gli errori: la cancellazione, lo spostamento e la copia, non possono eliminare filesenza una conferma precisa da parte dell’utente.PATH="/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:\/usr/local/bin:/script:."

TERM=linux

PS1=’\u:\w\$ ’

PS2=’> ’

ignoreeof=10

export PATH TERM PS1 PS2 ignoreeof

umask 022

alias cp=’cp -i’alias rm=’rm -i’alias mv=’mv -i’

348.4.6 Attivazione e disattivazione dei servizi

All’avvio, nanoLinux II attiva ilsupervisore dei servizi di rete, il demone per i servizi RPC (da cuidipende NFS), quelli per il servizio NFS e quello diSecure Shell. L’attivazione e la disattivazionedi questi servizi può essere comandata agevolmente, utilizzando gliscript collocati nella directory‘ /etc/rc.d/init.d/ ’ . È sufficiente utilizzare gli argomenti‘start ’ , ‘stop ’ e ‘ restart ’ perottenere rispettivamente l’avvio, la conclusione e il riavvio dei servizi relativi. Non sono stateprese misure per controllare se un servizio è già attivo o meno.

A titolo di esempio, viene mostrato come disattivare il servizio NFS.

# /etc/rc.d/init.d/nfs stop

Page 202: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3936 nanoLinux II

348.5 Personalizzazione della procedura di inizializzazionedel sistema

La procedura di inizializzazione del sistema (Init) è il primo punto su cui intervenire peruna possibile personalizzazione. Oltre al file‘ /etc/rc.d/rc ’ , vengono anche utilizzati quelliseguenti.

‘ /etc/rc.d/rc.config ’ è unoscript che serve a configurare la rete al volo prima che il sistemasia avviato completamente. Loscript, attraverso una serie di domande, prepara il file‘ /etc/

rc.d/rc.netconfig ’ che viene letto successivamente dallo stesso‘ /etc/rc.d/rc ’ . Lo script‘ /etc/rc.d/rc.config ’ viene avviato all’interno della funzione‘OperazioniIniziali ’ ,mentre‘ /etc/rc.d/rc.netconfig ’ viene letto all’interno della funzione‘Net ’ .

# OperazioniIniziali...#--------------------------------------------------------------# Obbliga l’utente a configurare il sistema.# Se si vuole usare una configurazione fissa nel file# /etc/rc.d/rc.netconfig, si può commentare.#--------------------------------------------------------------/etc/rc.d/rc.config...

# Net...#--------------------------------------------------------------# Carica la configurazione contenuta in /etc/rc.d/rc.netconfig.#--------------------------------------------------------------. /etc/rc.d/rc.netconfig...

Per quanto riguarda la gestione della rete, vanno considerate due parti: la connessione alla retestessa, attraverso l’indicazione degli indirizzi a cui si appartiene, e i servizi che si intendonoconcedere all’esterno.

La funzione ‘Net ’ è quella che si occupa di reperire e configurare gli indirizzi; la funzione‘Server ’ è quella che avvia i servizi concessi all’esterno. L’obiettivo dinanoLinux II è quel-lo di facilitare la connessione tra elaboratori attraverso il protocollo NFS e altri servizi. Quindi,nella funzione‘Server ’ sono avviati per questo scopo vari demoni, attraverso gliscript contenu-ti nella directory‘ /etc/rc.d/init.d ’ , che a loro volta accettano gli argomenti‘start ’ (perl’avvio) e ‘stop ’ (per l’arresto).

348.5.1 Utilizzo in una partizione normale

Se si vuole trasferirenanoLinux II in una partizione, nel file‘ /etc/rc.d/rc ’ occorre togliere,o commentare, il caricamento del contenuto del secondo dischetto diroot, attivando il sistema dicontrollo attraverso‘ fsck ’ . Si interviene nella funzione‘Sysinit ’ .

# Sysinit...#--------------------------------------------------------------# Carica il secondo dischetto.# Per qualche strano motivo, sono necessari due read.#--------------------------------------------------------------#cd /#echo "Inserire il secondo dischetto e premere un tasto."#read#read#tar xzf /dev/fd0 2> /dev/null#--------------------------------------------------------------

Page 203: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

nanoLinux II 3937

# Controlla l’integrità del file system principale.# Commentare in caso di disco RAM!#--------------------------------------------------------------ControlloDisco...

Oltre a questo, si dovrà modificare il file‘ /etc/fstab ’ in modo da indicare correttamente lapartizione utilizzata per ilfile system principale.

Probabilmente occorre aggiungere la directory‘ /boot/ ’ con il suo contenuto opportuno, inmodo da poter utilizzareLILO per l’avvio.

Infine, il file ‘ /etc/lilo.conf ’ andrà adattato opportunamente.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 204: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 349

Dischetti di emergenza delle distribuzioniGNU/Linux e di altre fontiAll’inizio di questa serie di capitoli si è accennato alla distribuzione GNU/LinuxSlackware con-tenente un buon dischetto utilizzabile per emergenza: il file-immagine‘ rescue.gz ’ . Il problemadi quella distribuzione sta piuttosto nella mancanza di un buon dischetto di avvio, organizzato inmodo da poter caricare i moduli necessari per le caratteristiche particolari del proprio sistema.

Molte altre distribuzioni permettono di gestire l’installazione di GNU/Linux in modo agevole,proprio attraverso questo meccanismo del caricamento dei moduli, cosa che potrebbe rendere piùfacile anche la realizzazione di dischetti da usare in caso di emergenza. Purtroppo, solo pochedistribuzioni sono ben organizzate anche dal punto di vista della gestione delle situazioni diemergenza.

349.1 SuSE

La distribuzioneSuSE è nata come un’evoluzione della distribuzioneSlackware, tanto che daessa ha ereditato una struttura dei pacchetti molto simile. Nello stesso modo ha ereditato l’ideadella realizzazione di diversi dischetti di avvio e diversi dischetti contenenti il sistema minimo(la tecnica è diversa dalla distribuzioneSlackware, ma l’idea essenziale è la stessa). I dischetti diavvio sono tutti costruiti a partire dakernel modulari, ma la distinzione è necessaria perché nonsempre tutti i dispositivi funzionano correttamente sotto forma di moduli. Per quanto riguardai dischetti con il sistema, in pratica dovrebbe trattarsi di uno solo, l’immagine‘ rescue ’ , dausare in caso di emergenza, dal momento che l’installazione dovrebbe poter avvenire utilizzandoesclusivamente il primo dischetto di avvio.

Come si può intuire, una volta scelto il dischetto di avvio più adatto, abbinandolo al dischettocon il sistema di emergenza contenuto in‘ rescue ’ , oppure abbinandolo allo stessonanoLinux,si ottiene un mini sistema operativo di emergenza. Il vantaggio di poter utilizzare il dischetto diavvio scegliendolo da questa distribuzione, sta nella sua organizzazione che viene descritta nellesezioni seguenti. Per la precisione, si fa riferimento al file-immagine‘eide01 ’ che dovrebbeaddattarsi alla maggior parte delle configurazioni hardware esistenti.

Le immagini dei dischetti della distribuzioneSuSE possono essere ottenute da uno dei varisitispeculari nella sottodirectory‘SuSE-Linux/ versione/disks/ ’ , dove la versione è rappresentatada un numero (per esempio 6.0). Eventualmente si può provare l’URI<ftp://ftp.suse.com/pub/suse/>.

349.1.1 Preparazione e avvio

Come al solito, trattandosi di dischetti distribuiti in forma di immagine su file, questi dovran-no essere riprodotti su dischetti reali, nel solito modo, utilizzando dischetti già formattati inprecedenza.

# cp eide01 /dev/fd0

# cp rescue /dev/fd0

Una volta inserito il dischetto ottenuto dal file-immagine‘eide01 ’ e riavviato il sistema, vienerichiesto il linguaggio da utilizzare e la tastiera disponibile. Negli esempi vengono mostrati imessaggi in inglese, perché quelli in italiano non sono sempre tradotti perfettamente e possonorisultare ambigui.

3938

Page 205: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Dischetti di emergenza delle distribuzioni GNU/Linux e di altre fonti 3939

Figura 349.1. Scelta del linguaggio per i messaggi e le voci di menù..----------------------------.| Please choose the language |‘----------------------------’

.--------------------.| Deutsch || English || Italiano |‘--------------------’

.--------. .--------.| Ok | | Back |‘--------’ ‘--------’

Il funzionamento del programma che guida all’installazione della distribuzioneSuSE è abba-stanza semplice e intuitivo: i tasti freccia spostano il cursore sulle voci dimenù, il tasto[ Tab]

permette di selezionare uno dei pulsanti grafici, il tasto[ Esc] permette di tornare indietro,[ Invio ]

seleziona la voce corrispondente al pulsante grafico evidenziato.

Figura 349.2. Scelta tra visualizzazione monocromatica o a colori..-------------------------------------.| What kind of display do you use? |‘-------------------------------------’

.-----------------------------.| Color Display ||______Monochrom Display______|‘-----------------------------’

.--------. .--------.| Ok | | Back |‘--------’ ‘--------’

Figura 349.3. Scelta della mappa della tastiera..-------------------------------------.| Please choose a keyboard map. |‘-------------------------------------’

.---------------.| Deutsch || American || Suomi || British || Français || Espanol ||___Italiano____|‘---------------’

.--------. .--------.| Ok | | Back |‘--------’ ‘--------’

Dopo avere selezionato la lingua, il tipo di schermo e la disposizione dei tasti sulla tastiera, sigiunge almenù principale (figura349.4).

Figura 349.4. Menù generale del sistema di installazione SuSE..---------------------------------------.| main menu |‘---------------------------------------’.---------------------------------------.| Settings || System informations || Kernel modules (hardware drivers) || Start installation / system || End / Reboot |‘---------------------------------------’.--------. .--------.| Ok | | Back |‘--------’ ‘--------’

Page 206: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3940 Dischetti di emergenza delle distribuzioni GNU/Linux e di altre fonti

349.1.2 Utilizzo delle voci di menù

L’utilizzo normale di questo dischetto, prevede la selezione dei moduli necessari e quindi l’avviodell’installazione, o del dischetto di emergenza. Vale comunque la pena di dare un’occhiata atutte le voci, nell’ordine in cui sono.

1. ‘Settings ’

La selezione della voce‘Settings ’ permette di modificare le impostazioni iniziali delloschermo e della tastiera. Sotto questo aspetto non c’è niente di importante, almeno per loscopo di utilizzo che ci si prefigge in questo capitolo.

2. ‘System informations ’

La voce‘System informations ’ permette di dare un’occhiata alle informazioni cono-sciute sul sistema, in pratica quanto ilkernel mette a disposizione nelfile system vir-tuale ‘ /proc/ ’ . A questo proposito, è opportuno tenere presente che sono disponibiliinformazioni anche sulle diverse console virtuali.

È importante tenere presente che le informazioni che si ottengono in questo modo,dipendono anche dalla presenza o assenza di determinati moduli.

3. ‘Kernel modules (hardware drivers) ’

Attraverso la voce‘Kernel modules ’ è possibile caricare i moduli di cui si conosce lanecessità. La figura349.5mostra l’elenco delle voci delmenù a cui si accede.

Figura 349.5. Menù per la gestione dei moduli..---------------------------------------.| Load SCSI module || Load CD-ROM module || Load network card module || Load PCMCIA modules || Show loaded modules || Unload modules || Autoload of modules |‘---------------------------------------’

A titolo di esempio si carica il modulo per la connessione PLIP attraverso la porta parallela.Per questo si deve selezionare la voce‘Load network card module ’ .

Si ottiene l’elenco dei moduli disponibili per le interfacce di rete, dal quale si deveselezionare il modulo‘plip ’ .

Figura 349.6. Selezione del modulo per l’interfaccia di rete..----------------------------------------------.| ... || arcnet : ARCnet ||________plip : PLIP (IP via Parallel Port)____|| 3c505 : 3Com 505 || 3c507 : 3Com 507 || 3c515 : 3Com 515 || ... |‘----------------------------------------------’

Dopo avere selezionato un modulo, a seconda del tipo, ne vengono richieste le caratteristi-che. Il capitolo31 tratta l’argomento e riporta la descrizione di alcuni moduli con il tipo diinformazioni che devono essere fornite. Nel caso del modulo‘plip ’ , appare la mascheraillustrata dalla figura349.7che permette l’inserimento dell’indirizzo di I/O e del numerodi IRQ abbinato alla porta parallela che si vuole utilizzare per questo scopo. Viene ancheproposto un esempio che corrisponde alla configurazione comune.

Page 207: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Dischetti di emergenza delle distribuzioni GNU/Linux e di altre fonti 3941

Figura 349.7. Maschera di inserimento delle caratteristiche del dispositivo dautilizzare.

.----------------------------------------------.| Please enter parameters for "plip" || || Example: io=0x378 irq=7 |‘----------------------------------------------’

.----------------------------------------------.| ################################## |‘----------------------------------------------’

Se tutto va bene, cioè se il modulo non entra in conflitto con altri e l’impostazione fornita ècorretta, si ottiene un messaggio di conferma, dopo il quale si può proseguire.

Se si ritiene di avere caricato un modulo errato si può utilizzare la voce‘Unload

modules ’ , mentre se si vuole tentare di caricare i moduli in modo automatico si può an-che usare la voce‘Autoload of modules ’ (anche se ciò non porta solitamente a risultaticorretti).

4. ‘Start installation / system ’

Una volta caricati i moduli necessari, si può scegliere tra l’avvio di un sistema già installatoo di un sistema di emergenza, oltre ad altre operazioni possibili. Si veda la figura349.8.

Figura 349.8. Scelta tra l’avvio dell’installazione, di un sistema già installato o diun sistema di emergenza.

.----------------------------------.| Start installation || Boot installed system || Start rescue system || Start CD-ROM demo |‘----------------------------------’

Questa, finalmente, è la scelta più importante. Infatti, con la voce‘Boot installed

system ’ è possibile indicare una partizione da cui avviare ilfile system principale cheper qualche motivo non si avvia più da solo. Con la voce‘Start rescue system ’ si puòavviare un sistema in un dischetto: l’immagine‘ rescue ’ della stessaSuSE,nanoLinux,oppure anche il file‘ rescue.gz ’ dellaSlackware.

349.1.3 Avvio di un sistema su dischetto

Quando si seleziona la voce‘Start rescue system ’ , è possibile indicare diverse fonti dacui potrebbe essere reperita l’immagine del dischetto da avviare. La possibilità di avviare taleimmagine da una fonte diversa da un dischetto, riguarda solo quanto già predisposto dalla di-stribuzioneSuSE. Nel caso si voglia avviare un dischetto qualunque (purché compatibile con ilkernel) si deve usare solo la voce corrispondente all’uso di un dischetto.

È stato ripetuto più volte che si possono usare anche altri dischetti alternativi a quello ge-nerato dall’immagine‘ rescue ’ della distribuzioneSuSE. Tuttavia occorre tenere presenteche deve trattarsi sempre di immagini compresse: se si tenta di caricare la vecchia imma-gine ‘ rescue.gz ’ della distribuzioneSlackware (quella obsoleta che si trova nella directory‘ rootdsks/obsolete/ ’) dopo averla decompressa (è l’unico mini-sistema in circolazione chepossa essere contenuto in un dischetto da 1440 Kibyte), questa non verrà caricata.

Come ormai dovrebbe essere chiaro, il dischetto che viene avviato in questo modo, diviene in pra-tica undisco RAM. Per poter utilizzare il dischetto di emergenza predisposto dalla distribuzioneSuSE, occorre disporre di almeno 16 Mibyte.

Page 208: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3942 Dischetti di emergenza delle distribuzioni GNU/Linux e di altre fonti

349.2 Dischetti realizzati per scopi specifici

Vale la pena di annotare l’esistenza di progetti specifici per la realizzazione di dischetti di emer-genza particolari, anche se spesso si tratta di lavori conclusi che non verranno aggiornati infuturo.

• Small Linux

<http://sourceforge.net/projects/smallinux/>

Consente di avviare un sistema minimo utilizzando meno di 4 Mibyte di memoria RAM,montando ilfile system principale dal dischetto, senza caricarlo in undisco RAM.

• LOAF: Linux on a floppy

<http://www.ecks.org/projects/loaf/>

Consente di avviare un sistema minimo disponendo almeno di 4 Mibyte di memoria RAM,a partire da un solo dischetto, contenentekernel efile system principale. Ilfile system vienecaricarlo in undisco RAM.

Lo scopo di questi dischetti è di consentire l’avvio di un elaboratore che possa accedere allarete, per esempio attraversoTelnet.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 209: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Parte lxxii

Laboratorio didattico350 Accorgimenti per usare GNU/Linux nella didattica di massa . . . . . . . . . . . . . . . . . . . . .3944

350.1 Utente speciale per uno scopo speciale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3944

350.2 Spegnimento da parte di utenti comuni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3944

350.3 Autorizzare chiunque ad aggiungersi come nuovo utente . . . . . . . . . . . . . . . . . .3946

350.4 Sincronizzazione di file di configurazione senza NIS . . . . . . . . . . . . . . . . . . . . .3948

351 Diskless: elaboratori senza disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3951

351.1 Principio di funzionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3951

351.2 Preparazione del cliente GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3951

351.3 Preparazione del servente GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3954

351.4 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3961

3943

Page 210: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 350

Accorgimenti per usare GNU/Linux nella didat-tica di massaLa gestione di un laboratorio munito di elaboratori in una scuola media è problematica, a causadi diversi fattori: l’età degli studenti; il poco tempo a disposizione degli insegnanti; la necessitàdi svolgere una gran mole di esercitazioni specifiche.

GNU/Linux è un sistema operativo sofisticato e sotto questo aspetto non è adatto a un ambientedel genere. In questo capitolo si raccolgono delle idee su possibili soluzioni ai problemi tipici diun tale laboratorio.

350.1 Utente speciale per uno scopo speciale

Quando si vuole permettere agli utenti comuni di compiere attività che altrimenti sarebbero esclu-sivamente di competenza dell’utente‘ root ’ , si può utilizzare‘sudo ’ , oppure si può creare unutente apposito nell’elenco del file‘ /etc/passwd ’ , al quale, invece di associare unashell, siassocia il programma o loscript che si vuole fare eseguire.

CIAO::0:0:Esempio generico:/:/etc/script/.CIAO

L’esempio mostra una riga del file‘ /etc/passwd ’ in cui viene definito l’utente‘CIAO’ , senzaparola d’ordine, con lo stesso UID e GID dell’utente‘ root ’ , avendo di conseguenza gli stessiprivilegi, al quale viene però associata la directory‘ / ’ (per motivi di sicurezza è meglio evitarel’uso di ‘ /tmp/ ’), dove al posto di unashell si abbina loscript ‘ /etc/script/.CIAO ’ .

In questo modo, accedendo con il nominativo‘CIAO’ , si esegue loscript‘ /etc/script/.CIAO ’ .Al termine dell’esecuzione delloscript, la sessione di lavoro come utente‘CIAO’ termina.

Il meccanismo rende il sistema molto poco sicuro, ma ha il vantaggio di essere un modo sempliceper l’esecuzione di alcuni comandi che sono normalmente di competenza dell’utente‘ root ’ .

È importante che la dichiarazione del vero utente‘ root ’ sia precedente a quella di questi fintiutenti ‘ root ’ .

Per fare in modo che gli eventuali sistemi di sicurezza abbandonino ogni resistenza, è probabileche si debba includere l’ipotetico programma‘ /etc/script/.CIAO ’ nel file ‘ /etc/shells ’ .Inoltre, dovrebbe essere evidente che in una situazione del genere non sia sensata l’attivazionedelle password shadow (si veda anche quanto scritto a proposito del file‘ /etc/login.defs ’nel capitolo dedicato proprio allepassword shadow).

Se si intende utilizzare questo tipo di utente attraverso un programma per l’accesso remoto(‘ rlogin ’ , ‘ rsh ’ , ‘ telnet ’ o ‘ rexec ’) è necessario che il file‘ /etc/securetty ’ contengal’indicazione dei terminali da cui questo pseudo utente‘ root ’ può accedere.

350.2 Spegnimento da parte di utenti comuni

Generalmente, un utente comune non è autorizzato a utilizzare‘shutdown ’ o equivalenti, perchiudere l’attività di GNU/Linux. Però, in certi casi, può essere utile che ciò sia possibile. Ilmodo più semplice di permettere agli utenti comuni di avviarlo, è attribuirgli il permesso SUID,come nell’esempio seguente:

# chmod u+s /sbin/shutdown

3944

Page 211: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Accorgimenti per usare GNU/Linux nella didattica di massa 3945

Eventualmente si può completare la cosa creando uncollegamento nella directory‘ /bin/ ’ inmodo che sia accessibile facilmente agli utenti comuni, senza bisogno di indicarne il percorso.

# ln -s /sbin/shutdown /bin/shutdown

Viene mostrata anche una tecnica diversa che si basa sul trucco dell’utente speciale descrittasopra. Questo modo può sembrare più laborioso e inutile; in realtà ci sono dei vantaggi, in parti-colare la possibilità di controllo sull’operazione stessa. Come è già stato mostrato nella sezioneprecedente, si aggiunge l’utente‘SPEGNIMI’ nel file ‘ /etc/passwd ’ :

SPEGNIMI::0:0:Spegnimento dell’elaboratore:/:/etc/script/.SPEGNIMI

Quindi, lo script ‘ /etc/script/.SPEGNIMI ’ potrebbe essere preparato in modo da poterabilitare o disabilitare la possibilità di eseguire laprocedura di arresto del sistema.

#!/bin/bash#======================================================================# .SPEGNIMI#======================================================================

#------------------------------------------------------------------# Verifica la presenza del file SPEGNIMI.OK#------------------------------------------------------------------if [ -f /etc/script/data/SPEGNIMI.OK ]then

#--------------------------------------------------------------# Il file esiste e si può spegnere.# Esegue lo shutdown con un’attesa di 10 secondi.#--------------------------------------------------------------sleep 10s/sbin/shutdown -h now

else#--------------------------------------------------------------# L’operazione di spegnimento non è consentita.#--------------------------------------------------------------echo "L’operazione richiesta di spegnimento non è consentita!"

fi

Lo script deve essere accessibile in tutti i modi solo all’utente‘ root ’ e in nessun modo agli altriutenti (07008).

L’esecuzione di‘shutdown ’ dipende quindi dalla presenza del file‘ /etc/script/data/

SPEGNIMI.OK’ . In questo modo è possibile regolare semplicemente l’accessibilità a questafunzione di spegnimento.

Per utilizzare in pratica questo sistema, si può agire attraverso un accesso locale o remoto. Attra-verso un accesso normale è possibile spegnere il sistema: basta utilizzare l’utente‘SPEGNIMI’ ,per il quale non è richiesta alcunaparola d’ordine.

Attraverso‘ rlogin ’ è possibile attivare una connessione con lo stesso elaboratore su cui si staoperando, ottenendone lo spegnimento. L’esempio seguente utilizza‘hostname ’ per determinareil nome dell’elaboratore: è importante che questo restituisca un nome corretto.

rlogin -l SPEGNIMI ‘hostname‘

Nello stesso modo si può spegnere un elaboratore attraverso la rete da un’altra posizione.

rlogin -l SPEGNIMI indirizzo_da_spegnere

Per rendere più facile il meccanismo, si può creare unoscript ulteriore con lo stesso nomedell’utente fittizio‘SPEGNIMI’ .

#!/bin/sh#======================================================================# SPEGNIMI

Page 212: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3946 Accorgimenti per usare GNU/Linux nella didattica di massa

#======================================================================

rlogin -l SPEGNIMI ‘hostname‘

In tal modo si utilizza lo stesso termine, sia in presenza di una richiesta di accesso, sia duranteuna sessione di lavoro normale.

Per avviare laprocedura di arresto del sistema su un gruppo di elaboratori in un colpo solo, sipuò creare unoscript che esegue una serie di‘ rlogin ’ su tutti gli elaboratori interessati.

#!/bin/sh#======================================================================# SPEGNITUTTI#======================================================================

rlogin -l SPEGNIMI host01.brot.dg &rlogin -l SPEGNIMI host02.brot.dg &rlogin -l SPEGNIMI host03.brot.dg &rlogin -l SPEGNIMI host04.brot.dg &rlogin -l SPEGNIMI host05.brot.dg &#...

In alternativa, se per qualunque motivo si ha difficoltà a utilizzare‘ rlogin ’ o ‘ rsh ’ come sivorrebbe, si può utilizzareSecure Shell (capitolo202), configurandola in modo che utilizzi unaforma di autenticazione che non richieda l’inserimento di unaparola d’ordine. Loscript potrebbeessere modificato nel modo seguente:

#!/bin/sh#======================================================================# SPEGNITUTTI#======================================================================

ssh -l SPEGNIMI host01.brot.dg &ssh -l SPEGNIMI host02.brot.dg &ssh -l SPEGNIMI host03.brot.dg &ssh -l SPEGNIMI host04.brot.dg &ssh -l SPEGNIMI host05.brot.dg &#...

350.3 Autorizzare chiunque ad aggiungersi come nuovoutente

Normalmente, non è sensato concedere a chiunque di registrarsi da solo all’interno di un sistema,ma su un elaboratore destinato alla didattica, in un ambiente in cui non si vuole utilizzare il NIS,questo potrebbe essere più che giustificato. Con la tecnica già vista nella sezione, si aggiungel’utente ‘AGGIUNGI’ .

AGGIUNGI::0:0:Aggiunta nuovo utente:/:/etc/script/.AGGIUNGI

Lo script ‘ /etc/script/.AGGIUNGI ’ potrebbe essere preparato in modo da poter abilitare odisabilitare la possibilità di eseguire il programma‘adduser ’ .

Il programma‘adduser ’ non è necessariamente presente con questo nome e con lo stes-so comportamento in tutte le distribuzioni GNU/Linux. In questi esempi si suppone che‘adduser ’ accetti un solo argomento: il nome dell’utente da aggiungere.

#! /bin/bash#======================================================================# .AGGIUNGI#======================================================================

Page 213: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Accorgimenti per usare GNU/Linux nella didattica di massa 3947

#======================================================================# Inizio.#======================================================================

#------------------------------------------------------------------# Verifica la presenza del file AGGIUNGI.OK#------------------------------------------------------------------if [ -f /etc/script/data/AGGIUNGI.OK ]then

#--------------------------------------------------------------# Il file esiste e si può aggiungere l’utente.# Si inizia ottenendo il nome da utilizzare.#--------------------------------------------------------------echo "Inserisci il nome dell’utente."echo "Si possono utilizzare al massimo otto caratteri."read#--------------------------------------------------------------# Controlla la risposta data dall’utente.#--------------------------------------------------------------if [ $ #REPLY = 0 ]then

#----------------------------------------------------------# La risposta è nulla, così si interrompe l’inserimento.#----------------------------------------------------------exit

fi#--------------------------------------------------------------# Finalmente viene creato l’utente.#--------------------------------------------------------------NUOVO_UTENTE=$REPLY/usr/sbin/adduser $NUOVO_UTENTE#--------------------------------------------------------------# Viene definita la password.#--------------------------------------------------------------while [ 0 ] # FOREVERdo

if /usr/bin/passwd $NUOVO_UTENTEthen

#------------------------------------------------------# La password è stata inserita correttamente.#------------------------------------------------------break

else#------------------------------------------------------# Meglio ripetere l’operazione.#------------------------------------------------------continue

fidone

else#--------------------------------------------------------------# L’operazione non è consentita.#--------------------------------------------------------------echo "L’operazione richiesta non è consentita!"

fi#======================================================================

Lo script deve essere accessibile in tutti i modi solo all’utente‘ root ’ e in nessun modo agli altriutenti (07008).

L’esecuzione di‘adduser ’ dipende quindi dalla presenza del file‘ /etc/script/data/

AGGIUNGI.OK’ . In questo modo è possibile regolare semplicemente l’accessibilità a questafunzione.

Per utilizzare in pratica questo sistema, basta identificarsi come l’utente‘AGGIUNGI’ in fase diaccesso.

Page 214: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3948 Accorgimenti per usare GNU/Linux nella didattica di massa

350.4 Sincronizzazione di file di configurazione senza NIS

Un laboratorio potrebbe essere organizzato in modo da centralizzare ledirectory personali deglistudenti in un solofile system di rete (di solito NFS), allo scopo di consentire a ogni studentedi utilizzare qualunque elaboratore. In generale, per ottenere questo risultato c’è bisogno di cen-tralizzare anche il sistema di autenticazione, normalmente attraverso un servizio NIS. Tuttavia,questa ultima necessità può diventare eccessivamente onerosa per l’amministratore.

Di per sé, l’uso di unfile system di rete e del NIS, mette tutto il sistema in una condizione diestrema debolezza rispetto alla possibilità di un’aggressione esterna. Pertanto, si vuole proporrequi un metodo alternativo al NIS, altrettanto debole, ma più semplice da realizzare.

Figura 350.1. Schema semplificato di una rete per un laboratorio, in cui si condividonole directory personali degli utenti, ma non si usa il NIS.

.------. .------. .------. .------. .------. .------.| nodo | | nodo | | nodo | | nodo | | nodo | | nodo | B‘------’ ‘------’ ‘------’ ‘------’ ‘------’ ‘------’

| | | | | |- -*-----------*-----------*-----*-----*-----------*-----------*---- - - -rete locale del laboratorio |

|.--------------------------.| Elaboratore contenente i || servizi e le directory | A| personali che i nodi || normali condividono. |‘--------------------------’

Osservando la figura350.1, l’elaboratore «A» deve consentire l’accesso alla directory‘ /home/ ’ ,attraverso il protocollo NFS, mentre gli elaboratori «B» montano ilfile system di rete nella stessadirectory, che per loro sarebbe vuota.

A questo punto, l’aggiunta di un utente dovrebbe passare per l’elaboratore «A», attraverso laprocedura normale, cosa che comporta la modifica dei file‘ /etc/passwd ’ e ‘ /etc/group ’(salvo l’uso dellepassword shadow, che in questo caso non hanno una ragione valida per esse-re utilizzate), inoltre, genera ledirectory personali che normalmente si collocano al di sotto di‘ /home/ ’ .

Quando gli elaboratori «B» montano la directory‘ /home/ ’ , si trovano di fronte alla stessa situa-zione dell’elaboratore «A», per cui, per consentire l’accesso agli studenti da questi nodi, baste-rebbe ricopiare i file‘ /etc/passwd ’ e ‘ /etc/group ’ . Per farlo in modo automatico, si potrebbeusareRsync (capitolo171), predisposto in modo da non dover digitare manualmente delleparoled’ordine, ogni volta che si aggiorna un nodo di tipo «B».

Per usareRsync in modo autonomo, senza l’ausilio di alcunashell remota, bisogna configuraretutti i nodi «B» nel modo elencato di seguito.

1. È necessario verificare che il file‘ /etc/services ’ contempli il servizio RSYNC,contenendo le righe seguenti:rsync 873/tcp # rsyncrsync 873/udp # rsync

2. È necessario aggiornare il file‘ /etc/inetd.conf ’ , in modo da avviare‘ rsync ’ comedemone, quando viene interpellata la porta del servizio corrispondente:rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon

Naturalmente occorre riavviare ilsupervisore dei servizi di rete (‘ inetd ’), in modo chevenga acquisita la modifica fatta in questo file di configurazione.

Page 215: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Accorgimenti per usare GNU/Linux nella didattica di massa 3949

3. Si deve preparare il file di configurazione diRsync, per il suo utilizzo in qualità di demone.Il file in questione dovrebbe essere‘ /etc/rsyncd.conf ’ , ma in caso di dubbio, si puòusare l’opzione‘ --config ’ (in questo caso, la riga è spezzata in due per motivi tipografici):rsync stream tcp nowait root /usr/bin/rsync ←→rsyncd --daemon --file=/etc/rsyncd.conf

Il file in questione deve contenere la dichiarazione di un modulo adatto per questo scopo:[utenze]

uid = rootgid = rootpath = /etcread only = falseauth users = rootstrict modes = falsesecrets file = /etc/rsyncd.secretscomment = Esportazione delle utenze attraverso Rsync

4. Nel file di configurazione si vede la dichiarazione di un file di «segreti», che in pratica con-tiene leparole d’ordine in chiaro degli utenti che possono utilizzare tale servizio. In questocaso, si tratta esclusivamente dell’utente‘ root ’ , per cui il file ‘ /etc/rsyncd.secrets ’potrebbe contenere la riga seguente:root:supersegretissimo

La parola d’ordine è in chiaro, per cui sarebbe bene che il file fosse accessibile esclu-sivamente all’amministratore, utilizzando dei permessi 06008. In particolare, nella con-figurazione è stata specificata la direttiva‘strict modes = false ’ in modo da evi-tare che il demoneRsync possa opporsi all’accesso nel caso i permessi non sia-no esattamente così. Eventualmente, se si preferisce si può abilitare questo controllo:‘strict modes = true ’ .

A questo punto, dal lato dei nodi «B» è tutto pronto; basta solo preparare unoscript opportunonell’elaboratore «A», per automatizzare l’operazione:

#! /bin/sh

RSYNC_PASSWORD=supersegretissimoexport RSYNC_PASSWORD

rsync -zv /etc/passwd [email protected]::utenzersync -zv /etc/group [email protected]::utenze

rsync -zv /etc/passwd [email protected]::utenzersync -zv /etc/group [email protected]::utenze

rsync -zv /etc/passwd [email protected]::utenzersync -zv /etc/group [email protected]::utenze

#...

Evidentemente si suppone che i vari nodi «B» abbiano gli indirizzi IP 192.168.1.1*. Na-turalmente, se è disponibile il servizio DNS si potevano usare dei nomi al posto degliindirizzi.

Dal momento che questo tipo di approccio non è esente da incidenti, prima di organizzare unsistema di sincronizzazione occorre essere sempre sicuri di disporre di dischetti di emergenzacon cui poter avviare gli elaboratori «B», nel caso i file‘ /etc/passwd ’ e ‘ /etc/group ’dovessero risultare danneggiati in qualche modo. Pertanto, tali dischetti di emergenza devonodisporre di un sistema autonomo, in quanto non basterebbe unkernel che monta ilfile systemprincipale che contiene gli stessi file danneggiati.

Page 216: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3950 Accorgimenti per usare GNU/Linux nella didattica di massa

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 217: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 351

Diskless: elaboratori senza discoUna caratteristica importante del sistema di condivisione deifile system attraverso la rete, l’NFS,è quella che permette l’utilizzo di macchine senza disco:diskless.

Nel passaggio da una macchina autonoma a una senza disco, ci sono varie fasi intermedie, incui si possono sfruttare più o meno intensivamente le risorse NFS di altriserventi. La macchinasenza disco, perché non ha fisicamente il disco fisso, oppure perché non lo adopera per conteneredati o programmi, ha comunque un certo fascino, che si avverte particolarmente quando si deveallestire un certo numero di macchine uniformi e amministrate in modo centralizzato.

A differenza del terminale remoto che utilizza‘ telnet ’ o un programma di comunicazione sulinea seriale o dedicata, la macchina senza disco ha il vantaggio di poter utilizzare la grafica conil sistema X. In questo senso, una macchina senza disco è normalmente ben dotata dal punto divista del processore e della memoria centrale.

351.1 Principio di funzionamento

L’idea alla base della macchina senza disco è molto semplice:

1. viene caricato ilkernel in qualche modo, con tutte le informazioni necessarie ad accederealla rete e alservente NFS;

2. viene eseguito ilmontaggio delfile system principale (dalla rete) in lettura e scrittura;

3. viene eseguita laprocedura di inizializzazione del sistema (Init).

Il vero problema di tutto questo è il primo punto, ovvero l’avvio delkernel con le informazioninecessarie, specialmente quelle sull’indirizzo IP dell’interfaccia di rete utilizzata.

Volendo predisporre unavera macchina senza disco, sarebbe necessario realizzare, o procurarsi,una ROM speciale da applicare alla scheda di rete. Questa, con il software contenuto al suointerno, attraverso vari protocolli, dovrebbe permettere alla scheda di rete di ottenere il proprioindirizzo IP e subito dopo di ricevere ilkernel da avviare.

A meno di avere il sostegno di persone qualificate, in grado di predisporre una macchina senzadisco a tutti gli effetti, ci si accontenta solitamente di preparare un dischetto con unkernel adatto,assieme a tutte le informazioni necessarie sulla rete locale e ilservente NFS da raggiungere.Questa è la soluzione che viene presa in considerazione nel capitolo.

351.2 Preparazione del cliente GNU/Linux

La preparazione delcliente cioè del dischetto necessario ad avviare l’elaboratore senza discofisso, è la parte più semplice, pertanto viene mostrata per prima.

351.2.1 Kernel

Prima di tutto, occorre preparare unkernel adatto alla stazione senza disco che si vuole utiliz-zare. Di sicuro, occorre attivare la gestione della rete (sezione29.2.9), la gestione necessariaper l’interfaccia di rete che si utilizza (sezione29.2.12) e la gestione relativa all’NFS, indican-do eventualmente la necessità dimontare ilfile system principale attraverso il protocollo NFS(29.2.9).

3951

Page 218: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3952 Diskless: elaboratori senza disco

Naturalmente, tali funzionalità devono essere incluse come elementi delkernel monolitico,perché non disponendo di un disco locare sarebbe complicato caricare dei moduli.Date le difficoltà che comporta la preparazione di un sistema senza disco è il caso di consi-gliare l’utilizzo di soli kernel monolitici, anche per i dispositivi che potrebbero essere caricatiin un secondo momento.

La stazione senza disco potrebbe, nonostante il nome, dover accedere anche a unità a disco locali,come un dischetto o un lettore CD-ROM. Nel momento in cui si predispone unkernel per talescopo, è bene tenere presente anche queste esigenze.

351.2.2 Parametri di avvio

All’avvio, il kernel deve ottenere alcuni parametri che gli permettano di configurare l’interfacciadi rete, di definire l’instradamento e di montare ilfile system principale attraverso il protocolloNFS.

root=/dev/nfs

Si tratta di un messaggio con cui si informa ilkernel di voler utilizzare comefile system principaleciò che viene fornito attraverso il protocollo NFS. Il dispositivo‘ /dev/nfs ’ non esiste in realtà.

nfsroot= [ ip_del_servente: ] directory_radice[ , opzione_nfs[ , ...]]

Serve a definire le informazioni necessarie almontaggio della directory delservente che verràutilizzata come radice delfile system. L’indirizzo IP delservente è facoltativo, perché vieneindicato nuovamente nel parametro‘nfsaddrs ’ .

Le opzioni_NFSsono facoltative e, in ogni caso, si tratta delle stesse opzioni utilizzabili in con-dizioni normali con ifile system NFS (il modello sintattico viene spezzato in due per mancanzadi spazio).

nfsaddrs= [ ip_del_cliente] : [ ip_del_servente] : [ ip_del_router] : [ maschera_di_rete] : ←→[ nome_dell’host] : [ dispositivo_di_rete] : [ auto_configurazione]

Il parametro‘nfsaddrs ’ permette di definire tutte le informazioni necessarie a stabilire il col-legamento nella rete. Tutte le informazioni possono essere determinate in modo predefinito, manon tutte contemporaneamente. Come si potrà intuire: le informazioni sugli indirizzi delclientee delservente possono essere ottenute automaticamente in base ai protocolli RARP o BOOTP;l’indirizzo di un router non è necessario nel caso tutto si svolga in una rete locale; lamascheradi rete può essere determinata automaticamente in base alla classe di indirizzi utilizzati; il nomedel nodo potrebbe corrispondere allo stesso numero IP attribuitogli; infine l’interfaccia di retepotrebbe essere semplicemente la prima a essere individuata.

Almeno le prime volte, non è una buona idea lasciare che i valori vengano determinatiautomaticamente.

L’ultima opzione, permette di definire il metodo di configurazione automatica. Si possono utiliz-zare le parole chiave‘ rarp ’ o ‘bootp ’ per indicare che si vuole sia utilizzato il protocollo RARPoppure BOOTP, rispettivamente. In alternativa si può indicare la parola chiave‘both ’ per faresì che vengano gestiti entrambi, oppure‘none ’ per non utilizzarne alcuno. Se non viene indicatonulla nell’ultimo campo, si intende che non si deve utilizzare alcun protocollo.

Se non viene utilizzato alcun protocollo per la configurazione automatica, è chiaro che occorrespecificare necessariamente gli indirizzi IP delcliente e delservente.

Page 219: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Diskless: elaboratori senza disco 3953

351.2.3 Un esempio

Prima di proseguire con la descrizione di ciò che serve per predisporre uncliente senza di-sco, conviene introdurre una situazione di esempio, che poi verrà utilizzata nelle spiegazionisuccessive.

Si suppone di disporre di unservente nella stessa rete locale in cui si vuole collocare ilclien-te. In tal caso, pur non essendo necessario, viene indicato ugualmente unrouter che in praticacorrisponde allo stesso indirizzo delservente. La tabella351.1mostra questa situazione.

Tabella 351.1. Configurazione di esempio.

Elemento Valoreservente 192.168.1.1cliente 192.168.1.7router 192.168.1.1maschera di rete 255.255.255.0nome delcliente diskless7interfaccia di rete eth0directory remota /tftpboot/192.168.1.7

In questa situazione, i parametri delkernel dovranno essere quelli indicati qui di seguito.

root=/dev/nfsnfsroot=192.168.1.1:/tftpboot/192.168.1.7nfsaddrs=192.168.1.7:192.168.1.1:192.168.1.1:255.255.255.0:diskless7:eth0:

La scelta della directory remota da utilizzare comefile system principale non è casuale; si trattadi una convenzione diffusa:

/tftpboot/ indirizzo_del_cliente/

351.2.4 /dev/boot255

Esistono diversi modi per avviare unkernel. Dovendo fare in modo che ilkernel si avvii mon-tando ilfile system principale dalla rete, si utilizza il parametro‘ root=/dev/nfs ’ , dove‘ /dev/

nfs ’ non esiste in realtà.

Quando si utilizzaLILO, ma anche in altre situazioni, è necessario fare riferimento a un disposi-tivo esistente realmente, almeno nel momento in cui si «installa» il sistema di avvio. Per questosi deve creare il dispositivo denominato‘ /dev/boot255 ’ , con numero primario zero e numerosecondario 255.

# mknod /dev/boot255 c 0 255

351.2.5 Avvio del kernel dal dischetto

L’avvio del kernel da un dischetto è un problema che è stato già descritto a sufficienza in questodocumento, in particolare nel capitolo16. Qui si intende solo riepilogare in che modo configurarei vari sistemi di avvio.

• Se si intende avviare ilkernel copiandolo in un dischetto senzafile system, utilizzandoquindi ‘dd ’ (o anche‘cp ’), non è possibile fornire alcun parametro, tranne l’indicazione deldispositivo attraverso il programma‘ rdev ’ . In pratica, se il dischetto immagine delkernelsi trova nella prima unità, si utilizza il comando seguente:

Page 220: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3954 Diskless: elaboratori senza disco

# rdev /dev/fd0 /dev/boot255

Tutte le altre informazioni, devono provenire dal protocollo RARP o BOOTP. Pertanto,questo tipo di avvio non è consigliabile in generale.

• Se si realizza un dischetto contenente ilkernel, avviato attraversoLILO, si possono dare iparametri necessari attraverso la configurazione del file‘ /etc/lilo.conf ’ . Segue il pez-zo significativo, relativo all’esempio proposto in precedenza (la direttiva‘append ’ apparespezzata su più righe per motivi tipografici, ma dovrebbe occupare una riga sola).image=/vmlinuz

label=disklessroot=/dev/boot255append="root=/dev/nfs ←

→nfsroot=192.168.1.1:/tftpboot/192.168.1.7 ←→nfsaddrs=192.168.1.7:192.168.1.1:192.168.1.1:255.255.255.0:diskless7:eth0:"

• SYSLINUX si configura in modo simile aLILO, con la differenza che basta collocare i filenecessari nel dischetto, senza creare collegamenti tra loro. In questo senso è particolarmentecomodo e decisamente preferibile quando si deve avviare unkernel da dischetto. Segue unpezzo della configurazione del file‘SYSLINUX.CFG’ (anche in questo caso, la direttiva‘APPEND’ appare spezzata su più righe per motivi tipografici, ma dovrebbe occupare unariga sola).LABEL diskless

KERNEL LINUXAPPEND "root=/dev/nfs ←

→nfsroot=192.168.1.1:/tftpboot/192.168.1.7 ←→nfsaddrs=192.168.1.7:192.168.1.1:192.168.1.1:255.255.255.0:diskless7:eth0:"

Si osservi il fatto che qui non viene utilizzato il dispositivo‘ /dev/boot255 ’ .

• Loadlin richiede la preparazione di un dischetto con un sistema Dos minimo, dal qualepoter avviare (di solito attraverso il file‘AUTOEXEC.BAT’) il programma‘LOADLIN.EXE’ .Segue l’esempio di questo comando, separato su più righe per motivi tipografici.LOADLIN vmlinuz root=/dev/nfs nfsroot=192.168.1.1:/tftpboot/192.168.1.7 ←→nfsaddrs=192.168.1.7:192.168.1.1:192.168.1.1:255.255.255.0:diskless7:eth0:

351.3 Preparazione del servente GNU/Linux

Il servente richiede una preparazione più complessa e delicata, da studiare prima a tavolino infunzione delle cose che si vogliono fare con le macchine senza disco. Il problema, a questo pro-posito, risiede nel fatto che ogni distribuzione GNU/Linux ha una sua impostazione, dove sonoproprio queste diversità che richiedono lo sforzo maggiore nello studio necessario ad arrivare aunservente per questo scopo.

Ogni distribuzione GNU/Linux dovrebbe fornire gli strumenti necessari ad automatizzare lacreazione e la gestione delservente; in realtà solo poche fanno tanto.

In queste sezioni si fa riferimento a unservente realizzato su una distribuzioneRed Hat, ma senzaporre un accento eccessivo sulle particolarità di questa distribuzione.

351.3.1 Pianificare gli obiettivi da raggiungere

È importante decidere prima quali sono le attività per le quali verranno utilizzate le stazioni senzadisco e quindi quali programmi verranno utilizzati. Ciò servirà per stabilire quali componentidevono essere predisposti nella gerarchia utilizzata comedirectory radice NFS.

È bene chiarire in mente che iclienti dovrebbero avere una configurazione uniforme e che suquelle stazioni non ci dovrebbero essere utenti‘ root ’ , a parte l’amministratore delservente.

Page 221: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Diskless: elaboratori senza disco 3955

Se non fosse così, i vantaggi nell’utilizzo di macchine senza disco sarebbero troppo pochi pergiustificare lo sforzo necessario a predisporle.

Se si intende utilizzare il sistema grafico X, anche l’uniformità delle schede video sarebbeauspicabile.

Le password shadow non dovrebbero essere utilizzate.

Come ultima considerazione, iclienti non dovrebbero offrire servizi di rete.

351.3.2 Directory radice NFS

La cosa più delicata da organizzare è ladirectory radice deiclienti senza disco. Queste directory,per tradizione (e per stare fuori dai guai), vanno collocate a partire da‘ /tftpboot/ indirizzo/ ’ .Per fare un esempio, ilcliente individuato dall’indirizzo IP 192.168.1.7, dovrebbe trovare la suadirectory radice a partire dalla directory‘ /tftpboot/192.168.1.7/ ’ del servente.

Generalmente se ne prepara una per uncliente particolare; una volta verificato che tutto funzionacome si vuole, si preparano le altre utilizzando deicollegamenti fisici. Se tutto va bene, non cisarà bisogno di modificare la configurazione riferita a uncliente particolare, rispetto agli altri.

La directory radice NFS di ognicliente deve contenere il necessario a permettere l’avvio delcliente stesso, lasciando che il resto venga montato durante la fase di inizializzazione del sistema.In pratica, sono necessarie le directory‘bin/ ’ , ‘dev/ ’ , ‘etc/ ’ , ‘home/ ’ , ‘ lib/ ’ , ‘mnt/ ’ , ‘opt/ ’ ,‘proc/ ’ , ‘ root/ ’ , ‘sbin/ ’ , ‘ tmp/ ’ , ‘usr/ ’ e ‘var/ ’ . Alcune di queste vanno copiate, così comesono le directory corrispondenti delfile system principale delservente, altre servono vuote, altrevanno copiate solo parzialmente.

Nella spiegazione seguente si fa l’esempio della predisposizione delladirectory radice NFS peril cliente 192.168.1.7; tutte le directory degli altriclienti verranno ottenute attraverso l’uso dicollegamenti fisici, a partire dall’esempio di partenza.

Si inizia creando la directory‘ /tftpboot/ ’ e quindi la directory ‘ /tftpboot/

192.168.1.7/ ’ .

# mkdir /tftpboot

# mkdir /tftpboot/192.168.1.7

Si prosegue copiando alcune directory così come sono nelservente (è meglio non farecollegamenti ai file utilizzati dal sistema delservente) e creando altre directory vuote.

# cp -dpRv /bin /tftpboot/192.168.1.7

# cp -dpRv /dev /tftpboot/192.168.1.7

# cp -dpRv /etc /tftpboot/192.168.1.7

# mkdir /tftpboot/192.168.1.7/home

# cp -dpRv /lib /tftpboot/192.168.1.7

# mkdir /tftpboot/192.168.1.7/mnt

# mkdir /tftpboot/192.168.1.7/opt

# mkdir /tftpboot/192.168.1.7/proc

Page 222: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3956 Diskless: elaboratori senza disco

# mkdir /tftpboot/192.168.1.7/root

# cp -dpRv /sbin /tftpboot/192.168.1.7

# mkdir /tftpboot/192.168.1.7/tmp

# chmod 1777 /tftpboot/192.168.1.7/tmp

# mkdir /tftpboot/192.168.1.7/usr

# cp -dpRv /var /tftpboot/192.168.1.7

A questo punto si rifinisce un po’.

• Nella directory‘ lib/ ’ si potrebbero eliminare i moduli, se si è deciso che ikernel deiclienti non ne faranno uso.

• Nella directory ‘etc/ ’ si potrebbero eliminare tutti i file e le sottodirectory riferite aprogrammi, inclusi i demoni, che non verranno utilizzati.

• Nella directory‘etc/ ’ , i file ‘passwd ’ e ‘group ’ potrebbero essere deicollegamenti fisiciai file corrispondenti della directory‘ /etc/ ’ del servente.1

• Nella directory‘var/ ’ bisognerebbe eliminare tutto quello che non serve, lasciando comun-que, almeno le directory vuote dove necessario. In particolare vanno eliminati tutti ifile dilock, i file delle registrazioni e tutti i file amministrativi dei programmi che non riguardanoi clienti. Altri file vanno lasciati, ma per ognuno di questi occorre conoscerne il motivo.Per fare un esempio, il file‘var/lib/dosemu/hdimage ’ serve per avviareDOSEMU epotrebbe essere condiviso tranquillamente tra tutti iclienti.

Anche le directory riferite alle stampanti costituiscono un problema. Se la stampa è neces-saria, è il caso di predisporre le directory e i file necessari per una stampante di rete, inmodo da poter poi condividere tra tutti iclienti la stessa configurazione.

Dopo quanto descritto sulla directory‘var/ ’ , potrebbe essere utile proporre una struttura diesempio, come guida per la scelta su cosa sia da eliminare o meno.

var|-- cache/|-- catman/| |-- X11/| | |-- cat1/| | |-- cat2/| | ...| |-- cat1/| |-- cat2/| ...| ‘-- local/| |-- cat1/| |-- cat2/| ...|-- dhcpd/|-- lib/| ‘-- texmf/| |-- fonts/

1Questa soluzione non è «sicura», ma dovrebbe servire per centralizzare la gestione degli utenti senza la presenzadi un sistema NIS. Tuttavia, potrebbe essere inutile, dal momento che programmi come‘useradd ’ rinominano i file‘passwd ’ e ‘group ’ e poi ne generano sempre di nuovi: in questo caso conviene fare unoscript per ricopiare questi filenelle directory relative ai sistemi senza disco ogni volta che si fa una modifica.

Page 223: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Diskless: elaboratori senza disco 3957

| ‘-- texfonts/|-- local/|-- lock/| ‘-- subsys/|-- log/| |-- cron/| |-- dmesg/| |-- maillog/| |-- messages/| |-- secure/| ‘-- spooler/|-- nis/|-- preserve/|-- run/| ‘-- netreport/|-- spool| |-- at/| | ‘-- spool/| |-- cron/| |-- lpd/| | |-- lp/| | | || | ... ... (dipende se si vuole gestire la stampa)| |-- mail/| |-- mqueue/| ‘-- rwho/‘-- tmp -> /tmp

Come si può osservare nell’esempio, si è scelto di fare in modo che‘var/tmp ’ sia uncollega-mento simbolico alla directory‘ tmp/ ’ , per non perdere il controllo sulla proliferazione dei filetemporanei.

351.3.3 Directory radice NFS da usare come base di partenza

È stato indicato che basta predisporre unadirectory radice per uncliente senza disco e poi le altreper gli altri clienti possono essere ottenuti a partire da quella, con una serie dicollegamenti fisici.Questo è vero in parte. Quando si utilizza anche una sola volta ilcliente di esempio, vengonocreati una serie di file amministrativi, temporanei, nella directory‘var/ ’ (e nelle sue sottodirec-tory). Questi file vengono cancellati quando non servono più, o sostituiti, ma questo non avvieneregolarmente alla conclusione dell’attività, ma solo quando serve. Questi file non possono esserecondivisi tra i variclienti e quindi non se ne può fare ilcollegamento.

Ecco quindi che diviene necessario predisporre unadirectory radice NFS standard che non verràutilizzata direttamente da alcuncliente e che servirà per generare le altre.

La directory standard va preparata congiuntamente a quella del primocliente utilizzato comeprova del buon funzionamento delladirectory radice NFS. Quando si cambia qualcosa nelladirectory delcliente, lo si deve fare anche in quella standard, se questa modifica non si riflettegià automaticamente per effetto di eventualicollegamenti fisici.

Per avere un riferimento con gli esempi, stabiliamo che ladirectory radice NFS standard sia‘ /tftpboot/standard/ ’ .

351.3.4 Procedura di inizializzazione del sistema

Il problema più grosso da risolvere è laprocedura di inizializzazione del sistema. A partire dalfile ‘etc/inittab ’ è necessario analizzare tutto quello che succede nella propria distribuzioneGNU/Linux e intervenire in modo da permettere l’avvio deiclienti senza disco.

Page 224: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3958 Diskless: elaboratori senza disco

Prima di farlo, si deve fare mente locale alla situazione che si ha di fronte: ilkernel deiclientiprovvede da solo a definire l’indirizzo dell’interfaccia di rete e a instradarsi verso ilservente;inoltre monta da solo ilfile system principale attraverso il protocollo NFS. Quindi, laproceduradi inizializzazione del sistema non ha alcuna necessità, né la possibilità di eseguire un controllodel file system principale e nemmeno di altri dischi; inoltre non deve configurare la rete, che ègià configurata.

A questo si può aggiungere il fatto che sarebbe meglio eliminare la gestione dei moduli delkernel, in modo da avere un problema in meno a cui badare.

Nel caso della distribuzioneRed Hat, si può modificare il file‘etc/rc.d/rc.sysinit ’ nelmodo seguente:

#! /bin/sh

# Set the pathPATH=/bin:/sbin:/usr/bin:/usr/sbinexport PATH

# Clear mtab>/etc/mtab

mount -av

if grep -i nopnp /proc/cmdline >/dev/null ; thenPNP=

elsePNP=yes

fi

# set up pnpif [ -x /sbin/isapnp -a -f /etc/isapnp.conf ]; then

if [ -n "$PNP" ]; thenecho "Setting up ISA PNP devices"/sbin/isapnp /etc/isapnp.conf

elseecho "Skipping ISA PNP configuration at users request"

fifi

# Clean out /etc.rm -f /etc/mtab~ /fastboot /fsckoptions>/var/run/utmp

# Delete UUCP lock files.rm -f /var/lock/LCK*

# Delete stale subsystem files.rm -f /var/lock/subsys/*

# Delete stale pid filesrm -f /var/run/*.pid

# Delete X locksrm -f /tmp/.X*-lock

# Set the system clock.echo -n "Setting clock"

ARC=0UTC=0if [ -f /etc/sysconfig/clock ]; then

. /etc/sysconfig/clock

# convert old style clock config to new values

Page 225: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Diskless: elaboratori senza disco 3959

if [ "$ CLOCKMODE" = "GMT" ]; thenUTC=true

elif [ "$ CLOCKMODE" = "ARC" ]; thenARC=true

fifi

if [ -x /sbin/hwclock ]; thenCLOCKFLAGS="--hctosys"CLOCK=/sbin/hwclock

elseCLOCKFLAGS="-a"CLOCK=/sbin/clock

fi

if [ $UTC = "true" ]; thenCLOCKFLAGS="$CLOCKFLAGS -u";echo -n " (utc)"

fiif [ $ARC = "true" ]; then

CLOCKFLAGS="$CLOCKFLAGS -A";echo -n " (arc)"

fiecho -n ": "$CLOCK $CLOCKFLAGS

date

# Initialize the serial ports.if [ -f /etc/rc.d/rc.serial ]; then

. /etc/rc.d/rc.serialfi

# Now that we have all of our basic modules loaded and the kernel going,# let’s dump the syslog ring somewhere so we can find it laterdmesg > /var/log/dmesg

# Feed entropy into the entropy pool/etc/rc.d/init.d/random start

La cosa più importante da osservare in questo esempio è il fatto che ilmontaggio deifile systemelencati nel file‘etc/fstab ’ viene fatto quasi subito; tutta la gestione del controllo dei dischi,l’attivazione della memoria virtuale e dei moduli delkernel sono stati eliminati.

Eventualmente, è anche possibile l’attivazione della memoria virtuale utilizzando per questo ildisco fisso deiclienti senza disco, ammesso che ce ne sia uno nella realtà, cosa che comunqueappare un po’ come un controsenso: che motivo ci sarebbe di montare ilfile system principaledalla rete, se si dispone di un disco fisso, per quanto piccolo possa essere.

Dal momento che la gestione della rete non è più compito dellaprocedura di inizializ-zazione del sistema, nel caso della distribuzioneRed Hat è opportuno eliminare i file‘etc/sysconfig/network ’ , ‘etc/sysconfig/static-routes ’ e tutta la directory‘etc/

sysconfig/network-scripts/ ’ .

351.3.5 Servizi e demoni

Un’altra cosa a cui fare attenzione, sono i demoni avviati neiclienti. Bisogna ridurli al minimoindispensabile, anche in considerazione del fatto che è improbabile l’attivazione di servizi su deiclienti senza disco.

Page 226: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3960 Diskless: elaboratori senza disco

351.3.6 Configurazione di etc/fstab

Il file ‘etc/fstab ’ utilizzato daiclienti senza disco va predisposto in modo da montare ciòche manca dopo ilfile system principale di tipo NFS. Si tratta delle directory‘proc/ ’ , ‘usr/ ’ ,‘opt/ ’ e ‘home/ ’ ; la prima in modo predefinito, la seconda e la terza in sola lettura, mentre laquarta anche in scrittura. Se si vogliono utilizzare dischetti e CD-ROM neiclienti, sarà il caso dipredisporre ipunti di innesto rispettivi. L’esempio seguente dovrebbe essere chiaro a sufficienza,tenendo conto che si riferisce alnodo identificato dall’indirizzo IP 192.168.1.7.

192.168.1.1:/tftpboot/192.168.1.7 / nfs defaults 0 0none /proc proc defaults 0 0192.168.1.1:/usr /usr nfs ro 0 0192.168.1.1:/opt /opt nfs ro 0 0192.168.1.1:/home /home nfs defaults 0 0/dev/fd0 /mnt/floppy ext2 user,noauto 0 0/dev/fd0 /mnt/a vfat user,noauto 0 0/dev/cdrom /mnt/cdrom iso9660 user,noauto,ro 0 0

Si può intendere quindi che anche la directory‘mnt/ ’ deve essere organizzata opportunamente.

L’indicazione esplicita delfile system principale va fatta per permettere la chiusura correttadel funzionamento quando si avvia laprocedura di arresto del sistema. Infatti, ilfile systemprincipale è già montato quando il sistema legge questo file all’avvio.

351.3.7 Esportazione del file system nel servente

Perché la gestione degli elaboratoriclienti senza disco possa funzionare, occorre evidentementeche il servente consenta l’accesso al propriofile system attraverso il protocollo NFS. Si tratta, inpratica, di configurare correttamente il file‘ /etc/exports ’ e quindi di riavviare i demoni chene permettono l’uso.

Seguendo gli esempi già visti, il modo più corretto per configurare tale file dovrebbe essere ilseguente:

/tftpboot 192.168.1.0/255.255.255.0(rw,no_root_squash)#/usr 192.168.1.0/255.255.255.0(ro,squash_uids=0-100,squash_gids=1-80)/opt 192.168.1.0/255.255.255.0(ro,squash_uids=0-100,squash_gids=1-80)/home 192.168.1.0/255.255.255.0(rw,no_root_squash)#/lib 192.168.1.0/255.255.255.0(ro,squash_uids=0-100,squash_gids=1-80)/bin 192.168.1.0/255.255.255.0(ro,squash_uids=0-100,squash_gids=1-80)/sbin 192.168.1.0/255.255.255.0(ro,squash_uids=0-100,squash_gids=1-80)/etc 192.168.1.0/255.255.255.0(ro,squash_uids=0-100,squash_gids=1-80)/mnt 192.168.1.0/255.255.255.0(ro,squash_uids=0-100,squash_gids=1-80)/var 192.168.1.0/255.255.255.0(ro,squash_uids=0-100,squash_gids=1-80)

Dagli esempi mostrati in questo capitolo, è indispensabile la condivisione delle sole directory‘ /tftpboot/ ’ , ‘ /usr/ ’ , ‘ /opt/ ’ e ‘ /home/ ’ . Tuttavia, le altre directory indicate potrebberoessere utili, ed è meglio prevederne subito la condivisione.

Purtroppo, i demoni che gestiscono il servizio NFS potrebbero non essere in grado di interpretarecorrettamente la sintassi dell’esempio mostrato, per quanto questa sia corretta. Se si notano diffi-coltà, si può rimediare accontentandosi della configurazione seguente, dove il dominiobrot.dgcorrisponde a quello utilizzato nella rete 192.168.1.0/255.255.255.0.

/tftpboot *.brot.dg(rw,no_root_squash)#/usr *.brot.dg(ro)

Page 227: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Diskless: elaboratori senza disco 3961

/opt *.brot.dg(ro)/home *.brot.dg(rw,no_root_squash)#/lib *.brot.dg(ro)/bin *.brot.dg(ro)/sbin *.brot.dg(ro)/etc *.brot.dg(ro)/mnt *.brot.dg(ro)/var *.brot.dg(ro)

351.3.8 Attivazione di un nuovo cliente

Per attivare un nuovocliente basta riprodurre ladirectory radice NFS standard, creando so-lo collegamenti fisici, come nell’esempio seguente, in cui si suppone di aggiungere ilcliente192.168.1.77.

# cp -ldpR /tftpboot/standard /tftpboot/192.168.1.77

In questo modo vengono copiate le directory, mentre i file vengono riprodotti comecollegamenti.

351.3.9 Memoria virtuale

In questo capitolo è stato ignorato volutamente il problema della memoria virtuale. Per attivarela sua gestione, le macchine usate comecliente dovrebbero avere un disco fisso e in tal sensodovrebbe essere modificata laprocedura di inizializzazione del sistema.

351.4 Riferimenti

• Gero Kuhlmann,Mounting the root filesystem via NFS (nfsroot)

<file:///usr/src/linux/Documentation/nfsroot.txt>

• Stefano Salvi,AngoLinux, Realizzazione di un Laboratorio Diskless

<http://www.itis.mn.it/linux/>

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 228: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3962 Diskless: elaboratori senza disco

Page 229: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Parte lxxiii

Informatica gestionale352 Codici a barre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3964

352.1 Codice di controllo «modulon» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3964

352.2 UPC-E e UPC-A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3965

352.3 EAN-8 e EAN-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3965

352.4 Code 39 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3971

352.5 Code 128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3972

352.6 ITF, ovvero i25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3976

352.7 Sistemi bidimensionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3977

352.8 Riferimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3977

353 Barcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3979

353.1 Utilizzo del programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3979

353.2 Codifica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3980

354 Trasformazione in lettere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3982

354.1 Da numero a sequenza alfabetica pura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3982

354.2 Da numero a numero romano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3983

354.3 Da numero a lettere, nel senso verbale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3986

3963

Page 230: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 352

Codici a barreI codici a barre sono dati memorizzati in forma ottica, attraverso l’uso di barre verticali chepossono essere lette e interpretate facilmente con strumenti non troppo complessi. La tecnica deicodici a barre nasce negli anni 1960 e si diffonde negli anni 1970, con lo scopo di identificarerapidamente imballaggi e merci.

Gli standard sui codici a barre sono molti e il problema più importante da risolvere quandosi vogliono usare è il decidere quale sia quello più conveniente per i propri fini. Si parla disimbologiaper fare riferimento al tipo di codice a barre, ovvero allo standard di rappresentazionedei dati; la simbologia definisce implicitamente il tipo di dati che possono essere memorizzati.Per fare un esempio abbastanza comune, i codici ISBN dei libri sono scritti usando codici abarre di tipoEAN-13, che si compongono di 13 cifre numeriche; in questo caso, la simbologia èEAN-13, con la quale si vanno a rappresentare in pratica i codici ISBN.

Le rappresentazioni normali di un codice a barre sono a una sola dimensione, ovvero, è previstauna lettura orizzontale unica. Nella lettura vengono attraversate barre verticali nere e spazi bian-chi; queste barre di larghezze differenti e gli spazi di ampiezze diverse sono gli elementi dellasimbologia; ogni simbologia usa un proprio numero di elementi differenti. Nel capitolo vengonodescritte brevemente alcune simbologie standard.

352.1 Codice di controllo «modulo n»

Alcuni tipi di codici numerici utilizzano unnumero di controllo (ocodice di controllo) per per-mettere una verifica facile dell’integrità del dato rappresentato. Esiste un genere comune di al-goritmi per il calcolo di talinumeri di controllo, a cui si fa spesso riferimento con la definizionemodulo n, doven è un numero intero maggiore di uno.

In questo modo si fa riferimento a una somma di valori, ottenuta moltiplicando ogni cifra delnumero di partenza, compreso ilnumero di controllo, per un certopeso(un altro numero interopositivo), che deve essere un multiplo del numeron stabilito. Si osservi l’esempio seguente, incui il numero di controllo finale è calcolato con i pesi dati, dividendo per il modulo 5:

Valore 1 3 5 7 4Peso 5 4 3 2 1Peso*Valore 5 12 15 14 4

5 + 12 + 15 + 14 + 4 = 50

50 è divisibile perfettamente per cinque, senza lasciare resti, garantendo l’integrità del valore.

In pratica, il peso che si dà al valore da usare comenumero di controllo è solitamente uno, percui diventa facile il calcolo di questa cifra:

5 + 12 + 15 + 14 = 46;46 / 5 = 9, con il resto di 1;5 - 1 = 4, ovvero il valore cercato comenumero di controllo.

3964

Page 231: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Codici a barre 3965

352.2 UPC-E e UPC-A

UPC è un insieme di simbologie standard utilizzato in particolare negli Stati Uniti e nel Canada.ConUPC-E eUPC-A si possono rappresentare solo cifre numeriche:UPC-A consente di rappre-sentare 11 cifre più una di controllo;UPC-E consente di rappresentare sei cifre, senzacodice dicontrollo (il controllo di integrità avviene in forma differente).

La figura352.1mostra rispettivamente l’esempio di 123456 conUPC-E e di 12345678901 conUPC-A.

Figura 352.1. Esempi di codici a barre con simbologia UPC-E e UPC-A.

Gli elementi utilizzati nella simbologiaUPC sono otto, composti da quattro tipi di barre nere equattro tipi di spazi.

Il codice di controllo diUPC-A si calcola moltiplicando in modo alterno le cifre che compongonoil numero, per tre, o per uno, sommando alla fine i risultati. Ciò che si ottiene si divide per 10 esi tiene il resto; infine, 10 meno il resto ottenuto dà ilcodice di controllo cercato (modulo 10).Per esempio, nel caso di 12345678901 si ottiene ilcodice di controllo due, in base al calcoloseguente:

Valore 1 2 3 4 5 6 7 8 9 0 1Peso 3 1 3 1 3 1 3 1 3 1 3Peso*Valore 3 2 9 4 15 6 21 8 27 0 3

Il totale che si ottiene è 98; pertanto: 98/10 = 9 con un resto di 8; 10- 8 = 2.

352.3 EAN-8 e EAN-13

EAN (European article number) è un insieme di simbologie standard di origine europea,utilizzato anche in altri paesi, nato come estensione delle simbologieUPC.

EAN-8 e EAN-13 permettono di rappresentare solo cifre numeriche:EAN-8 consente di rap-presentare sette cifre più una di controllo, mentreEAN-13 consente di rappresentare 12 cifrenumeriche più una di controllo.

La figura352.2mostra rispettivamente l’esempio di 1234567 conEAN-8 e di 123456789012conEAN-13.

Figura 352.2. Esempi di codici a barre con simbologia EAN-8 e EAN-13.

Il codice di controllo diEAN-8 e diEAN-13 si calcola nello stesso modo diUPC-A. Per esem-pio, nel caso di 1234567 (EAN-8) si ottiene il codice di controllo zero, mentre nel caso di123456789012 (EAN-13) si ottiene otto.

Page 232: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3966 Codici a barre

Valore 1 2 3 4 5 6 7Peso 3 1 3 1 3 1 3Peso*Valore 3 2 9 4 15 6 21

Il totale che si ottiene è 60; pertanto: 60/10 = 6 con un resto di 0; 10- 0 = 10, da cui si prendesolo l’ultima cifra (lo zero).

Valore 1 2 3 4 5 6 7 8 9 0 1 2Peso 1 3 1 3 1 3 1 3 1 3 1 3Peso*Valore 1 6 3 12 5 18 7 24 9 0 1 6

Il totale che si ottiene è 92; pertanto: 92/10 = 9 con un resto di 2; 10- 2 = 8.

La rappresentazione di ogni cifra numerica può avere tre forme differenti, a cui si attribuisceconvenzionalmente una lettera alfabetica maiuscola: A, B e C. Nella simbologiaEAN-8, le primequattro cifre sono rappresentate secondo la forma A, mentre le ultime quattro secondo la forma C.Invece, la rappresentazione delle cifre nella simbologiaEAN-13 è più complessa, per l’esigenzadi essere compatibile conUPC-A.

ConEAN-13 si rappresentano effettivamente solo le ultime 12 cifre (incluso ilcodice di control-lo), mentre la prima viene determinata in base al modo in cui vengono rappresentate le sei cifresuccessive. In pratica, a seconda del valore della prima cifra, si determina la combinazione delleforme A e B, per le sei cifre che seguono la prima, mentre le ultime sei sono rappresentate con laforma C.

Valore iniziale0 A A A A A A1 A A B A B B2 A A B B A B3 A A B B B A4 A B A A B B5 A B B A A B6 A B B B A A7 A B A B A B8 A B A B B A9 A B B A B A

Dallo specchietto si può notare che con una prima cifra pari a zero, le sei cifre successive sirappresentano secondo la forma A, esattamente come avviene nella simbologiaUPC-A. In pra-tica, a parte qualche differenza estetica minima, un codice a barre realizzato con la simbologiaEAN-13 è uguale a un altro realizzato con la simbologiaUPC-A, quando la prima cifra è pari azero, tenendo conto che lo zero iniziale non può cambiare nulla anche nel calcolo delcodice dicontrollo finale.

352.3.1 Codici UCC ed EAN

In generale, la simbologiaEAN-13 viene utilizzata per identificare degli «articoli», intesi prin-cipalmente come prodotti in vendita. Per poter applicare un codice a barre del genere occorrenaturalmente avere ottenuto il numero per uno scopo preciso;1 tuttavia esiste un prefisso inizialeche fa parte dello standard e serve a stabilire l’origine del codice. l’origine è un concetto rife-rito precisamente a chi ha rilasciato il numero, che nella maggior parte dei casi si riferisce aun’organizzazione con competenza nazionale.

1L’ente italiano competente per l’attribuzione dei codici EAN èIndicod.

Page 233: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Codici a barre 3967

Questo prefisso iniziale dipende principalmente da due organizzazioni: UCC (Uniform codecouncil) ed EAN (European article number). La prima organizzazione, definisce codici in cuila prima cifra identifica l’origine nell’area nell’ambito di Stati Uniti e Canada, mentre la secondacopre tutto il mondo, includendo la codifica UCC a cui si aggiunge la cifra iniziale zero.

Le tabelle352.6352.7mostrano in pratica un elenco abbastanza completo dei prefissi EAN, chesolitamente si applicano ai codici a barre con simbologiaEAN-13. Si può osservare che ormaii codici assegnati all’area Stati Uniti e Canada non ha più solo lo zero iniziale; resta comun-que l’abbinamento tra codice UCC e codice EAN, per cui il primo si trasforma nel secondoaggiungendo uno zero iniziale.

Tabella 352.6. Attribuzione dei prefissi secondo la codifica EAN. Prima parte.

Prefisso Contesto ISO 3166 Prefisso Contesto ISO 316600-13 USA, Canada US, CA 14-192 uso interno 30-37 Francia FR380 Bulgaria BG 383 Slovenia SI384 385 Croazia HR386 387 Bosnia Erzegovina BA388-389 400-440 Germania DE45 Giappone JP 460-469 Federazione russa RU470 471 Taiwan TW472-473 474 Estonia EE475 Lettonia LV 476 Azerbaijan AZ477 Lituania LT 478 Uzbekistan UZ479 Sri Lanka LK 480 Filippine PH481 Belarus BY 482 Ucraina UA483 484 Moldavia MD485 Armenia AM 486 Georgia GE487 Kazakistan KZ 488489 Hong Kong HK 49 Giappone JP50 Gran Bretagna UK 51520 Grecia GR 521-527528 Libano LB 529 Cipro CY530 531 Macedonia MK532-534 535 Malta MT536-538 539 Irlanda IE54 Belgio, Lussemburgo BE, LU 55560 Portogallo PT 561-568569 Islanda IS 57 Danimarca DK58 590 Polonia PL591-593 594 Romania RO595-598 599 Ungheria HU600-601 Sud Africa ZA 602-608609 Mauritius MU 610611 Marocco MA 612613 Algeria DZ 614-615616 Kenia KE 617-618619 Tunisia TN 620621 Siria SY 622 Egitto EG623 624 Libia LY625 Giordania JO 626 Iran IR627 Kuwait KW 628 Arabia Saudita SA629 Emirati AE 6364 Finlandia FI 65-68690-693 Cina CN 694-699

Page 234: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3968 Codici a barre

Tabella 352.7. Attribuzione dei prefissi secondo la codifica EAN. Seconda parte.

Prefisso Contesto ISO 3166 Prefisso Contesto ISO 316670 Norwegia NO 710-728729 Israele IL 73 Svezia SE740 Guatemala GT 741 El Salvador SV742 Honduras HN 743 Nicaragua NI744 Costa Rica CR 745 Panama PA746 Repubblica Dominicana DO 747-749750 Messico MX 751-758759 Venezuela VE 76 Svizzera CH770 Colombia CO 771-772773 Uruguay UY 774775 Perù PE 776777 Bolivia BO 778779 Argentina AR 780 Cile CL781-783 784 Paraguay PY785 786 Ecuador EC787-788 789 Brasile BR80-83 Italia IT 84 Spagna ES850 Cuba CU 851-857858 Slovacchia SK 859 Czech CZ860 Jugoslavia YU 861-866867 Nord Korea KP 868869 Turchia TR 87 Olanda NL880 Sud Korea KR 881-884885 Thailandia TH 886-887888 Singapore SG 889890 India IN 891-892893 Vietnam VN 894-898899 Indonesia ID 90-91 Austria AT92 93 Australia AU94 Nuova Zelanda NZ 950-954955 Malaysia MY 956-957958 Macau MO 959-976977 periodici (ISSN) 978-979 libri (ISBN)980 ricevute di rimborso (refund receipts) 981-982 tagliandi di valuta (common currency coupons)983-989 99 tagliandi (coupons)

Si può osservare in particolare che il prefissi 978 e 979 sono riservati per i libri, mentre il prefisso977 è riservato per i periodici (riviste). Dal momento che il prefisso EAN definiva originariamenteun’area nazionale, era stato attribuito al codice 978 la denominazionebookland (la terra deilibri). Molta documentazione sui codici a barre e sulla numerazione ISBN fa ancora riferimentoa questo nome per indicare tale prefisso.

Un altro prefisso interessante è il due, che rimane libero. Molti negozi usano codici a barreEAN-13, con prefisso due per annotare il prezzo di qualcosa che non è identificabile diversamente,come gli alimentari ottenuti da un banco di salumi e formaggi. La figura352.3mostra un esempioreale in cui, tra le altre cose, si annota un prezzo di 5835 LIT.

Page 235: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Codici a barre 3969

Figura 352.3. Esempio di un codice a barre con simbologia EAN-13, usato perannotare un prezzo.

2 000120 058354

352.3.2 ISBN

La simbologiaEAN-13 viene usata in diverse situazioni comuni, in particolare per ciò cheriguarda le pubblicazioni.

La codifica ISBN (International standard book number) permette di identificare un libro in unasua edizione precisa, attraverso un numero composto da 10 cifre. Il numero in questione contienequattro parti: l’origine (ovvero l’ente che lo ha rilasciato), l’editore, il titolo (il libro) e unnumerodi controllo finale (una sola cifra).

Per facilitare la lettura di queste informazioni, le quattro parti vengono mostrate solitamentecome separate, attraverso un trattino. Per esempio,‘88-8331-223-6 ’ indica l’origine 88 (Italia),l’editore 8331, il titolo 233 e ilnumero di controllo 6.

Le varie parti in cui si suddivide l’informazione contenuta in un numero ISBN non sono dilunghezza fissa e la dimensione dell’una limita quella delle altre. In generale sono disponibili iraggruppamenti seguenti.

1. La prima parte identifica l’area (nazionale, linguistica e geografica) e viene attribuitadall’agenzia internazionale dell’ISBN. Il numero assegnato all’Italia è 88.

• 0-7

• 80-94

• 950-994

• 9950-9989

• 99900-99999

2. La seconda parte identifica l’editore e viene attribuito dall’agenzia ISBN competentenell’area di riferimento.

• 00-19

• 200-699

• 7000-8499

• 85000-89999

• 900000-999999

3. La terza parte identifica il titolo, relativamente all’editore a cui si fa riferimento, utilizzandolo spazio rimanente, escludendo ilnumero di controllo finale.

4. Il numero di controllo viene calcolato moltiplicando le cifre per un numero che va da 10 auno, sommando ciò che si ottiene e dividendo per il «modulo 11. In questo modo, il valoreche si ottiene può andare da 0 a 10, dove il 10 si rappresenta con una lettera «X».

Page 236: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3970 Codici a barre

Per comprendere il meccanismo del calcolo delnumero di controllo, conviene vedere un esempioreale, il numero ISBN‘88-8331-223-6 ’ . In pratica, si tratta di verificare che il numero sei siaeffettivamente ilnumero di controllo corretto.

Valore 8 8 8 3 3 1 2 2 3 6Peso 10 9 8 7 6 5 4 3 2 1Peso*Valore 80 72 64 21 18 5 8 6 6 6

Il totale che si ottiene è 286, che diviso per 11 dà esattamente 26, senza resto, a conferma dellavalidità delnumero di controllo. Non conoscendo ilnumero di controllo lo si potrebbe calcolare:la somma che si otterrebbe sarebbe solo 280, che divisa per 11 dà 25 con il resto di 5, per cui, 11- 5 dà 6, il numero cercato.

Il numero ISBN si trasforma inEAN-13 mettendo anteriormente il valore 978 e togliendo ilnumero di controllo finale che va sostituito con quello calcolato secondo lo standardEAN-13;naturalmente, i trattini di divisione sono perduti. La figura352.4mostra l’esempio del codiceISBN 88-481-0113-5 rappresentato secondo la simbologiaEAN-13, che si trasforma nel numero9788848101134.

Figura 352.4. ISBN 88-481-0113-5.

A seconda del paese in cui si utilizza il numero ISBN, può essere obbligatorio o meno un codicea barre aggiuntivo contenente l’informazione sul prezzo.

352.3.3 ISSN

La codifica ISSN permette di identificare una pubblicazione periodica attraverso una tecnicasimile a quella del numero ISBN per i libri. In questo caso, il numero è composto da otto cifrenumeriche (compreso ilnumero di controllo), che vanno inserite in una simbologiaEAN-13aggiungendo all’inizio il prefisso 977, togliendo ilnumero di controllo ISSN, aggiungendo duecifre che rappresentano il codice del prezzo e aggiungendo ilcodice di controlloEAN-13. Inoltre,va aggiunto un codice a barre ulteriore per rappresentare due o cinque cifre in cui si indica ilnumero del fascicolo.

Per esempio, il numero ISSN‘1129-1346 ’ di una rivista potrebbe tradursi nel codice a barre9771129134006, con l’aggiunta di 10110, dove il codice del prezzo è assente e si fa riferimentoal fascicolo numero 110.

La figura352.5mostra l’esempio del codice di due riviste, in cui appare anche un’estensionecontenente il numero della pubblicazione.

Figura 352.5. Esempio di due codici ISSN, riferiti a riviste, con un’estensionecontenente il numero della pubblicazione (rispettivamente 106 e 23).

Page 237: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Codici a barre 3971

352.4 Code 39

La simbologia denominataCode 39, ovvero3 of 9, consente di rappresentare 42 simboli, compo-sti da lettere maiuscole, cifre numeriche e pochi altri segni. La tabella352.9riepiloga l’insiemedi caratteri. Un codice a barreCode 39 è composto da un carattere di inizio, dai dati che devecontenere, da uncodice di controllo (che non appare tradotto per la lettura umana) e dal caratteredi fine. Il carattere usato per iniziare e per concludere la sequenza è l’asterisco, che quindi nonpuò essere utilizzato nei dati contenuti.

Tabella 352.9. Insieme di caratteri per la simbologia Code 39.

Valore Carattere Valore Carattere0 0 22 M1 1 23 N2 2 24 O3 3 25 P4 4 26 Q5 5 27 R6 6 28 S7 7 29 T8 8 30 U9 9 31 V10 A 32 W11 B 33 X12 C 34 Y13 D 35 Z14 E 36 -15 F 37 .16 G 38 space17 H 39 $18 I 40 /19 J 41 +20 K 42 %21 L inizio/fine *

Figura 352.6. Esempio di codice a barre Code 39.

Gli elementi utilizzati nella simbologiaCode 39 sono quattro, composti da due tipi di barre neree due tipi di spazi. Ogni carattere o segno che può essere rappresentato con questa simbologia, siavvale di cinque barre e di quattro spazi, per un totale di nove elementi. Il nome della simbologia,che si può tradurre come «tre su nove», indica il fatto che tre elementi su nove sono sempre ditipo largo (rispetto agli altri che invece sono stretti).

Il codice di controllo si ottiene sommando assieme i valori abbinati ai segni che si possonorappresentare, secondo la tabella di conversione352.9, dividendo per 43. Il resto della divisioneè il codice di controllo. Nel caso dell’esempio che appare in figura352.6, si tratta della lettera‘L’ :

«CIAO» = 12 + 18 + 10 + 24 = 64

Page 238: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3972 Codici a barre

64 / 43 = 1 lasciando un resto di 21 =‘L’

352.4.1 Code 39 esteso

Esiste anche un’estensione della simbologiaCode 39, allo scopo di consentire la rappresenta-zione dell’ASCII standard completo. Si ottiene questo risultato scrivendo due simboli normalial posto di uno. Naturalmente, dal momento che non esiste un modo per distinguere la codificastandard da quella estesa, è necessario che il lettore di codice a barre sia impostato nel modopiù conveniente. La tabella352.10mostra l’insieme di caratteri esteso e la corrispondenza con isegni della simbologiaCode 39 normale.

Tabella 352.10. Insieme di caratteri esteso per la simbologia Code 39.

ASCII Code 39 ASCII Code 39 ASCII Code 39 ASCII Code 39<NUL> %U <SP> = @ %V ‘ %W<SOH> $A ! /A A A a +A<STX> $B " /B B B b +B<ETX> $C # /C C C c +C<EOT> $D $ /D D D d +D<ENQ> $E % /E E E e +E<ACK> $F & /F F F f +F<BEL> $G ’ /G G G g +G<BS> $H ( /H H H h +H<HT> $I ) /I I I i +I<LF> $J * /J J J j +J<VT> $K + /K K K k +K<FF> $L , /L L L l +L<CR> $M - /M M M m +M<SO> $N . /N N N n +N<SI> $O / /O O O o +O<DLE> $P 0 0 P P p +P<DC1> $Q 1 1 Q Q q +Q<DC2> $R 2 2 R R r +R<DC3> $S 3 3 S S s +S<DC4> $T 4 4 T T t +T<NAK> $U 5 5 U U u +U<SYN> $V 6 6 V V v +V<ETB> $W 7 7 W W w +W<CAN> $X 8 8 X X x +X<EM> $Y 9 9 Y Y y +Y<SUB> $Z : /Z Z Z z +Z<ESC> %A ; %F [ %K %P<FS> %B < %G \ %L | %Q<GS> %C = %H ] %M %R<RS> %D > %I ^ %N ~ %S<US> %E ? %J _ %O <DEL> %T

Page 239: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Codici a barre 3973

352.5 Code 128

La simbologia denominataCode 128, ovveroUSS Code 128, consente di rappresentare 106 sim-boli, che possono essere interpretati secondo treinsiemi di caratteri, distinti in base a una lettera:A, B e C. Per questa ragione, un codice a barre realizzato secondo la simbologiaCode 128 ini-zia sempre con la dichiarazione dell’insieme di caratteri. L’informazione non ha una lunghezzapredeterminata e può essere modificato l’insieme di caratteri quando serve. La simbologiaCo-de 128 prevede l’inserimento di uncodice di controllo, calcolato automaticamente per consentirela verifica della lettura meccanica, ma questa cifra non viene mostrata per la lettura umana.

Tabella 352.11. Insiemi di caratteri per la simbologia Code 128. Prima parte. L’ultimacolonna riporta anche la descrizione della rappresentazione a barre, dove un nume-ro da uno a tre indica la larghezza della barra, ‘b’, o dello spazio, ‘s’, dalla grandezzapiù piccola alla più grande.

Valore Code A Code B Code C Barre e spazi:b s b s b s

0 <SP> <SP> 00 2 1 2 2 2 21 ! ! 01 2 2 2 1 2 22 " " 02 2 2 2 2 2 13 # # 03 1 2 1 2 2 34 $ $ 04 1 2 1 3 2 25 % % 05 1 3 1 2 2 26 & & 06 1 2 2 2 1 37 ’ ’ 07 1 2 2 3 1 28 ( ( 08 1 3 2 2 1 29 ) ) 09 2 2 1 2 1 310 * * 10 2 2 1 3 1 211 + + 11 2 3 1 2 1 212 ’ ’ 12 1 1 2 2 3 213 - - 13 1 2 2 1 3 214 . . 14 1 2 2 2 3 115 / / 15 1 1 3 2 2 216 0 0 16 1 2 3 1 2 217 1 1 17 1 2 3 2 2 118 2 2 18 2 2 3 2 1 119 3 3 19 2 2 1 1 3 220 4 4 20 2 2 1 2 3 121 5 5 21 2 1 3 2 1 222 6 6 22 2 2 3 1 1 223 7 7 23 3 1 2 1 3 124 8 8 24 3 1 1 2 2 225 9 9 25 3 2 1 1 2 226 : : 26 3 2 1 2 2 127 ; ; 27 3 1 2 2 1 228 < < 28 3 2 2 1 1 229 = = 29 3 2 2 2 1 130 > > 30 2 1 2 1 2 331 ? ? 31 2 1 2 3 2 132 @ @ 32 2 3 2 1 2 133 A A 33 1 1 1 3 2 334 B B 34 1 3 1 1 2 335 C C 35 1 3 1 3 2 136 D D 36 1 1 2 3 1 337 E E 37 1 3 2 1 1 338 F F 38 1 3 2 3 1 139 G G 39 2 1 1 3 1 340 H H 40 2 3 1 1 1 3

Page 240: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3974 Codici a barre

Valore Code A Code B Code C Barre e spazi:b s b s b s

41 I I 41 2 3 1 3 1 142 J J 42 1 1 2 1 3 343 K K 43 1 1 2 3 3 144 L L 44 1 3 2 1 3 145 M M 45 1 1 3 1 2 346 N N 46 1 1 3 3 2 147 O O 47 1 3 3 1 2 148 P P 48 3 1 3 1 2 149 Q Q 49 2 1 1 3 3 150 R R 50 2 3 1 1 3 151 S S 51 2 1 3 1 1 352 T T 52 2 1 3 3 1 1

Tabella 352.12. Insiemi di caratteri per la simbologia Code 128. Seconda parte. Siosservi che lo stop ha una barra in più alla fine.

Valore Code A Code B Code C Barre e spazi:b s b s b s

53 U U 53 2 1 3 1 3 154 V V 54 3 1 1 1 2 355 W W 55 3 1 1 3 2 156 X X 56 3 3 1 1 2 157 Y Y 57 3 1 2 1 1 358 Z Z 58 3 1 2 3 1 159 [ [ 59 3 3 2 1 1 160 \ \ 60 3 1 4 1 1 161 ] ] 61 2 2 1 4 1 162 ^ ^ 62 4 3 1 1 1 163 _ _ 63 1 1 1 2 2 464 <NUL> ‘ 64 1 1 1 4 2 265 <SOH> a 65 1 2 1 1 2 466 <STX> b 66 1 2 1 4 2 167 <ETX> c 67 1 4 1 1 2 268 <EOT> d 68 1 4 1 2 2 169 <ENQ> e 69 1 1 2 2 1 470 <ACK> f 70 1 1 2 4 1 271 <BEL> g 71 1 2 2 1 1 472 <BS> h 72 1 2 2 4 1 173 <HT> i 73 1 4 2 1 1 274 <LF> j 74 1 4 2 2 1 175 <VT> k 75 2 4 1 2 1 176 <FF> l 76 2 2 1 1 1 477 <CR> m 77 4 1 3 1 1 178 <SO> n 78 2 4 1 1 1 279 <SI> o 79 1 3 4 1 1 180 <DLE> p 80 1 1 1 2 4 281 <DC1> q 81 1 2 1 1 4 282 <DC2> r 82 1 2 1 2 4 183 <DC3> s 83 1 1 4 2 1 284 <DC4> t 84 1 2 4 1 1 285 <NAK> u 85 1 2 4 2 1 186 <SYN> v 86 4 1 1 2 1 287 <ETB> w 87 4 2 1 1 1 288 <CAN> x 88 4 2 1 2 1 189 <EM> y 89 2 1 2 1 4 190 <SUB> z 90 2 1 4 1 2 1

Page 241: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Codici a barre 3975

Valore Code A Code B Code C Barre e spazi:b s b s b s

91 <ESC> 91 4 1 2 1 2 192 <FS> | 92 1 1 1 1 4 393 <GS> 93 1 1 1 3 4 194 <RS> ~ 94 1 3 1 1 4 195 <US> <DEL> 95 1 1 4 1 1 396 FNC 3 FNC 3 96 1 1 4 3 1 197 FNC 2 FNC 2 97 4 1 1 1 1 398 Shift Shift 98 4 1 1 3 1 199 Code C Code C 99 1 1 3 1 4 1100 Code B FNC 4 Code B 1 1 4 1 3 1101 FNC 4 Code A Code A 3 1 1 1 4 1102 FNC 1 FNC 1 FNC 1 4 1 1 1 3 1103 Start A Start A Start A 2 1 1 4 1 2104 Start B Start B Start B 2 1 1 2 1 4105 Start C Start C Start C 2 1 1 2 3 2

Stop Stop Stop 2 3 3 1 1 1 2

Gli insiemi di caratteri A, B e C sono elencati nelle tabelle352.11e352.12. Come si può vedere,l’insieme A consente di rappresentare l’alfabeto maiuscolo, le cifre numeriche, vari simboli dipunteggiatura e caratteri di controllo; in pratica, ciò che si può rappresentare con la prima partedella codifica ASCII, tenendo conto che le posizioni non corrispondono. L’insieme B consente dirappresentare praticamente tutto l’alfabeto ASCII, compresa la distinzione tra lettere maiuscolee minuscole, a esclusione dei caratteri di controllo. L’insieme C consente di rappresentare valorinumerici a coppie, per cui, un valore composto da un numero dispari di cifre acquisisce uno zeroiniziale.

Figura 352.7. Esempio di due codici Code 128, realizzati usando l’insieme B e l’insiemeC, per rappresentare due dati equivalenti: «Ciao» e 37736578.

La figura 352.7 mostra la comparazione tra un codice a barre realizzato usando l’insieme Be un altro con l’insieme C. L’informazione contenuta è la stessa dal punto di vista dei valorirappresentabili (eventualmente si osservino le tabelle degliinsiemi di caratteri). Se fosse possibilesovrapporre i due codici, si noterebbe che cambia solo la parte iniziale, quella in cui si dichiaral’ insieme di caratteri, e la parte finale, dove si inserisce ilcodice di controllo. Si può ancheosservare che gli ultimi elementi rimangono uguali e sono quelli che contengono il codice diconclusione.

Volendo entrare nel dettaglio, l’esempio di figura352.7 si compone di:‘Start B ’ , 35, 73,65, 79, codice_di_controllo, ‘Stop ’ ; ovvero, nel secondo caso,‘Start C ’ , 35, 73, 65, 79,codice_di_controllo, ‘Stop ’ .

Quando si vuole cambiare l’insieme di caratteri, si inserisce un simbolo‘Code A’ , ‘Code B’ o‘Code C’ , per introdurre l’insieme a cui si vuole fare riferimento da quel punto in poi.

Il codice di controllo finale si calcola sommando il valore corrispondente alla dichiarazione ini-ziale dell’insieme di caratteri alla somma dei valori successivi, moltiplicati per la loro posizione.

Page 242: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3976 Codici a barre

La somma complessiva va divisa per 103 e il resto che si ottiene è ilcodice di controllo finale. Siosservi l’esempio:

Start B C i a o StopPeso 1 1 2 3 4Valore 104 35 73 65 79Peso*Valore 104 35 146 195 316

Pertanto:

104 + 35 + 146 + 195 + 316 = 796

796 / 103 = 7 con resto di 75. Ilcodice di controllo è il simbolo corrispondente al valore 75.

Usando l’insieme di caratteri C la cosa cambia, perché il simbolo iniziale ha il valore 105, percui il codice di controllo finale è 76:

Start C 35 73 65 79 StopPeso 1 1 2 3 4Valore 105 35 73 65 79Peso*Valore 105 35 146 195 316

Dalla simbologiaCode 128 derivano diverse applicazioni speciali che si distinguono per ave-re una struttura particolare. Esiste anche una variante che consente la rappresentazione di piùcaratteri rispetto all’ASCII standard.

352.5.1 UCC/EAN 128

La simbologiaUCC/EAN 128 è un’applicazione diCode 128, in cui si inizia dichiarandol’ insieme di caratteri e si inserisce subito dopo il simbolo‘FNC 1’ (Function code one).2

Dopo il simbolo ‘FNC 1’ viene indicato un codice che indica il tipo di applicazione. Si fa ri-ferimento a questo con la sigla AI (Application identifier). L’informazione in questione vienerappresentata per la lettura umana tra parentesi tonde, proprio per facilitare l’interpretazione, asottolineare il fatto che si tratta di un prefisso. Naturalmente, l’informazione può essere anchepiù complessa e altre parti dei dati successivi possono essere separate ed evidenziate nello stessomodo o in modi differenti.

352.6 ITF, ovvero i25

La simbologiaITF, o i25, nota comeInterleaved two of five, ovvero «interfogliata due su cinque»,consente la rappresentazione di soli valori numerici, di lunghezza indefinita, purché in numero dicifre pari. La simbologia prevede unacifra di controllo finale, opzionale.

La simbologia si compone di due tipi di barre e due tipi di spazi. Ogni simbolo si rappresentacon cinque barre e cinque spazi, dove due barre su cinque e due spazi su cinque sono più larghi.La simbologia è detta «interfogliata», perché una cifra è codificata nelle barre e la successivalo è negli spazi che separano gli elementi del carattere precedente. Prima dei dati è previsto unsimbolo iniziale, composto da una barra sottile, uno spazio breve, una barra sottile e un altrospazio breve; alla fine c’è un simbolo finale, composto da una barra larga, uno spazio sottile euna barra sottile.

2L’uso comune è dell’insieme di caratteri C, ma ciò non è imposto dallo standard.

Page 243: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Codici a barre 3977

Figura 352.8. Esempio di codice a barre con simbologia interfogliata due su cinque.

352.7 Sistemi bidimensionali

Il codice a barre comune è a una sola dimensione, nel senso che contiene una sola riga di in-formazioni, eventualmente anche molto breve. Semplificando le cose, si può dire che quando sisovrappongono più righe in un codice a barre, questo diventa a due dimensioni.

Un sistema di codice a barre a due dimensioni, con lo scopo di memorizzare dati, deve essereorganizzato in modo da permettere al lettore meccanico di riconoscere e seguire le righe; inoltredeve essere previsto un sistema di informazioni ridondanti, anche molto complesso, in modo dagarantire la lettura in presenza di errori.

Lo standard più comune per i codici a barre a due dimensioni è ilPDF417, che comunque quinon viene descritto.

352.8 Riferimenti

• EAN international

<http://www.ean- int.org/>

• The EAN.UCC system

<http://www.ean- int.org/barcodes.html>

• Tino Hempel,Die Europäische Artikelnummer (EAN)

<http://members.aol.com/hempeltino/info/mathe/ean/ean.pdf>

• Barcoding for Beginners & Bar Code FAQ

<http://www.idautomation.com/barcoding4beginners.html>

• Code 39 Barcode FAQ and Tutorial

<http://www.idautomation.com/code39faq.html>

• Code 128 / USS Code-128 Barcode FAQ & Tutorial

<http://www.idautomation.com/code128faq.html>

• PDF417 Barcode FAQ

<http://www.idautomation.com/pdf417faq.html>

• UPC / EAN Barcode Font Data Sheet

<http://www.bizfonts.com/upc- ean/faq.htm>

• PDF417

<http://www.pdf417.com/>

Page 244: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3978 Codici a barre

• Uniform Code Council,UPC symbol specification manual, 1986

<http://www.uc- council.org/reflib/01302/d36- t.htm>

• Uniform Code Council,UPC symbol specification manual, Specification for The EAN Code

<http://www.uc- council.org/reflib/01302/d36- g.htm>

• Uniform Code Council,UCC/EAN-128 application identifier standard, 1995

<http://www.uc- council.org/reflib/00403/d30- t.htm>

• Uniform Code Council,UPC film master verification manual, 1996

<http://www.uc- council.org/reflib/01403/d35- t.htm>

• Russ Adams,Barcode 1

<http://www.barcode- 1.com/>

• International ISBN Agency: Coordinator of the International Standard Book Numbersystem

<http://www.isbn.spk- berlin.de/>

• International ISBN Agency,The ISBN Users’ Manual

<http://www.isbn.org/standards/home/isbn/International/ISBNmanual.asp>

• AIE - Agenzia ISBN

<http://www.aie.it/ISBN/intro.asp>

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 245: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 353

BarcodeBarcode1 è una libreria e anche un programma molto semplice per la realizzazione di codicia barre standard a una sola dimensione. Il codice a barre viene realizzato in forma di filePost-Script, che successivamente può essere utilizzato direttamente o convertito in altri formati grafici,attraverso programmi standard.

353.1 Utilizzo del programma

Barcode, come programma, si compone in pratica dell’eseguibile‘barcode ’ . Questo genera unfile PostScript che normalmente viene emesso attraverso lostandard output.

barcode [ opzioni]

Teoricamente si può usareBarcode anche senza l’indicazione di alcun argomento, per ottenerela conversione automatica di quanto inserito attraverso lostandard input, scegliendo la simbolo-gia in modo automatico. Tuttavia, in genere è opportuno accertarsi di selezionare la simbologiaattraverso l’opzione‘ -e ’ .

Le opzioni che vengono mostrate qui sono poche; in particolare mancano quelle che servono adefinire la stampa di codici a barre in modo organizzato sul foglio, allo scopo di centrare delleetichette adesive. Per approfondire basta leggere la documentazione originale:barcode.info.

Alcune opzioni-e simbologia

Consente di specificare la simbologia dei codici a barre che si vogliono realizzare. Sonodisponibili diverse parole chiave da usare come argomento dell’opzione, secondo la tabella353.1.

-i file

Stabilisce il nome di un file contenente un elenco di codici da trasformare in codici a barre.Se manca questa indicazione e se manca anche l’opzione‘ -b ’ , viene letto lostandard input.La lettera dell’opzione richiama mnemonicamente la parola «input».

-b stringa

Consente di indicare una stringa da convertire in un codice a barre singolo. La stringa deveessere compatibile con i tipi di dati che possono essere rappresentati con la simbologiaprescelta. La lettera dell’opzione richiama mnemonicamente la parolabarcode, ovvero ilcodice a barre che si vuole ottenere dalla stringa.

-E

Genera un filePostScript incapsulato (EPS).

Esempi

$ barcode -E -e i25 -b "12345678" > prova.ps

Converte il numero 12345678 in un codice a barre secondo la simbologiainterfogliata suesu cinque, generando il file‘prova.ps ’ , di tipo EPS.

$ barcode -E -e i25 -b "12345678" -o prova.ps

Esattamente come nell’esempio precedente.

1Barcode GNU GPL

3979

Page 246: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3980 Barcode

$ barcode -E -e isbn -b "88-386-4177-3" -o prova.ps

Come nell’esempio precedente, usando la simbologiaEAN-13 per rappresentare un codiceISBN, come indicato con l’opzione‘ -b ’ .

353.2 Codifica

Generalmente,Barcode viene utilizzato indicando il tipo di simbologia, attraverso una parolachiave secondo l’elenco della tabella353.1. In generale, si tratta di nomi che fanno riferimentoal tipo di codice a barre; in alcuni casi, il nome indica anche altre caratteristiche. Per esempio,la parola chiave‘code128b ’ indica la simbologiaCode 128, nella quale si utilizza l’insieme dicaratteri B; inoltre, la parola chiave‘ isbn ’ fa riferimento al codice ISBN, che viene rappresentatocorrettamente secondo la simbologiaEAN-13.

Tabella 353.1. Simbologie disponibili con Barcode.

Simbologia Parola chiaveUPC-A upc-aUPC-E upc-eUPC-A oUPC-E automaticamente upcEAN-8 ean8, ean-8EAN-13 ean13, ean-13EAN-8 oEAN-13 automaticamente eanCode 39 code39, 39Code 128insieme di caratteri B code128b, 128bCode 128insieme di caratteri C code128c, 128cCode 128insieme di caratteri A, B o C, automaticamente code128, 128Code 128 libero 128rawinterfogliata due su cinque i25, interleaved 2 of 5Codabar cdr, codabarPlessey pls, plesseyISBN attraversoEAN-13 isbn

Nel caso dell’uso della simbologiaCode 128, si pone il problema di rappresentare i codici da<NUL> a <US>, il codice<DEL> e le funzioni speciali previste dalla simbologia. Usando l’ese-guibile ‘barcode ’ diventa difficile indicare questi simboli; con la libreria non ci sono problemia indicare i codici ASCII da<SOH> a<US> e il codice<DEL>, mentre negli altri casi viene fattauna trasformazione, come rappresentato nella tabella353.2.

Tabella 353.2. Rappresentazione dei caratteri speciali per la simbologia Code 128,quando si usa la libreria Barcode.

Codice o simbolo Ottale Decimale Esadecimale<NUL> 2008 128 8016

FNC 1 3018 193 C116

FNC 2 3028 194 C216

FNC 3 3038 195 C316

FNC 4 3048 196 C416

Sempre a proposito della simbologiaCode 128, è possibile utilizzando la parola chiave‘128raw ’per indicare un codice attraverso una stringa espressa nella forma:

n_1 n_2... n_n

In pratica, si indicano una serie di numeri separati tra loro da uno spazio. I numeri in questione

Page 247: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Barcode 3981

rappresentano il valore indicato nelle tabelle352.11e 352.12; inoltre occorre tenere in conside-razione che va fornito anche il valore iniziale, con il quale si definisce solitamente l’insieme dicaratteri A, B o C, mentre ilcodice di controllo finale e lo stop sono aggiunti automaticamente.

Appunti di informatica libera 2003.01.01 ---Copyright© 2000-2003 Daniele Giacomini --daniele @ swlibero.org

Page 248: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Capitolo 354Trasformazione in lettereNell’ambito della realizzazione di applicativi gestionali, capitano frequentemente problemi diconversione di numeri interi in una qualche forma alfabetica. In questo capitolo vengono mostratidegli algoritmi molto semplici per risolvere questo tipo di problemi.

354.1 Da numero a sequenza alfabetica pura

Esiste un tipo di numerazione in cui si utilizzano solo le lettere dell’alfabeto, dalla «a» alla «z»,senza accenti o altri simboli speciali, senza distinguere tra maiuscole e minuscole. In generale,i simboli da «a» a «z» consentono di rappresentare valori da 1 a 26, dove lo zero è escluso.Per rappresentare valori superiori, si possono accoppiare più lettere, ma il calcolo non è banale,proprio perché manca lo zero.

Attraverso la pseudocodifica introdotta nel capitolo282, si può descrivere una funzione che cal-coli la stringa corrispondente a un numero intero positivo, maggiore di zero. Per prima cosa,occorre definire una sotto funzione che sia in grado di trasformare un numero intero, compresotra 1 e 26 nella lettera alfabetica corrispondente; ciò si ottiene abbastanza facilmente, attraversola verifica di più condizioni in cascata. Il vero problema, purtroppo, sta nel costruire una stringacomposta da più lettere, quando si vuole rappresentare un valore superiore a 26. Non essendocilo zero, diventa difficile fare i calcoli. Se si parte dal presupposto che il numero da convertirenon possa essere superiore a 702, si sa con certezza che servono al massimo due lettere alfabe-tiche (perché la stringa «ZZ» corrisponderebbe proprio al numero 702); in tal caso, è sufficientedividere il numero per 26, dove la parte intera rappresenta la prima lettera, mentre il resto rap-presenta la seconda. Tuttavia, se la divisione non dà resto, la stringa corretta è quella precedente.Per esempio, il numero 53 corrisponde alla stringa «BA», perché 53/26 = 2 con un resto di 1.Nello stesso modo, però, 52 si traduce nella stringa «AZ», perché 53/26 = 2, ma non c’è resto,pertanto, «B » diventa «AZ».

La pseudocodifica seguente riepiloga il concetto in modo semplificato, dove, a seconda delleesigenze, la conversione è sempre limitata a un valore massimo. Le omissioni sono parti di codicefacilmente intuibili.

INTEGER_TO_ALPHABET (N)

ALPHABET_DIGIT (DIGIT)IF DIGIT = 0

THENRETURN ""

ELSE IF DIGIT = 1THEN

RETURN "A"ELSE IF DIGIT = 2

THENRETURN "B"

...

...ELSE IF DIGIT = 26

THENRETURN "Z"

ELSERETURN "##ERROR##"

FIEND ALPHABET_DIGIT

IF N <= 0THEN

RETURN "##ERROR##";

3982

Page 249: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

Trasformazione in lettere 3983

ELSE IF N <= 26THEN

RETURN ALPHABET_DIGIT (N)ELSE IF N <= 52

THENN := N - 52RETURN "A" ALPHABET_DIGIT (N)

ELSE IF N <= 78THEN

N := N - 78RETURN "B" ALPHABET_DIGIT (N)

...

...ELSE IF N <= 702

THENN := N - 702RETURN "Z" ALPHABET_DIGIT (N)

ELSE IF N <= 728THEN

N := N - 728RETURN "AA" ALPHABET_DIGIT (N)

ELSE IF N <= 754THEN

N := N - 754RETURN "AB" ALPHABET_DIGIT (N)

...

...ELSE

RETURN "##ERROR##"END IF

END INTEGER_TO_ALPHABET

354.2 Da numero a numero romano

La conversione di un numero intero positivo in una stringa che rappresenta un numero romano,ha un discreto livello di difficoltà, perché la numerazione romana non prevede lo zero, perchéla tecnica prevede la somma e la sottrazione di simboli (a seconda della posizione) e poi perchédiventa difficile indicare valori multipli delle migliaia.

Per prima cosa è necessario conoscere il valore associato ai simboli elementari:

Simbolo Valore corrispondenteI 1V 5X 10L 50C 100D 500M 1000

Un simbolo posto alla destra di un altro simbolo con un valore maggiore o uguale di questo, vienesommato; al contrario, un simbolo posto alla sinistra di un altro simbolo con un valore maggioreo uguale di questo, viene sottratto. Per esempio, «VI» equivale a 5+1, mentre «IV» equivale a5- 1. Esistono comunque anche altri vincoli, per evitare di creare numeri difficili da interpretarea causa di una complessità di calcolo eccessiva.

Per risolvere il problema con un algoritmo relativamente semplice, si può scomporre il valo-re di partenza in fasce: unità, decine, centinaia e migliaia (la conversione di valori superiorigenererebbe soltanto una serie lunghissima di «M» che risulta poi troppo difficile da leggere).

Page 250: Appunti di informatica libera Volume VII Matematica e disegnoproglinux.altervista.org/DOWNLOAD/SCR_linux-manuale_guida_reti_p… · Via Morganella Est, 21 -- I-31050 Ponzano Veneto

3984 Trasformazione in lettere

INTEGER_TO_ROMAN (N)

LOCAL DIGIT_1 INTEGERLOCAL DIGIT_2 INTEGERLOCAL DIGIT_3 INTEGERLOCAL DIGIT_4 INTEGER

DIGIT_1 := 0DIGIT_2 := 0DIGIT_3 := 0DIGIT_4 := 0

DIGIT_1_TO_ROMAN (DIGIT)IF DIGIT = 0

THENRETURN ""

ELSE IF DIGIT = 1THEN

RETURN "I"ELSE IF DIGIT = 2

THENRETURN "II"

ELSE IF DIGIT = 3THEN

RETURN "III"ELSE IF DIGIT = 4

THENRETURN "IV"

ELSE IF DIGIT = 5THEN

RETURN "V"ELSE IF DIGIT = 6

THENRETURN "VI"

ELSE IF DIGIT = 7THEN

RETURN "VII"ELSE IF DIGIT = 8

THENRETURN "VIII"

ELSE IF DIGIT = 9THEN

RETURN "IX"END IF

END DIGIT_1_TO_ROMAN

DIGIT_2_TO_ROMAN (DIGIT)IF DIGIT = 0

THENRETURN ""

ELSE IF DIGIT = 1THEN

RETURN "X"ELSE IF DIGIT = 2

THENRETURN "XX"

ELSE IF DIGIT = 3THEN

RETURN "XXX"ELSE IF DIGIT = 4

THENRETURN "XL"

ELSE IF DIGIT = 5THEN

RETURN "L"ELSE IF DIGIT = 6


Recommended