Topolinux 9 - Vecchiomago
Transcript
Topolinux 9 - Vecchiomago
Editoriale D opo circa due mesi e mezzo abbiamo prodotto un nuovo numero dell’ezine. Come al solito il lavoro per migliorare tutto il progetto sta togliendo moltissimo tempo alla stesura di nuovi articoli ed ecco quindi spiegato questo ritardo rispetto alla cadenza più o meno bimestrale della rivista. Questo numero vede la luce di una serie di articoli sulla tanto richiesta programmazione di script Shell. Vedremo inoltre come installare Apache, Mysql e PHP sotto Linux, condividere risorse tra Linux e Windows tramite Samba ed infine anche come divertirci un po’ tra giochi e musica. Prosegue anche la rubrica recensioni dove, grazie a Venkè, è stato redatto un articolo su Mandriva PowerPack. Putroppo la sezione “Pillole” e “L’eco dei Pinguini” vede un po’ di magra in questo numero, ma ci rifaremo per il prossimo. L’articolo conclusivo sugli attacchi DDos a causa di alcuni problemi logistici terminerà sul prossimo numero. Se tutto procede come previsto, a breve TopoLinux avrà un nuovo vestito ;-) Concludo questo editoriale, portandovi a conoscenza della “bacheca” dell’ezine, abbiamo infatti aperto all’interno del forum nella sezione “Cose dal mondo” una bacheca dove potrete pubblicizzare i vostri lavori “Rigorosamente Open Source” e/o cercare collaboratori per crescita o realizzazione di progetti. Ringraziamenti Fabiana per il nome dell’e-zine; Rockaffé per tutti i suggerimenti dati; MakPaolo per il supporto con i CSS; AngelinoAnt per il supporto hack phpBB; ed in particolare tutti i membri dello staff! Numeri arretrati I numeri arretrati dell’e-zine sono disponibili per il download sul sito e consultabili on-line nella sezione ‘Arretrati’ Sito Web http://www.topolinux.org Forum http://forum.topolinux.org Newsletter Per rimanere sempre informati su tutte le attività riguardanti l’e-zine, è possibile iscriversi sul sito nella sezione ‘Newsletter’ Lettere alla redazione [email protected] Che altro dire? Direttore: Buona lettura e occhio al vestito. Lemoeb ([email protected]) Redattore: Neon ([email protected]) Correttore di bozza: Rolly Giornalisti freelance: Stonedz JoErNano Collaboratori esterni: Gil (OpenSourceMania.it) Versione elettronica curata da: DnDVault ([email protected]) Klaudia ([email protected]) Lemoeb Copertina: Klaudia ([email protected]) Copyright (c) 2007 Topolinux è garantito il permesso di copiare, distribuire e/o modificare questo documento seguendo i termini della Licenza per Documentazione Libera GNU, Versione 1.1 o ogni versione successiva pubblicata dalla Free Software Foundation; con le Sezioni Non Modificabili Sommario e Lettere alla Redazione, con i Testi Copertina “Topolinux l’ezine italiano completamente dedicato al Pinguino”. Una copia della licenza è acclusa nella sezione intitolata “GNU FDL”. SO MM A RI O Recensioni Mandriva PowerPack 2007: alcuni fastidi irrisolti.......................................................pag. 4 Shell Shell script - Parte 1..................................................................................................pag. 6 Sistema Condividere risorse a ritmo di Samba......................................................................pag. Chmod e i permessi sui file......................................................................................pag. Criptare un File System e montarlo al login.............................................................pag. Installare Apache, PHP e MySQL..........................................................................pag. 10 16 19 22 Ambiente desktop Col pinguino in sala giochi: Xmame........................................................................pag. 25 Uno studio musicale per GNU/Linux.......................................................................pag. 30 Pillole Htop: Top all’ennesima potenza.............................................................................pag. 36 NTFS-3G..............................................................................................................pag. 36 Recensioni Mandriva PowerPack 2007: alcuni fastidi irrisolti Alzi la mano chi non conosce Mandriva, e chi non conosce il suo passato. Si può dire, in due parole, che Mandriva è l’atto dell’acquisto di Connectiva da parte di MandrakeSoft; un tempo una società molto prospera, poi soggetta a cavilli burocratici e giudiziari, soprattutto per via del suo nome. Oggi questa crisi, che ha avuto dei riscontri anche economici, si è del tutto risolta, anche se oggi Mandriva è soggetta ad un altro tipo di crisi, se così la si può definire: dalle statistiche risulta che le utenze di questa distribuzione stanno scendendo e non poco. Ma quali sono i motivi di questo allontanamento? vedremo, una piccola differenza fra il Centro di Controllo della Free e quello della Powerpack c’è. Che il test abbia inizio! Il test è stato condotto su un CompaQ Presario V4000 (giusto per essere precisi). Molti la conoscono, l’installazione di Mandriva, molto simile a quella di Windows: elenco puntato a sinistra, schermata al centro con i dettagli e le opzioni. Tra i pacchetti proposti scelgo KDE e GRUB (il bootloader di default è LILO). Ma salta subito all’occhio una differenza, sia con Windows, che con le altre distribuzioni: molta, forse troppa, pubblicità, non solo nella Free, ma anche nella versione a pagamento che ho acquistato, che trovo alquanto fastidiosa. Terminata la procedura di installazione, il PC si riavvia da solo, ma ecco la prima pecca: il programma mi ha rilevato automaticamente la partizione di Windows, ma, cosa stranissima, non mi ha rilevato ciò che è della stessa natura di Mandriva: la mia installazione di Ubuntu. Beh, è un problema che si può risolvere in qualche passaggio, ma risulta ancora una volta fastidioso. Caratteristiche generali L’avvio del DVD della versione commerciale è stato identico a quello della versione Free: nemmeno durante l’installazione era possibile leggere da qualche parte la parola “Powerpack”, tant’è che ad un certo punto ho cominciato a preoccuparmi, pensando di aver installato una semplice Free. Molti conoscono com’è fatta Mandriva, e poco è cambiata: il sistema di gestione pacchetti “urpmi”, semplice sia da riga di comando sia per via grafica, con il programma rpmdrake, ma spesso impreciso nella risoluzione di alcune dipendenze. I repository ufficiali, comunque sia, sono certamente più completi di quelli della openSuSE (vedi n. 8 di Topolinux). Il Centro di Controllo completo e funzionale (ma, s’aggiunga, un po’ pesante) raccoglie un po’ tutte le impostazioni e rende quasi inutile la riga di comando. Come Il primo boot Con già molto rancore mi accingo ad avviare la nostra Mandriva Powerpack, che si presenta con un cursore “in attesa” molto carino, un tema molto sportivo, seppure un po’ impreciso, e la schermata di benvenuto di Mandriva. La scheda di rete wireless è subito rilevata, Recensioni cosa che non mi aveva fatto con la versione Free, anche se bisogna attivare la connessione a ogni avvio. Stesso discorso vale per i plugin del browser: già installati nella Powerpack, “acquistabili”, invece, nella Free. Essendo questa la versione a pagamento, mi precipito nel menù per scoprire qualche programmino che nella Free, giustamente, non c’è. Ed ecco spuntare LinDVD (Figura 2), Cedega, e tanti altri programmini che fanno di questa distro per molti aspetti una valida alternativa a Windows. il vantaggio di essere gratuite e liberamente scaricabili. Per fare un po’ di nomi, Kaffeine e Mplayer, con gli opportuni codec, sono degli ottimi riproduttori. RPMdrake2 (Figura 4) è quella che potremmo definire la versione riservata, alquanto elitaria, del gestore di pacchetti di Mandriva. Differenze di sostanza non ce ne sono: il motore è sempre lo stesso (urpmi) con i suoi pregi e i suoi difetti. La differenza che risalta maggiormente è la diversa interfaccia grafica, più gradevole. Peculiarità Per tirar le somme Senza ombra di dubbio essendo questa una versione acquistata, non scaricata, contiene materiale non necessariamente a sorgente aperto e sicuramente non gratuito la cui qualità, in teoria, dovrebbe essere superiore a quella dei programmi contenuti nella Free. Segue una panoramica sui software esclusivi presenti nel pacchetto. Il primo di cui parlo è Cedega: molti lo conoscono, pochi lo hanno provato. È un programma a pagamento, dal costo di una ventina di euro, che permette di far “girare” i giochi fatti per Windows sul nostro amato sistema operativo (Figura 3). Il gioco che ho provato, Stronghold Deluxe, sicuramente un po’ datato, ha lavorato alla perfezione, tenendo conto, però, che è un gioco che non necessita di alcun potente motore 3D. LinDVD, da quando è uscito, è considerato da alcuni la migliore soluzione sul mercato per la riproduzione di DVD su Linux. Hanno ragione a dire “sul mercato”. Infatti molte altre valide alternative non sono sul mercato, sono altrettanto ottime (LinDVD è un gran bel pezzo di software, inutile negarlo), ma hanno Un prezzo e qualche programma non-free non hanno fatto certo la differenza per una distro che non migliora alcune importanti lacune di base delle quali ho parlato poc’anzi: l’installer che non riconosce l’altra distribuzione sull’hard-disk, tanta pubblicità, un centro di controllo alquanto massiccio. Pochi come difetti, ma molto importanti. Difetti che in una distro del calibro di Mandriva (Powerpack a maggior ragione) non deve, nella maniera più assoluta, avere. Venkè Shell Shell script - Parte 1 Introduzione tramite il comando chmod. Se non conoscete questo comando, date uno sguardo all’articolo relativo presente su questo numero dell’ezine. Si sente spesso parlare in ambiente Unix Like di shell scripting o più semplicemente di script. Il nostro primo script Ma cosa sono realmente gli script e soprattutto come prepararne di nostri? Finalmente iniziamo a fare qualcosa di serio : D Durante questo corso cercheremo di fornire il maggior numero di informazioni possibili per la realizzazione di script con teoria ed anche esempi pratici. Tramite il vostro editor preferito (noi abbiamo utilizzato il vi) create un file chiamato primo_ script.sh Tutto il corso sarà basato sulla Bourne Again Shell, una evoluzione della shell creata da Stephen Bourne. # vi primo_script.sh ed inserite al suo interno le seguenti righe : #!/bin/bash Si presuppone che il lettore abbia un minimo di dimestichezza con i comandi Shell e una piccola infarinatura dei concetti base di programmazione. #--------------------------------# Come nostro solito, cercheremo di utilizzare un linguaggio comprensibile anche a chi è digiuno di linux ;-) #Titolo : primo_script.sh # #Autore : lemoeb # #Versione : 1.0 # #Data : Marzo 2007 # #Data ult.mod. : Fatto questo cappello, iniziamo a preparare il tutto per il nostro primo script. # #--------------------------------# Prepariamo l’ambiente La pulizia e l’ordine sono una cosa fondamentale per non rischiare di avere molti script sparsi ovunque per il nostro disco, quindi iniziamo a crare una bella directory dove sperimenteremo il tutto. # # # Questo script visualizza sul # # terminale il messaggio # # “Questo è il primo script # # che ho realizzato” # #--------------------------------# La directory che, con molta fantasia, chiameremo “corso_script_topolinux” conterrà tutte le nostre sperimentazioni. echo “Questo è il primo script che ho realizzato” # mkdir corso_script_topolinux Salviamo il tutto. Bene, ora che abbiamo creato la nostra directory, spostiamoci al suo interno # cd corso_script_topolinux Ora, prima di andare ad eseguire lo script e vedere cosa fa, analizziamone le singole parti per rendere più chiaro il tutto. Siamo pronti? Iniziamo? #!/bin/bash Un momento! C’è da fare ancora una piccola premessa! Con questa riga specifichiamo al sistema quale shell deve utilizzare per l’esecuzione del nostro script, in questo caso la shell bash. Gli script devono essere eseguibili, no? Altrimenti che ci facciamo? Il path dovrebbe essere corretto, in quanto di default l’installazione di un sistema Unix Like posiziona la Bourne Shell all’interno della di- Bene, ricordatevi che una volta creato il vostro script, dovrete dargli i permessi esecutivi Shell rectory /bin. ./primo_script.sh Nel caso dovesse trovarsi in una posizione differente dovrete modificare la riga in questione. darà come risultato: #--------------------------------# Variabili #Titolo : primo_script.sh # #Autore : lemoeb # #Versione : 1.0 # #Data : Marzo 2007 # #Data ult.mod. : Questo è il primo script che ho realizzato Nell’esempio precedente abbiamo visto come utilizzare il comando echo per mostrare frasi “statiche” su schermo. Ora vediamo come richiedere e mostrare su schermo dati che vengono inseriti dall’utente. Il comando in questione è read # #--------------------------------# #!/bin/bash # # #--------------------------------# # Questo script visualizza sul # #Titolo : in-out.sh # # terminale il messaggio # #Autore : neon # # “Questo è il primo script # #Versione : 1.0 # # che ho realizzato” # #Data : Marzo 2007 # #--------------------------------# #Data ult.mod. : Queste righe sono dei Commenti. #--------------------------------# I Commenti sono molto, e ripeto molto, importanti quando si scrive un qualunque programma, quindi imparate a scriverli anche se vi fanno in teoria perdere tempo. Dico in teoria perchè vi posso assicurare che torneranno utili, quando rimetterete mano al codice dopo qualche tempo, soprattutto su script complessi. # # # Questo script richiede una # # variabile all’utente e # # la mostra su schermo. # In ogni caso, spiegare cosa fa uno script in un preciso punto aiuterà anche un utente futuro a migliorarlo, o quanto meno a comprenderlo. read a; # #--------------------------------# echo “Scrivere il tuo nome:”; echo “Tu ti chiami: $a”; Come vediamo nella seconda riga dopo i commenti, il comando read permette di assegnare un dato valore alla variabile attraverso l’inserimento di una stringa. Ora possiamo avere questo dato “custodito” nella variabile $a. Con l’ultima riga possiamo mostrare su schermo sia una frase “statica” che la variabile catturata poco prima! echo “Questo è il primo script che ho realizzato” Eccoci arrivati nel cuore vero e proprio del nostro script, la riga in cui viene eseguito il comando echo. Cosa fa echo? Il comando echo permette di stampare a video un determinato output, nel nostro caso la stringa “Questo è il primo script che ho realizzato”. Il risultato sarà: Scrivere il tuo nome: Tu ti chiami: ‘’valore digitato con la tastiera’’ Ora che abbiamo spiegato tutte le righe di codice, andiamo ad eseguire lo script (ricordo che vanno assegnati i permessi di esecuzione prima). Le variabili in bash sono molto facili da manipolare! Per esempio posso concatenare 2 variabili in una terza variabile molto facilmente: Sistema Esempio: Se $a valesse Topo e $b Linux Il programma è uscito in maniera corretta e restituisce 0. c=$a$b; $HOME echo “$c”; In questa variabile è presente il percorso della home dell’utente in uso c=$a$b; Ritornerebbe TopoLinux Esempio: Ecco altri esempi utilissimi di manipolazione di variabili in bash! Consideriamo sempre il caso di: $ echo $HOME /home/neon $ export a=”Topo” $RANDOM $ export b=”Linux” $ echo $a Genera un numero casuale ogni volta che viene richiamato il suo valore Topo Esempio: $ echo $b $ echo $RANDOM Linux 13894 Numero di lettere: $ echo $RANDOM $ echo ${#a} 6858 4 $ echo $RANDOM Manipolazione di caratteri 28458 $ echo $RANDOM $ echo ${a:1} 11243 opo $1 $2 ... Mostra tutte le lettere dopo la prima Sono il numero di argomenti passati ad un programma $ echo ${a:2} po Esempio: $ echo ${a:0:3} ./mioscript.sh ciao diavolo 666 Top La variabile $1 avra’ valore ciao, $2 avra’ valore diavolo, $3 avra’ valore 666 Utilizzando anche la variabile $b $ echo ${a:0:3}${b:1} Topinux Mentre $# è il numero di argomenti passati allo script. Variabili importanti Osservazioni Alcune variabili di sistema che sono molto importanti da conoscere sono: Le variabili in bash non sono tipizzate come avviene in linguaggi come il C, C++, Java e molti altri. Non devo decidere cosa verra’ immesso in una variabile, ma bastera’ assegnare ad essa un valore perche’ venga “tipizzata”. $? Ogni programma che viene lanciato in shell, una volta che esce, restituisce un valore che viene inserito in $?. Esempio: Esempio con variabile non dichiarata $a $ whoami echo $a neon let “a += 1” $ echo $? echo “a = $a” 0 1 Come vedete pur avendo inizialmente valore Sistema Conclusione della prima parte nullo la variabile $a quando gli viene sommato 1 passa automaticamente a valore 1, pur non essendo inizializzata e pur non avendo inizialmente valore 0! Speranzosi di aver avuto un effetto fortemente catartico :) e sperando che sia stato tutto chiaro, vi auguriamo una buona programmazione ed un arrivederci al prossimo numero in cui tratteremo argomenti piu’ avanzati. Lemoeb & Neon Sistema Condividere risorse a ritmo di SAMBA Introduzione possono effettuare il mount delle directory condivise direttamente nell'albero del filesystem o, in alternativa, è possibile usare una utility, smbclient installata con samba per leggere le directory condivise mediante un'interfaccia simile a quella del programma FTP via linea di comando. Ogni directory può avere differenti privilegi di accesso sovrapposti ai normali privilegi UNIX. Per esempio: le home directory potrebbero essere accessibili in lettura/scrittura a tutti gli utenti riconosciuti dal sistema permettendo ad ogni utente di accedere ai propri file. Comunque potrebbero non avere l'accesso ai file degli altri utenti a meno che questo permesso non sia normalmente previsto. Notare che /etc/samba/netlogon, tipicamente distribuita come condivisione in sola lettura, è la directory di logon per gli script di logon dell'utente. S amba è un progetto open source che fornisce servizi di condivisione di file e stampanti a client SMB/CIFS, liberamente disponibile, al contrario di altre implementazioni SMB/CIFS, e permette di ottenere interoperabilità tra Linux, Unix, Mac OS X e Windows. Samba è un software che può girare su diverse piattaforme tra cui: • Microsoft Windows • UNIX • Linux • IBM System 390 • OpenVMS La configurazione di Samba si ottiene modificando un singolo file (di solito presente come /etc/smb.conf o /etc/samba/smb.conf). Samba può fornire anche script per il logon dell'utente e implementazione di policy di gruppo attraverso poledit. Samba usa il protocollo TCP/IP utilizzando i servizi offerti sul server ospite. Quando correttamente configurato, permette di interagire con client o server Microsoft Windows come se fosse un file e print server Microsoft agendo da Primary Domain Controller (PDC) o come Backup Domain Controller, può inoltre prendere parte ad un dominio Active Directory. Samba fu sviluppato originariamente per UNIX da Andrew Tridgell alla Università Nazionale Australiana. Samba, quindi, è un pacchetto software che dà all'amministratore flessibilità e libertà in termini di installazione, configurazione, e scelta di sistema operativo e hardware. Grazie a questa ampia offerta, Samba è diventato molto popolare, e continua ad esserlo, ogni anno sempre di più fin dal suo rilascio nel 1992. In questo articolo impareremo a condividere le risorse di rete tra Linux e Windows e viceversa. Linux e le risorse condivise con Windows Il nome "samba" deriva dall'inserzione di 2 vocali nel nome del protocollo usato da Microsoft "SMB" (server message block). Originariamente si chiamava smbserver ma fu cambiato a causa dell'azienda "Syntax" che vendeva un prodotto chiamato TotalNet advanced Server e possedeva il marchio SMBserver. Iniziamo... la condizione base per usare samba è avere una macchina con una qualsiasi distribuzione Linux installata, Samba client , Samba Server e smbfs sono solitamente tra i pacchetti installati di default, ma se così non fosse basta lanciarli col vostro package manager oppure andare sul sito ufficiale di Samba - http://www.samba.org - e scaricarlo. Fatta l’installazione aprite una shell e scrivete: Samba configura share (condivisioni) per le directory UNIX scelte (incluse le sottodirectory). Queste appaiono agli utenti di Microsoft Windows come normali cartelle di Windows accessibili via rete. Gli utenti Unix $ smbclient -L ip server-samba ip è l’indirizzo della macchina dove sono condivisi i file, se si richiede una password immettetela. Apparira’ una schermata simile a 10 Sistema quella riportata nel riquadro 1. Come si può vedere appaiono il nome della macchina (Machine_Name), il sistema operativo e poi una lista di voci. Quella che a noi interessa è Sharename che e’ il nome della condivisione e in questo caso particolare avremo: D. A questo punto occorre creare una cartella dove visualizzare ciò che vogliamo vedere delle condivisioni col comando mkdir. $ mkdir /home/Machine_Name/shared user@machine:~$ smbclient -L 192.168.0.100 Password: (digitate semplicemente INVIO) corre configurare Samba, modificando il file smb.conf. Questo file solitamente si trova dentro /etc/samba/. In ogni caso è sempre conveniente fare una copia di backup di questo file per evitare di compiere modifiche “pericolose”. # cd /etc/samba # cp smb.conf smb.conf.orig # emacs smb.conf Aperto questo file ne cancelleremo tutto il contenuto e lo sostituiremo con quanto riportato nel riquadro 2 presente in fondo all’articolo. Domain=[Machine_Name] OS=[Windows x.y] Server=[Windows 2003 LAN Manager] Sharename Type Comment Finita la sezione [global] si passa ai vari servizi. --------- ---- ------- Ipotizziamo che i nostri utenti siano: Pippo, Pluto D Disk e Paperino e che siano diADMIN$ Disk Amministrazione remota stribuiti in tre gruppi: Lavoro (utente Pippo), Casa (utenDomain=[Machine_Name] OS=[Windows x.y] Server=[Windows 2003 LAN Manager] te Pluto) e Sport (utente PaServer Comment perino). In questo caso potremmo creare un servizio, --------- ------come se fosse una share, Workgroup Master di interscambio globale a --------- ------cui tutti gli utenti hanno acRiquadro 1 cesso sia in lettura che in una volta montata dentro la nostra cartella scrittura, ma non vogliamo che ognuno possa la risorsa di rete desiderata col comando semodificare/cancellare i file di un altro,usando guente : il smb.conf, in questo modo: IPC$ IPC IPC remoto $ mount -t smbfs //192.168.0.100/ D /home/Machine_Name/shared nella cartella /home/Machine_Name/shared avremo tutto quel che si trova nella risorsa di rete D. Nel caso ci siano user e passwd basta aggiungere l’opzione -o come l’esempio sotto riportato: mount -t smbfs -o username=username, password=password //192.168.0.100/ D /home/Machine_Name/shared NB: controllate sempre i permessi. Windows e le risorse condivise di Linux Per visualizzare sulle macchine windows il contenuto delle directory lnux condivise oc- [Exchange] comment = exchange user = %S path = /home/samba/exchange browseable = yes writeable = yes public = yes l’opzione user = %S permette l’accesso a questo servizio da parte di qualunque utente riconosciuto da samba.Path indica il percorso della directory condivisa, a patto di settare i permessi giusti affinché la directory /home/samba/pub sia visibile dagli utenti. Poi potremmo voler fare una condivisione per ogni gruppo alla quale solo gli utenti di quel 11 Sistema gruppo possono accedere sia in lettura che in scrittura, così: comment = Server Printer [Gruppo] printer name = printer_name comment = Group reserved folder public = no user = %S writeable = no path = /home/samba/%G printable = yes browseable = yes browseable = yes writeable = yes Anche qui settate i permessi giusti affinché la directory /var/spool/lpd/printer_name sia visibile dagli utenti. public = no La variabile %G individuerà, di volta in volta, a quale delle sottocartelle, che si chiamano così come i gruppi (Lavoro, Casa e Sport), indirizzare il servizio. Anche in questo caso occorre settare i permessi giusti affinché le directory /home/samba/Lavoro, /home/samba/Casa e /home/samba/Sport siano visibili dagli utenti. Se si volesse creare un servizio di utilità accessibile a tutti ma in sola lettura e dove solo un utente, adeguatamente autorizzato, possa scrivere si può procedere come segue: [BullettinBoard] comment = Bullettin Board user = %S path = /home/samba/BB browseable = yes ready only = yes public = yes admin users = Paperino l’opzione admin users = permette di identificare un utente come amministratore di quel servizio. Anche in questo caso ricordo di settare i permessi giusti affinché la directory /home/samba/BB sia visibile dagli utenti. Volendo estendere i diritti di amministratore ad un intero gruppo si può procedere cosi: admin users = @Sport Potrei continuare pressapoco all’infinito col fare esempi, ma siccome mi è seccato, mi fermo qui, aggiungendo soltanto una sezione di esempio per le stampanti: [SharedPrinter] user = %S path = /var/spool/lpd/printer_name Configurazione delle macchine Windows Vediamo adesso cosa occorre impostare sulle macchine Windows. Per prima cosa abilitate la Condivisione di Files e Stampanti: dal menu Start aprite Risorse di Rete. Poi fate click su “Visualizza Connessioni di Rete” dal menu sulla sinistra della finestra. Quindi selezionate la vostra connessione di rete LAN e dalla finestra “Operazioni di Rete” scegliete “Cambia impostazioni della connessione”. Dalla finestra che si apre verificate che la connessione stia usando “Condivisione file e stampanti”. In caso contrario installatela. Nella stessa finestrella fate doppio click sulla voce “Protocollo Internet (TCP/IP)” e assegnate alla macchina un indirizzo IP e una subnet mask coerenti con quelle presenti nella vostra rete LAN. Infine dal menu Start fate click col pulsante destro su “Risorse del Computer”, scegliete la scheda “Nome Computer” e cliccate su “Cambia”. Compilate il campo “Nome Computer” (questo sarà d’ora in poi il nome con cui il PC comparirà nella rete) e il campo “Gruppo di Lavoro”. Il campo Gruppo di Lavoro servirà a raggruppare tutte le vostre macchine della LAN e dovrà essere identico su tutti i PC. Ora bisogna impostare le condivisioni. Aprite una qualsiasi cartella del PC, andate nel menu “Strumenti” -> “Opzioni Cartella” -> “Visualizzazione” e togliete il segno di spunta alla voce “Utilizza condivisione file semplice”. Quindi navigate nel vostro filesystem alla ricerca delle cartelle che volete condividere. Quando ne trovate una, fateci click col pulsante destro e scegliete “Condivisione e Protezione”. Nella scheda “Condivisione” potete impostare 12 Sistema il nome della condivisione e le autorizzazioni di accesso dalla rete alla cartella per gli utenti presenti sul PC. Nella scheda “Protezione” potete impostare i permessi di accesso degli utenti locali. permessi negati hanno la precedenza su quelli concessi! Se ad un utente viene negato il permesso di accesso dalla scheda “Protezione”, questo non potrà accedere alla cartella nemmeno se abilitato attraverso la scheda “Condivisione” Quindi aprite Konqueror o Firefox e nella barra degli indirizzi digitate: Quache esempio pratico su Linux: Nell’ipotesi che usiate SUSE, selezionate System e poi System Services (Runlevel) e abilitate i seguenti servizi: Quindi spostatevi nella sezione “Global” e configurate le seguenti voci: localhost:901 Alla richiesta di login, inserite root con relativa password. Ora cliccate sul pulsante “Password”; nella schermata che vi compare dovete aggiungere gli utenti configurati sulle altre macchine, con lo stesso nome di login e la stessa password. • OS Level = 2 • Preferred Master, Local Master, Domain Master = No nmb, smb, smbfs, xinetd A questo punto, ritornati nella schermata principale di Yast, andate su Network Services -> Samba Server. Dalla scheda Start Up / Avvio Poi spostatevi nella scheda Identity / Identità e riempite il campo Gruppo di Lavoro - Dominio con il nome del vostro gruppo di lavoro. Nella voce Domain Controller scegliete No DC e poi date un nome alla vostra macchina Linux (sarà il nome con cui il PC comparirà nella rete LAN). Aprite infine la voce Host Names e aggiungete i nomi e gli indirizzi IP delle macchine della vostra LAN. Quindi chiudete Yast. Le voci precedenti vengono utilizzate quando si imposta Samba come Controllore di Dominio di una rete Windows • server string = Metteteci quello che volete. Sarà la stringa di commento riferita alla macchina Linux che comparirà in Risorse di Rete dei PC Windows • Host allow = bisogna mettere l'indirizzo di rete della vostra LAN. Esempio: se avete una LAN con indirizzi del tipo 192.168.1.xx dovete scrivere 192.168.1. (con il punto finale!) Swat • Host deny = se avete un qualche specifico PC che volete escludere, mettete il suo indirizzo qui. Swat è l’utilità di configurazione di Samba via browser. Non è strettamente necessario utilizzare swat per le configurazioni che seguiranno, ma spesso risulta essere una via semplice e che, comunque, faccia bene conoscere più strumenti di configurazione. • User allow = metteteci i nomi degli utenti che avete poco fa inserito • root = sarà l'amministratore di Samba. Metteteci root Condivisione di files e cartelle Ora non resta che condividere files e cartelle. In KDE cliccate col tasto destro sulla cartella da condividere andate alla voce “condivisione” e spuntate la voce “Enable local network file sharing” e la voce “Advanced sharing” per entrare nella gestione avanzata delle condivisioni. Dall’elenco delle directory condivise selezionate quelle su cui volete avere accesso anche in scrittura e scegliete “Modifica”. Poi spuntate le voci Public e Writable A questo punto, attraverso il pulsante More 13 Sistema Samba Option, potete entrare nella scheda Users / Utenti. Lì potrete vedere l’elenco degli utenti che avete inserito prima. Per ogni utente potrete cambiare le impostazioni di lettura, scrittura, amministrazione come meglio credete. re in grado di navigare nelle risorse condivise della rete attraverso il comando smb://nome_del_PC_Windows digitato nella barra degli indirizzi di Konqueror. In alternativa è possibile usare il programma Smb4k. Seguendo la stessa procedura potrete inoltre aggiungere nuove cartelle condivise, oppure cambiare le impostazioni di quelle già condivise, oppure ancora potrete impostare permessi differenziati di accesso degli utenti Samba. Le finestre sono parecchio intuitive. Konqueror e Nautilus con SAMBA In fig. 1 e 2 abbiamo un esempio di richiesta di autenticazione e visualizzazione dei pc delle LAN visibili con Nautilus, mentre in fig. 3 abbiamo la stessa operazione effettuata invece con Konqueror. Discorso simile vale per GNOME. Esplorazione della LAN Se tutto è andato a buon fine, dovreste esse- Figura 1 Figura 2 Figura 3 AntoFraGe 14 Sistema [global] #nome del gruppo di lavoro (il cancelletto indica un commento) workgroup = WORKGROUP hosts allow = 192.168.0.255 #le macchine (PC) aventi accesso a Samba, nell’ esempio tutta la rete che va 192.168.0.1 a 192.168.0.255 interfaces = 192.168.0.1/24 192.168.0.2/24 #individua la o le schede di rete abilitate per samba. Nell’ esempio si ipotizza che il server abbia #due schede di rete: 192.168.0.1 e 192.168.0.2, il /24 sta ad indicare la maschera di rete. wins support = no #il nostro pc non ha il compito di registrare e risolvere i nomi windows, quindi questo #supporto non occorre security = user #questo settaggio permette di autenticare in maniera sicura i nostri utenti al server Samba log file = /var/log/samba/log.%m #con questa opzione si scrive un file di accesso a Samba che verrà aggiornato per ogni macchina che si #connette. log level =2 #meglio non aumentare questo livello se non ci si vuole ritrovare dei log pieni di immondizia. load printers = yes printing = bsd printcap name = /etc/printcap #permette a Samba di mettere a disposizione della rete le stampanti configurate #sul server. Da notare che non sempre printcap si trova dentro /etc, occorre #localizzarlo nella propria distribuzione. dns proxy = no #non si vuol agire da DNS netbios name = SambaServer #questo è il nome con il quale il PC sarà visto in rete, personalizzabile a #piacere. browseable = yes #obbliga la comparsa del nome netbios nei browsers encrypt passwords = yes #utilizzate questa opzioni se volete che i vostri client vengano riconosciuti #dal sistema di autenticazione di GNU/Linux smb passwd file = /etc/samba/smbpasswd #file dove sono registrate le passwords degli utenti config file = /etc/samba/smb.conf.%u #questa opzione ci consente di utilizzare un altro file di configurazione al #posto di smb.conf, per esempio: #smb.conf.user nel caso di un file personalizzato per l’utente user, o usando %G #per esempio: smb.conf.administrators se administrators è il gruppo primario di #appartenza per quell’utente. Attenzione: tutti gli utenti e i gruppi di cui #loro fanno parte devono essere #inseriti sul sistema GNU/Linux anche se le loro passwords possono essere #diverse da quelle di Samba. Riquadro 2 - Esempio di file smb.conf 15 Sistema Chmod e i permessi sui file Introduzione C vidiamo i successivi in gruppi di 3 - | rw- | r-- | r-- | osa sono i chmod? Ve lo siete mai chiesto? Ne avete sentito mai parlare? e diamogli un significato (vedere il riquadro 2). Se non ne avete mai sentito parlare ecco che lo faccio io, quindi dopo non potrete più dire “Non È/Non è una directory | Permessi proprietario so cosa siano i ch| rwmod”. ;-) Detto in parole molto semplici i chmod sono i permessi di un file o una directory che fanno capire al sistema cosa si può fare o non fare per la risorsa relativa. Prendiamo in considerazione il seguente file: -rw-r--r-- 1 lemoeb sviluppo 2006-07-03 14:24 file1.txt -rw-r--r-- Bene ora che li abbiamo individuati andiamo a capire come interpretarli. 120 2006-07-31 16:17 3 root -rw-r--r-- 1 lemoeb users 836 2006-04-18 13:30 -rw-r--r-- 1 lemoeb users 3309 2006-04-18 13:30 drwxr-xr-x 2 lemoeb sviluppo 144 2006-11-15 10:42 -rw-r--r-- 1 lemoeb sviluppo 32 2006-07-03 14:24 -rw-r--r-- 1 lemoeb sviluppo 40 2006-07-03 14:30 file2.txt • x => Il file in questione è eseguibile 32 Da quanto detto prima ci rendiamo subito conto che non è una directory, il proprietario gambas può scriverlo e leggerlo, hp_swap.inc.php HP_swap_load_order.php il gruppo può leggerlo e tutti gli altri utenti posimage sono leggerlo. file1.txt drwxr-xr-x • w => Il file in questione è modificabile/ scrivibile | Come leggere i permessi su file e directory ormai credo che sia molto chiaro, ma come li impostiamo? Dove sono i chmod o permessi dei file? Presto detto nella prima colonna. esempio: • r => Il file in questione è leggibile r-- Come impostarli ottenendo un output simile a quello riportato nel riquadro 1. • d => Il file in questione è una directory | Nel caso fosse stato una directory, il primo carattere al posto del segno “-” sarebbe stato “d” # ls -l I permessi sui file/directory sono identificati da 4 caratteri distinti : r-- Riquadro 2 Per renderci subito conto di cosa sono i chmod apriamo il nostro caro terminale e digitiamo: Come si leggono | Ora è molto più chiaro no? Il file preso in considerazione non è una directory, è leggibile/modificabile da parte del proprietario e soltanto leggibile da parte degli appartenenti allo stesso gruppo del proprietario e dagli altri utenti. Per ogni singolo file o per ogni singola directory possiamo decidere chi può fare cosa e chi no! root | Permessi gruppo | permessi utenti | Decidiamo ora di voler dare il permesso di Riquadro 1 scrittura/modifica anche al gruppo di appartenenza, cioè al gruppo sviluppo. Per impostare i permessi su un file/directory si utilizza il comando chmod che sta per change mode secondo la seguente sintassi # chmod PERMESSI file_su_cui_ modificare_i_permessi dove i permessi possono essere modificati utilizzando il metodo simbolico o quello ottale. Sorvolando per ora sul primo carattere suddi16 Sistema Metodo Simbolico Anche se definito da molti il più intuitivo e semplice, lo trovo personalmente più complicato ma è questione di gusti ;-) La forma sintattica per utilizzare questo metodo è la seguente: A_CHI_DARE_I_PERMESSI - COSA_ FARE - QUALI_PERMESSI_DARE Nel dettaglio : A_CHI_DARE_I_PERMESSI può assumere i seguenti valori : • u => Utente e/o proprietario del file • g => Gruppo di appartenenza o gruppo del proprietario file • o => Tutti gli altri utenti • a => Tutti gli utenti indistintamente (è l’opzione di default) COSA_FARE può assumere i seguenti valori : • + => Aggiunge i permessi a quelli già esistenti • - => Rimuove i permessi da quelli già esistenti • = => Imposta i permessi eliminando quelli già esistenti QUALI_PERMESSI_DARE può assumere i seguenti valori : • r => Permesso di lettura • w => Permesso di scrittura • x => Permesso di esecuzione • s => Effettua il SET USER ID (Ne parleremo più avanti) • t => Imposta lo Sticky Bit (Ne parleremo più avanti) Viste ora le opzioni per ogni singola voce andiamo a permettere la scrittura del file in questione anche al gruppo utilizzando il seguente comando : # chmod g+w file1.txt lanciando ora il comando ls noteremo un cambiamento nei permessi del file : -rw-rw-r-- 1 lemoeb sviluppo 2006-07-03 14:24 file1.txt 32 Come si nota ora il file è modificabile anche dal resto del gruppo e non soltanto dall’utente proprietario. Metodo Ottale Il metodo ottale, ha le stesse funzionalità del metodo Simbolico, con la differenza che ad impostare i permessi sono dei numeri e non delle lettere. Escludendo per ora lo STICKY BIT e il SET USER ID possiamo dire che l’impostazione dei permessi avviene secondo la seguente sintassi: PERMESSI_PROPRIETARIO - PERMESSI_ GRUPPO - PERMESSI_ALTRI_UTENTI I permessi vengono impostati effettuando la somma dei numeri secondo la seguente tabella : Numero Permesso 4 Lettura 2 Scrittura 1 Esecuzione Facciamo un esempio pratico per chiarire meglio la cosa prendendo in considerazione il file di prima. -rw-r--r-- 1 lemoeb sviluppo 2006-07-03 14:24 file1.txt 32 Partendo dai permessi sopra riportati, vogliamo fornire al proprietario i permessi di lettura,scritture ed esecuzione, al gruppo quelli di lettura e scrittura e agli altri utenti soltanto quelli di lettura. Lanceremo il seguente comando al prompt: # chmod 764 file.txt Perché proprio quel numero? È presto detto: Permessi del proprietario: 4 (Lettura) + 2 (Scrittura) + 1 (Esecuzione) = 7 Permessi del gruppo: 4 (Lettura) + 2 (Scrittura) = 6 Permessi altri utenti: 4 (Lettura) = 4 Eseguendo ora il comando ls noteremo i nuovi permessi assegnati : 17 Sistema -rwxrw-r-- 1 lemoeb sviluppo 2006-07-03 14:24 file1.txt ATTENZIONE 32 L’uso di questo Bit può essere particolarmente pericoloso, quindi se ne consiglia l’utilizzo soltanto dove ce ne sia veramente necessità. Sticky Bit, User id Abbiamo prima menzionato lo Sticky Bit e il Set User id, cosa sono questi permessi particolari? È presto detto. Directory e File • Sticky Bit L’impostazione dei permessi sulle directory avviene nel medesimo modo dei file, quindi utilizzando il metodo ottale o quello simbolico, c’è però da notare una piccola differenza per quanto riguarda il significato dei vari permessi. È il permesso per un utente proprietario di una determinata directory di cancellare i file presenti in essa anche se non possiede i permessi di scrittura su tali file. Questa è l’impostazione di default nei sistemi Unix Like. Per rendersi meglio conto della cosa guardate la tabella contenuta nel riquadro 3. Nel caso non si volesse permettere al proprietario di cancellare i file senza possedere il permesso di scrittura su di esso, si dovrà impostare lo sticky bit Conclusioni Bene in questo articolo abbiamo visto come modificare i permessi relativi a determinate operazioni che un utente o un gruppo può/non può effettuare sui file. • Set user id Questo particolare permesso viene impostato quando si ha la necessità di far eseguire un comando/script da altri utenti, ma utilizzando i permessi del proprietario anche se non lo si è. Ora non andate in giro a dire che non conoscete il significato di chmod. Alla prossima. Permesso Significato su file Lettura Il file risulta leggibile Scrittura Il file risulta scrivibile/modificabile Esecuzione Il file può essere eseguito Significato su directory La directory presenta la lista dei file È possibile creare nuovi file nella directory È possibile accedere all’interno della directory Riquadro 3 Lemoeb 18 Sistema Criptare un FS e montarlo al Login Un vecchio adagio recita “se vuoi conoscere davvero una persona, fruga sul suo harddisk”. Con le capienze degli attuali dischi rigidi, questa massima può essere ogni giorno più vera, perché ognuno di noi può registrare sul proprio sistema l’intera propria storia informatica: scambi di e-mail, conversazioni fatte in chat, segnalibri del browser, documenti fiscali e finanziari, foto di famiglia... Ognuno di noi, insomma, sul proprio computer può avere dati che non gradisce che altri vedano. Se è vero che i sistemi GNU/Linux, soprattutto se aggiornati e sottoposti ad un serio hardening, sono relativamente sicuri contro attacchi remoti, è altrettanto vero che non c’è nessun tipo di protezione seria in caso di attacchi da parte di persone che abbiano accesso fisico alla macchina. I meccanismi di protezione del login possono essere frantumati senza perder neanche troppo tempo, basta inserire una distro live nel lettore e tutti i nostri dati sono lì, aperti a chiunque rovisti (ed abbia un minimo di competenza). L’unica possibilità per mettere al riparo da occhi indiscreti dei documenti è che siano crittografati, resi, perciò, illeggibili a chiunque non conosca la password. dando a lui il lavoro di montaggio e smontaggio del file-system crittato al momento dell’accesso. L’ideale è, ovviamente, crittare la propria cartella home, dove risiedono documenti ed impostazioni. I comandi che riporterò in questo articolo sono testati con Kubuntu 6.10 (Edgy Eft) e 7.04 (Feisty Fawn); dovrebbero essere utilizzabili in maniera analoga sulle maggiori distribuzioni. Preparare il kernel Il metodo di crittazione che si è scelto è dmcrypt, installato a livello kernel e che interagisce con le API crypto per permettere una crittazione “al volo” dei dati. L’algoritmo di codifica che useremo è l’AES 256bit (approvato dalla National Security Agency statunitense). Prima di tutto, accertiamoci se il nostro kernel già supporta l’algoritmo AES, usando il comando $cat /proc/crypto Se il supporto per l’uso di AES è già caricato, dovrebbe comparire un output di questo tipo: name : aes driver : aes-generic module : aes priority : 100 1. Trasparenza: non deve essere necessario decodificare il documento ogni volta che lo si usa per ricodificarlo una volta modificato; refcnt : 2 type : cipher blocksize : 16 2. Semplicità: non devono esserci procedure tediose per accedere ai dati protetti, sennò dopo una settimana ci stufiamo; min keysize : 16 3. Velocità: non deve esserci un significativo decremento prestazionale a seguito della crittazione dei dati. $ sudo modprobe aes Affinché la crittazione sia efficace e non ci intralci il lavoro quotidiano, i requisiti che un utente medio richiede sono fondamentalmente: Il modo più comodo per raggiungere questi traguardi è usare un modulo di crittazione fornito da Linux, interfacciandoci poi con PAM (il sistema di autenticazione dell’utente) deman- max keysize : 32 Se così non fosse, AES può essere caricato con il comando Successivamente, il modulo sarà caricato automaticamente quando necessario. A questo punto installiamo i pacchetti necessari alla creazione delle partizioni crittate: 19 Sistema $ sudo apt-get install dmsetup cryptsetup mapper/homesegreta che si comporterà esattamente come una partizione reale. Carichiamo quindi il modulo dm-crypt del kernel Ora creiamo un file-system nella partizione virtuale $ sudo modprobe dm-crypt $ sudo mkfs.xfs /dev/ mapper/homesegreta Se tutto ha funzionato, è possibile avere da dm-crypt l’elenco dei target supportati con $ sudo dmsetup targets Dovrebbe essere fornito un output simile a questo crypt v1.3.0 striped v1.0.2 linear v1.0.2 error v1.0.1 Creare una partizione crittata È necessario avere una partizione completamente vuota che in questi esempi chiameremo /dev/sdd1. L’uso dei prossimi comandi distruggerà irrimediabilmente il contenuto di questa partizione, quindi accertatevi che sia vuota e che abbiate fatto un buon backup. Utilizziamo quindi il comando cryptsetup per creare un volume logico collegato alla partizione: $ sudo cryptsetup -y create homesegreta /dev/sdd1 Verrà domandata una password che sarà la chiave (non modificabile) di crittazione della partizione, quindi cercatela particolarmente lunga, difficile, non mnemonica, con maiuscole minuscole numeri e punteggiatura; soprattutto non deve essere una delle vostre password di accesso. Per una volta (una sola!) facciamo un’eccezione e scriviamola su un foglietto. L’opzione -y serve a far richiedere due volte la stessa password in modo da esser certi di non aver fatto errori di immissione, altrimenti i nostri dati andranno persi per sempre. Montare la partizione crittata e copiarci dentro la nostra home Successivamente montiamo la nostra homesegreta in /tmp per potervi copiare sopra i nostri dati. Da ora in poi ad utente deve essere sostituito il nostro nome d’accesso. $ sudo mkdir /tmp/homesegreta $ sudo mount /dev/mapper/ homesegreta /tmp/homesegreta $ sudo rsync -aHPvu /home/ utente/ /tmp/homesegreta/ Il comando rsync si occupa di copiare tutti i dati dalla nostra home alla partizione crittata. Fatto questo, abbiamo una partizione contenente tutti i nostri dati crittati. Ma all’avvio sono illeggibili, dobbiamo far sì che automaticamente all’accesso il sistema monti la nostra home, sennò non potremo fare il login. Per far questo dobbiamo chiedere aiuto a PAM (Pluggable Authentication Modules), il sottosistema che si occupa dell’autenticazione degli utenti. A lui faremo fare il lavoro sporco. Installiamo i moduli di cui PAM ha bisogno per montare l’unità crittata $ sudo apt-get install libpam-mount openssl Modifichiamo (come root) quindi il file /etc/ pam.d/common-auth ed aggiungiamo questa riga in fondo al file auth optional pam_ mount.so use_first_pass Ora possiamo controllare che il volume sia stato creato con il comando Modifichiamo poi (sempre come root) anche il file /etc/pam.d/common-session ed aggiungiamo questa riga in fondo al file $ sudo dmsetup ls session optional Dovrebbe apparire la lista dei volumi crittati, come Questa ultima modifica ha l’effetto collaterale, talvolta un po’ sgradevole, di far richiedere la password ad ogni cambio utente tramite i comandi su. homesegreta (254, 0) Il volume virtuale sarà montato come /dev/ 20 pam_mount.so Sistema A questo punto dobbiamo spiegare a PAM come montare il dispositivo. Una piccola precisazione, prima. All’inizio dell’articolo ho suggerito di usare una password difficoltosa, che non fosse la password di login al computer. Perché? Il motivo principale è che buona norma vuole che periodicamente si modifichi la password di login al computer; la password di crittazione della partizione invece non potrà essere mai cambiata una volta generata; secondariamente, se la password di accesso fosse compromessa, non si desidera che anche quella di crittazione lo sia. Ora troviamo un modo efficace per nascondere la password di crittazione sul nostro PC in modo che venga automaticamente utilizzata al login. Il modo più semplice è crittare la password del volume, utilizzando la password di login come chiave. Per far ciò utilizziamo OpenSSL $ sudo sh -c “echo ‘passworddifficiledelvolumecrittato’ | openssl aes-256-ecb > / home/utente.key” Verrà chiesta una password che questa volta dovrà essere necessariamente la password che usiamo al login. Verrà quindi creato il file / home/utente.key contenente la password crittata. Ultimo passo: modificare il file /etc/security/ pam_mount.conf aggiungendo la linea volume utente crypt - /dev/sdd1 /home/utente cipher=aes aes256-ecb /home/utente.key In alternativa, se non volete creare il file /home/ utente.key è possibile (anche se lo sconsiglio) utilizzare per la crittazione del volume la stessa password di login, e chiedere a PAM di fornire a dm-crypt quella password anziché la chiave crittata; in questo caso la linea poco sopra diventa volume utente crypt - /dev/sdd1 /home/utente cipher=aes - - Da ultimo, se vogliamo che la nostra home crittata venga smontata quando facciamo logout, modifichiamo (da root) il file /etc/login. defs attivando l’opzione CLOSE_SESSIONS yes A questo punto potete riavviare il sistema, fare login e controllare con il comando mount il successo dell’operazione che dovrebbe darvi una linea del tipo /dev/mapper/_dev_sdd1 on / home/marco type xfs (rw) Se tutto funziona (ed avete un backup completo) è il momento di cancellare le tracce: date il comando history -c per cancellare le tracce della password che avevate digitato alla creazione, poi da telinit 1 smontate il volume crittato con umount /home/utente, cancellate il contenuto della vecchia home (che non è crittata). Questi passi vanno fatti con estrema attenzione, controllando sempre almeno 3 volte quel che stiamo andando a fare, perché ad un rm -rf non c’è rimedio e non voglio avere i vostri dati sulla coscienza. Fatto tutto, ricordatevi di distruggere il foglietto con la password! Rolly 21 Sistema Installare Apache, PHP e MySQL Introduzione Linux, come tutti sappiamo, è un sistema che si presta molto bene a fungere da server, in particolar modo da server web. Il più famoso è sicuramente Apache (http://httpd.apache. org), che è disponibile per molte piattaforme, Linux, Windows, FreeBSD, e molte altre. Raccomando di scaricare la versione 2.2.4, che è la più recente a disposizione al momento della stesura di questo articolo. Apache da solo, però, è molto limitato per la gestione di un sito web, perché permette di fornire al visitatore del nostro sito solo pagine web statiche e file. Per ovviare a questo problema ci viene in aiuto PHP (http://www.php.net/), il famoso linguaggio di scripting Open Source. A sua volta, però, PHP richiede un database per poter memorizzare e consultare facilmente le informazioni di cui neccessitano i nostri script e MySQL (http://www.mysql.com/) è uno dei migliori DBMS in circolazione, ed è fornito anch’esso sotto la licenza GPL. Linux, Apache MySQL e PHP formano la piattaforma LAMP (http://it.wikipedia.org/wiki/ LAMP_(piattaforma) ), molto potente e diffusa. Dopo questa breve premessa, passiamo alla guida pratica per installare e configurare questi tre potentissimi strumenti liberi. Per prima cosa è necessario procurarsi i programmi e, per mantenere questa guida il più indipendente dalla distribuzione utilizzata, il metodo migliore è utilizzare i tarball contenenti i sorgenti. Installazione di Apache Una volta scaricato Apache da http://httpd.apache.org/, scompattiamolo $ tar xvzf httpd-2.2.4.tar.gz Naturalmente se avete scaricato una versione diversa dovete adattare anche il nome del file nel comando. Passiamo quindi alla cartella appena scompattata e vediamo le opzioni disponibili per la compilazione: $ cd httpd-2.2.4 $ ./configure --help Vi accorgerete subito che le opzioni sono molte, ho selezionato per voi le più rilevanti, -- enable-rewrite che abilita il mod_rewrite e --enable-so che permette di attivare ulterio- ri moduli in fase di runtime. Lanciamo quindi configure e make rispettivamente per impostare le opzioni ed avviare la compilazione: $ ./configure --enablerewrite --enable-so $ make Terminata la compilazione, bisogna installare Apache, eseguendo come root il classico # make install A questo punto non resta che testare se Apache funziona, quindi avviamolo, sempre come root: # /usr/local/apache2/ bin/apachectl start Andiamo ora con il nostro browser preferito all’indirizzo http://localhost/ e dovremmo vedere un trionfale “It Works!” a confermarci l’avvenuta installazione e avvio di Apache. Preciso di default la document root, cioè la cartella radice del server è /usr/local/ apache2/htdocs. A questo punto fermiamo il server per procedere all’installazione degli altri programmi necessari, eseguendo come root # /usr/local/apache2/ bin/apachectl stop Installazione di MySQL A questo punto, dobbiamo installare MySQL, non PHP, perché questo richiede la presenza del database per potersi compilare correttamente con il modulo per la connessione. Andiamo su http://www.mysql.com/ e scarichiamo la versione 5.0.x, l’ultima stabile al momento della stesura dell’articolo. Facciamo attenzione a scaricare l’edizione “Community Server”, quella Open Source, sotto forma di sorgenti, che troviamo in fondo alla pagina che elenca i vari metodi per ottenere MySQL. Possiamo trovare facilmente i sorgenti nella pagina cercando il testo “Compressed GNU TAR archive” con il browser (con FireFox basta premere Alt+F3). Una volta scaricato il file, scompattiamolo, accediamo alla directory e 22 Sistema lanciamo configure $ tar xvzf mysql-5.0.33.tar.gz $ cd mysql-5.0.33 $ ./configure questa volta non è necessario lanciare ./configure --help perché le impostazioni predefinite dovrebbero andare bene praticamente per tutti, ma nulla vieta di modificarle. Se ./ configure non riporta errori possiamo passare alla compilazione e, come al solito come root, all’installazione vera e propria $ make # make install Per il suo corretto funzionamento, MySQL richiede un suo utente e un suo gruppo nel sistema, provvediamo quindi a crearli, nel caso non fossero già presenti, lanciando i seguenti comandi come root: # groupadd mysql # useradd -g mysql -s /bin/false mysql con groupadd aggiungiamo il gruppo mysql, mentre con useradd aggiungiamo l’utente mysql, appartenente all’omonimo gruppo e gli assegniamo /bin/false come shell di login, in modo che non gli sia possibile fare il login nel sistema. Per maggiori dettagli su questi comandi vi consiglio di leggere l’ottimo articolo di Lemoeb che trovate sul numero 8 di TopoLinux. Adesso è necessario impostare correttamente i permessi alle cartelle usate da MySQL, con questi comandi, sempre come root: default è vuota. Per fare ciò eseguiamo il comando # mysqladmin -u root password [nuova password] Naturalmente bisogna sostituire [nuova password] con la password che vogliamo utilizzare. Adesso è il momento di fermare MySQL per passare all’installazione di PHP, con il comando # mysqladmin -u root -p shutdown Installazione di PHP Una volta scaricato il file da http://www.php. net/, scompattiamolo ed entriamo nella directory: $ tar xvzf php-5.2.0.tar.gz $ cd php-5.2.0 A questo punto, come per l’installazione di Apache, lanciamo $ ./configure --help per vedere le opzioni disponibili, che sono ancora più di quelle di Apache. Genericamente, $ ./configure --with-apxs2=/ usr/local/apache2/bin/apxs -with-gd --with-mysql dovrebbe soddisfare la maggior parte degli utenti, se pero desideraste una configurazione diversa sarebbe sufficiente modificare le opzioni passate a configure. Su Debian Sarge ho incontrato dei problemi di dipendenze, per la mancanza di libxml2-dev, per installarlo lanciamo come root # chown -R root:mysql /usr/local/mysql # apt-get install libxml2-dev # chown -R mysql:mysql /usr/local/mysql/var su questa distribuzione è stato necessario anche modificare i parametri passati a configure, in questo modo: Adesso siamo pronti per testare se il nostro database funziona, avviamolo e verifichiamo se è correttamente in esecuzione con # mysqld_safe --user=mysql & # mysqladmin ping Avrete notato la “&” dopo il primo comando, ha lo scopo di mandare il processo in background. Il secondo comando dovrebbe restituire “mysqld is alive” come output, altrimenti significa che c’è qualche problema. Un altra cosa importantissima è cambiare la password di root (di MySQL, non del sistema!), che di $ ./configure --with-apxs2=/ usr/local/apache2/bin/apxs -with-gd --with-mysql --withzlib-dir=/usr/include A questo punto compiliamo php: $ make terminata la compilazione, lanciamo i seguenti comandi come root per completare l’installazione. 23 Sistema # make install # cp php.ini-dist /usr/local/ apache2/conf/php.ini # ln -s /usr/local/apache2/ conf/php.ini /etc/php.ini Come chiaramente intuibile, il primo installa PHP, mentre il secondo copia il php.ini di default in /usr/local/apache2/conf/php. ini. Il terzo non è indispensabile, ma suggerisco vivamente di lanciarlo: crea un link simbolico al php.ini nella cartella /etc, dove normalmente risiede questo file, mentre io ho preferito posizionarlo nella cartella dove si trova anche il file di configurazione di Apache, per una questione di comodità. Configurare Apache per usare PHP Una volta effettuata l’installazione di PHP, dobbiamo “istruire” Apache affinché passi a questo i file .php, al fine di interpretarli. Per fare questo, sempre come root, editiamo / usr/local/apache2/conf/httpd.conf e aggiungiamo le linee seguenti linee, se non sono presenti: LoadModule php5_module modules/libphp5.so AddType application/x-httpd-php .php Potrebbe darsi che le linee siano presenti, ma commentate, cioè precedute da un #, che le fa ignorare ad Apache al momento della lettura del file di configurazione; in questo caso cancelliamo semplicemente il cancelletto. Bisogna ora trovare la linea DirectoryIndex index.html e sostituirla con che index.htm e index.php. Il file indice è il file che viene visualizzato automaticamente se si accede al server digitando semplicemente il nome della directory. Ad esempio, quando accediamo a http://localhost/ richiediamo la risorsa /, cioè la root di Apache, che grazie all’impostazione di prima cerca in quella cartella un file con il nome uguale ad uno di quelli impostati nella direttiva DirectoryIndex, nell’ordine in cui sono scritti. Salviamo ora il file. Conclusione A questo punto ci basterà avviare il server e visualizzare un file che creeremo appositamente per verificare il corretto funzionamento di PHP, tutto ciò verrà fatto eseguendo da root questi comandi: # /usr/local/apache2/ bin/apachectl start # echo “<?php phpinfo(); ?>” > / usr/local/apache2/htdocs/info.php Se visualizzando la pagina http://localhost/info.php apparirà una schermata che riepiloga la configurazione tutto funziona come dovrebbe, se invece appare il contenuto del file appena creato probabilmente la configurazione del file httpd.conf non è stata eseguita nel modo giusto, oppure Apache era già avviato al momento della sua modifica: per riavviarlo lanciamo come root # /usr/local/apache2/bin/ apachectl restart A questo punto la nostra piattaforma LAMP dovrebbe completamente attiva, a parte MySQL che bisogna avviare con # mysqld_safe --user=mysql DirectoryIndex index. html index.htm index.php Buon divertimento. Questa modifica dice ad Apache di usare come file indice non solo index.html, ma an- 24 Ambiente Desktop Col pinguino in sala giochi: Xmame Una domanda ai lettori… Per installarlo nelle distribuzioni Quanti di noi, fanno parte della cosiddetta “generazione dei videogames”? Quelli che hanno speso ore in sala giochi da ragazzi e ricordano nostalgici quei giochi che hanno fatto epoca, come “GHOSTS’N GOBLINS” o “PANG”? • redhat-like: Per i nostalgici, (ma non solo per loro ) è nato il progetto MAME, acronimo per Multiple Arcade Machine Emulator) è un software per PC sviluppato inizialmente per MS-DOS e in seguito per quasi tutte le macchine e sistemi operativi in circolazione, in grado di emulare varie piattaforme di gioco arcade. Lo scopo di tale emulazione è quello di documentare il funzionamento dei coin-up, preservare la storia dei videogame e di prevenire la sparizione di vecchie rarità una volta che le macchine originali abbiano cessato di funzionare per motivi di obsolescenza. • debian: yum –y install xmame • mandriva: urpmi xmame apt-get install xmame • slackware: o scaricare il pacchetto xmamex.y.z.tgz o dare da root: installpkg xmame Una volta installato il programma si può dare il via alla sua configurazione, ultimata questa si potrà iniziare a giocare, a patto di avere le ROM installate!! Come funziona MAME Xmame è la risposta per Linux del progetto MAME, ovvero un emulatore di giochi arcade. Per potere giocare a questi giochi è necessario scaricarsi l’emulatore Xmame e in seguito i vari giochi contenuti in file .zip detti ROM. Il sito di riferimento è http://x.mame.net e da qui si può scaricare l’ultima versione dell’emulatore Xmame. MAME è composto da varie parti che in pratica ricostruiscono via software tutte quelle circuiterie interne che permettono di gestire gli input dei joystick, la gestione del monitor e dei riproduttori di suoni. L’unica cosa che manca è la parte software delle macchine, cioè le ROM originali dei giochi, che per motivi di copyright non possono essere distribuite legalmente. Da un punto di vista logico MAME può essere diviso in 3 livelli: • Il primo livello si occupa dell'emulazione dell'hardware vero e proprio. Qui è possibile scaricare la versione più recente di questo software, sia già pacchettizzato per le distribuzioni più conosciute, sia disponibile sotto forma di sorgente. Il file è chiamato xmame-x.y.z.tar.bz2. • Il secondo livello contiene tutte le funzioni generali e i moduli che fanno da collante tra il primo e il terzo livello. • Il terzo livello è quello che "presenta" l'emulatore all'utente. È composto dall'interfaccia grafica (se presente) e da tutte quelle opzioni che permettono di avviare e pilotare l'emulatore. ROM… queste sconosciute… In quasi tutti i giochi arcade i dati (software, grafica, audio, ecc.) sono memorizzati in chip di memoria di sola lettura (Read Only Memory, 25 Ambiente Desktop • ROM Set Originale ROM) sebbene in alcuni casi siano utilizzati anche floppy disk, o CD-ROM. I dati contenuti in questi supporti vengono letti e riscritti in file contenenti l’esatta copia del chip da cui provengono attraverso un processo chiamato dumping. Tali file (indipendentemente dal supporto dal quale provengono) vengono chiamati ROM. anche chiamato ROM Set Parent, questo set contiene tutte le ROM del gioco che il team di sviluppo del MAME ha definito come originale (alcune volte è la versione più recente e completa del gioco, altre volte è la prima e più tradizionale, altre volte ancora è la versione mondiale o la più famosa). Le ROM di questo set contengono tutte le informazioni per lanciare il gioco. • ROM Set Clone Solitamente un gioco è composto da più ROM (alcune per l’audio, alcune per la grafica, ecc.). L’insieme di tutte le ROM di un gioco prende il nome di ROM Set. sono varianti dei giochi originali, per esempio versioni precedenti o successive o localizzate, che usano svariate ROM identiche ad altre versioni dello stesso gioco. Per risparmiare spazio queste ROM duplicate vengono incluse una sola volta nel set Parent, mentre il set Clone contiene solamente le ROM che lo distinguono dalle altre edizioni del gioco. • BIOS ROM Set Il MAME gestisce i ROM Set in 2 modi: • file CHD (Compressed Hunks of Data), contengono le immagini compresse di hard disk o cd • file ZIP contenenti tutte le ROM non sono veri e propri giochi, contengono delle ROM necessarie ad altri giochi per poter essere eseguiti. Il BIOS (Basic Input/Output System) è un insieme di routine di base che gestiscono le varie componenti hardware della macchina del gioco. Queste immagini sono particolarmente importanti per sistemi che supportano più giochi quali il Neo Geo. Otternere una ROM utilizzabile Le ROM dei giochi le potete scaricare da uno di questi siti: • http://www.mame.dk • http://www.rom-world.com I ROM Set sono gruppi di immagini delle ROM che compongono lo stesso gioco. Ci sono 3 tipi principali di ROM Set: Dovete registrarvi per potere scaricare i giochi. Riconoscerete il file del gioco perché la parte prima dell’estenzione .zip è simile al nome. In alcuni giochi, specialmente quelli della NeoGeo, dovete scaricarvi anche le ROM della casa produttrice (neogeo.zip). Si Gioca! Xmame così com’è non ha frontend e quindi bisogna specificare direttamente da linea di 26 Ambiente Desktop comando il nome del gioco. Per fare partire xmame la sintassi è: E KDE e Gnome? Un frontend per Xmame $xmame [opzioni] nomegioco Finora abbiamo lanciato xmame da console, ma non è detto che occorra sempre fare così. Sia per KDE che per GNOME esistono vali- Le opzioni di default vengono lette nei file di configurazione. Se specificate a linea di comando allora quelle del file di configurazione vengono inibite. Per avere la lista delle opzioni date il comando “xmame --help”. Il nome del gioco altro non è che il nome del file .zip esclusa l’estenzione .zip. Se per esempio ho scaricato King of Fighters 2000, che ha per nome kof2k.zip, darò il comando: de interfacce grafiche (FRONTEND) che somigliano tantissimo all’interfaccia di MAME32 per Windows. Sotto KDE basta installare kxmame e sotto GNOME … gxmame!!! Ecco qui come installarli (il discorso è identico a quello fatto per xmame) $xmame kof2k.zip • redhat-like: A questo punto parte il gioco. Se vi da errori di NOT FOUND controllate dove avete messo la ROM e specialmente se avete scaricato anche la ROM della casa produttrice (per Metal Slug dovete scaricare due file: il gioco e neogeo.zip). yum –y install {k|g}xmame • mandriva: urpmi {k|g}xmame • debian: apt-get install {k|g}xmame Una volta partito, per inserire la moneta premete 5 e per giocare (1° giocatore) premete 1. Per avere la lista delle opzioni premete TAB. Per avere la lista completa dei comandi leggete la documentazione nei sorgenti. • slackware: o scaricare il pacchetto {k|g}xmame-x.y.z.tgz 27 Ambiente Desktop o dare da root: installpkg {k|g}xmame Ecco un paio di screenshots di kxmame: In entrambi i programmi, per settare i path degli eseguibili di xmame e delle roms basta utilizzare il menù Options->Paths. Un esempio potrebbe essere: • Xmame executable: /usr/bin/ xmame.{x11,sdl} (a seconda del vostro driver video potete ave bisogno di una particolare versione dell’eseguibile) • Roms myRoms Path: /home/<username>/ A questo punto basta lanciare da File->Audit all games la scansione di tutti giochi disponibili e selezionare un gioco con un doppio click. FAQS più comuni su rom/emulatori • Gli Emulatori sono legali? ed eccone un paio di gxmame: Dipende. Ci sono certi emulatori (come quelli per la PS2) che richiedono il BIOS della macchina da simulare: se non si possiede il sistema originale (la Playstation 2 in questo caso) è illegale procurarsi il BIOS, quindi l’emulatore diventa fuori legge. Gli altri emulatori sono invece legali, sempre che l’uso che se ne faccia sia corretto. • E' vera legge delle 24 ore sulle ROMs? E’ falsa. Non esiste proprio una tale legge sulle ROMS. E’ stata inventata da qualcuno per giustficare il download/ upload di ROMS commerciali e quindi illegali. Recita più o meno così: “Se non si possiede il gioco originale le ROMS scaricate vanno cancellate entro 24 ore dal download”. • Le ROMs sono legali? Se le ROMS riproducono giochi freeware oppure di “pubblico dominio” sono legali al 100% mentre se sono ancora in commercio o ancora supportati dalla casa sviluppatrice sono illegali. E’ comunque illegale vendere ROMS freeware o di “pubblico dominio”, discorso simile alla distribuzione di giochi Abandonware • ROMs di pubblico dominio: cosa signi28 Ambiente Desktop fica? Le ROMs di pubblico dominio (public domain) sono ROMS di giochi creati da programmatori non professionisti o che comunque non lavorano per case sviluppatrici di videogiochi. Provengono anche da programmatori dilettanti che cercano una certa visibilità del loro lavoro. Queste ROMS non sono commerciali e possono essere redistribuite liberamente ma non a scopo di lucro. • I giochi Abandonware sono legali? • Certe ROMs non funzionano. Perché? Assicurati di aver scaricato e avviato l’emulatore apposito. Ci sono diversi emulatori per la stessa piattaforma e non tutti girano con lo stesso tipo di ROMS. Quelli sul sito sono quelli che si abbinano con le ROMS che offriamo. Se il problema riguarda il MAME 32 puoi trovare la soluzione nelle sul sito ufficiale dell’emulatore. • Giochi Abandonware: cosa sono? I giochi Abandonware sono quei videogiochi (o programmi) che non sono più in commercio, hanno almeno 5 anni di età e non sono supportati dalla casa produttrice: cioè non ne paga più i diritti. Generalmente si intendono come giochi per PC o Mac ma possono considerarsi tali anche le ROMS per giochi di altre piattaforme (console), purchè rispodano ai requisiti sopracitati. Il sito li offre in tutti e due le modalità. La distribuzione di giochi Abandonware non crea nessun danno economico alle software house o all’autore del videogame. Non sono propriamente legali ma la loro distribuzione è ampiamente tollerata, purchè non sia a scopo di lucro. Buon divertimento ;P AntoFraGe 29 Ambiente Desktop Uno studio musicale per GNU/Linux Introduzione A tutti i musicisti ai quali è stato detto: “Sì ma per fare musica col tuo PC ti ci vuole il m*c! altrimenti non vai da nessuna parte!”, o “eh ma senza C*base cosa vuoi fare, è il software di riferimento!”, oppure anche “GNU/Linux non è adatta come piattaforma per fare musica”, voglio io dire qualcosa: è possibile utilizzare il nostro sistema operativo e strumenti liberi per mettere su un completo studio musicale professionale. E con l’aggettivo professionale non voglio solo rappresentare l’alta qualità del risultato ottenibile, ma proprio indicare che l’utilizzo di GNU/Linux per fare musica con il proprio PC è possibile in ambito professionale. Cercherò, in questa serie di articoli che inizia oggi, di spiegarvi le basi di quella che viene definita Computer Music, con particolare attenzione a quelle che sono le applicazioni utilizzate durante tutto il processo di produzione musicale. Sarà poi interessante vedere con esempi pratici cosa realmente siamo in grado di fare, ma vediamo innanzi tutto la struttura di questo e degli articoli a venire, così da avere una visione d’insieme un po’ più dettagliata: I° articolo: • Presentazione della serie di articoli e definizione degli obiettivi. • Preparazione generale e consigli sul materiale necessario. • Jack, il server audio a bassa latenza. II° articolo: • Ardour, il cuore del nostro studio. • Hydrogen, una potente drum machine. • Un primo esempio di registrazione, ovvero “ripasso generale”. III° articolo: • Sintetizzatori, ovvero “non si esce vivi dagli anni '80”. • La masterizzazione con Jamin. • Considerazioni finali e idee per il futuro. Il contenuto degli articoli successivi a quello che state leggendo potrebbe variare per mia insindacabile scelta, ne sarete naturalmente avvertiti. Nel caso invece vogliate che vengano affrontati altri argomenti in particolare, basta che me lo facciate sapere, ad esempio utilizzando il nostro bel forum. Termino questa introduzione specificando che non sono un musicista professionista (per ora...), tanto meno sono un tecnico del suono o qualsiasi altra figura professionale vagamente avvicinabile a questa, non prendete quindi per oro colato tutto quello che leggerete; cercherò di essere il più chiaro possibile, ma non investite tutto il vostro capitale in uno studio musicale basandovi su questi articoli, o quantomeno aspettate di averli letti tutti. Preparazione e materiale Tutto ciò di cui abbiamo bisogno per iniziare a lavorare è in realtà un sistema GNU/Linux funzionante e possibilmente aggiornato, equipaggiato di una scheda audio con almeno una line-in e opzionalmente una mic-in. Naturalmente ci vorrà anche qualcosa per produrre i suoni che andremo a registrare, ma parleremo di questo aspetto in seguito. La maggior parte di questo capitolo non sarà strettamente legata al nostro sistema operativo, ma mi sembrava utile introdurre alcuni argomenti tecnici che mi avrebbe fatto comodo conoscere le prime volte che mi sono avvicinato a questo mondo. Non è necessario che capiate tutto, né tanto meno che ricordiate tutto, tenete solo quello che eventualmente vi potrebbe essere utile. Le schede audio si occupano principalmente di fare una cosa: convertire un segnale digitale in un segnale analogico e predisporlo per l’uscita , oppure convertire un segnale analogico in entrata in uno digitale, per essere in seguito utilizzato dal software appropriato. Mentre la prima conversione (effettuata da un così detto DAC), ci interessa, per il momento, in maniera minore, soffermiamoci sulla seconda (effettuata invece da un ADC), visto che è proprio quello che andremo a fare nel corso di questi nostri articoli: inviare alla nostra scheda audio dei segnali analogici affinché vengano 30 Ambiente Desktop convertiti in dati digitalizzati, pronti per essere utilizzati dalle nostre applicazioni. La prima considerazione importante da fare è la differenza che intercorre tra una line-in e una mic-in: la prima entrata accetta segnali al così detto “livello di linea”, ovvero segnali con un determinato voltaggio (+4dbu o -10dbV in linea di massima), abbastanza “forte” per poter essere utilizzato tranquillamente dal convertitore; la linea mic-in invece è normalmente fornita di un pre-amplificatore per aumentare il livello di un segnale, che altrimenti sarebbe troppo basso. Possiamo quindi immaginare a questo punto che, ad esempio, la nostra chitarra elettrica non potrà essere attaccata semplicemente alla line-in, in quanto il segnale che esce dai pick-ups è troppo basso, come per il microfono dovrà essere pre-amplificata. Da notare anche che il pre-amplificatore nella linea mic-in è di solito di pessima qualità, o comunque talmente misero da non meritare la nostra attenzione. Ad esempio, per un microfono, si potrebbe optare per un pre-amplificatore esterno e poi collegarlo normalmente alla line-in, per gli strumenti a corda elettrici, invece, potremmo usare l’uscita “line out” del nostro amplificatore normale (ove presente), oppure optare per un simulatore di pre-amplificatori elettronico (ottima scelta se posso dare la mia opinione), e così via. State sempre attenti a quello che fate, si tratta comunque di energia elettrica, potreste rovinare il vostro materiale o anche prendervi la scossa se non sapete cosa state facendo. Per esempio, un basso elettrico attivo non avrà bisogno di pre-amplificazione, ma lascio a voi tutte le varie declinazioni di questi rapidi consigli per l’uso. Un altro aspetto al quale fare attenzione è quello delle connessioni, che possono essere di tre tipi diversi, fate quindi riferimento al vostro materiale per sapere quale tipo di cavo e jack usare. La prima tipologia di connessione è quella detta sbilanciata (mono), ovvero un solo segnale trasportato attraverso una sola connessione. Poi c’è la connessione stereofonica, due segnali (destra “R” e sinistra “L”) trasportati su due canali diversi. Infine ci sono le connessioni bilanciate, utilizzatissime in ambito professionale o, comunque, in qualsiasi situazione si voglia minimizzare le interferenze nella trasmissione del segnale; con questo tipo di connessione, infatti, si trasmette un solo segnale su due connessioni diverse con polarità opposta, il segnale in uscita sarà la differenza tra i due, con la conseguenza di eliminare eventuali interferenze (visto che saranno verosimilmente uguali per le due connessioni). Alcuni di voi, magari, si chiederanno come mai ho insistito su questo aspetto: almeno ora sapete, o potete arrivare a comprendere, cosa succede se ho una scheda audio che accetta entrate bilanciate ed io fornisco un segnale stereofonico (visto che i jack e i cavi sono identici). Qui termina questa veloce carrellata su tutto ciò che sta “al di fuori” del nostro computer, dovremmo avere capito un po’ meglio come poter inviare un qualche input alla nostra scheda audio, e come assicurarci che tutto sia collegato in maniera corretta. Jack, il server audio a bassa latenza Jack[1], come al solito nel mondo del pinguino, è un acronimo che sta per “Jack audio connection kit”, ma più che di un kit si tratta di un server audio, che offre due interessantissime prerogative: è stato creato con in mente la bassa latenza, e permette all’utilizzatore di connettere applicazioni e dispositivi hardware, proprio come se fosse in uno studio musicale con cavi e jacks reali. Vediamo in maniera più approfondita cosa significhino praticamente queste due caratteristiche. Per latenza (in questo specifico contesto) si intende quel lasso di tempo che trascorre tra un evento (segnale) in ingresso ed il suo effettivo utilizzo; ad esempio il lasso di tempo che trascorre da quando suono la corda della mia chitarra a quando il suono viene registrato dalla mia applicazione. Jack si propone di lavorare con la minore latenza possibile, sfruttando anche le capacità realtime del kernel linux. In pratica cercherà di eseguire quello che gli viene chiesto, ovvero dirigere i vari flussi di segnali tra le varie applicazioni e i vari dispositivi audio, in un lasso di tempo massimo prestabilito impostato dall’utilizzatore. In parole povere, se impostiamo 20 millisecondi come tempo di latenza massimo, jack si impegnerà, per quanto possibile, a rispettare questo tempo come limite superiore al quale operare nel 31 Ambiente Desktop trasporto del segnale. La bassa latenza, come è facile immaginare, è un aspetto fondamentale nella registrazione musicale, basti pensare a cosa succederebbe registrando una voce su di una base già registrata con una latenza di 500 millisecondi. prodotto. Per prima cosa dobbiamo installarlo, non ci dovrebbero essere problemi da questo punto di vista in quanto le maggiori distribuzioni lo hanno pacchettizzato, anche se il nome del pacchetto potrebbe variare: jack, jackd, jack-connection-audio-kit. Insieme al server vero e proprio vi conviene installare Qjackctl [2], indispensabile interfaccia grafica che facilita di molto la gestione di Jack. Nel caso abbiate problemi fate riferimento alla documentazione della vostra distribuzione. Una volta installati questi due pacchetti con tutte le loro dipendenze siamo pronti a cominciare. Visto che Jack si basa su ALSA per interfacciarsi con i vostri dispositivi audio, non c’è bisogno di nessuna configurazione da queFigura 1 - GUI di configurazione di Jack sto punto di vista, è invece utile controllare Il secondo aspetto è quello dei collegamenti: che sia possibile sfruttare le capacità realticome detto in precedenza Jack permette di me del kernel linux attraverso Jack. La cosa connettere interfacce audio (la vostra scheda più semplice è provare se tutto funziona così audio ad esempio) ad applicazioni, applicacom’è: facciamo partire qjackctl da utente zioni ad interfacce audio ed anche applicazionormale, e tramite il pulsante “Setup...” apriani ad altre applicazioni. Ma cosa si intende per mo la finestra di configurazione come nell’im“connettere”? Pensiamo ad un unico segnale magine che segue (figura 1). Assicuriamoci che entri dalla nostra scheda audio attraverso quindi che l’opzione “Realtime” sia attivata, la line-in, con Jack è possibile far percorrere a che il valore dei frames (che va a quantificare questo stesso segnale il percorso che vogliala latenza finale) sia su valori accettabili (nelmo, attraverso applicazioni e altri eventuali l’immagine 256 ma consiglio di alzarlo a 1024 dispositivi hardware, proprio come si farebbe per i primi tests), è che l’interfaccia sia quella nella realtà con cavi e collegamenti. Naturalvoluta (è possibile aiutarsi nella scelta tramite mente, perché tutto funzioni c’è bisogno che la piccola freccia alla destra del campo). Non le suddette applicazioni siano state sviluppate ci resta che salvare con “Ok” e ritornare alla per funzionare con Jack, ovvero per accettare nostra interfaccia principale, dalla quale proe/o inviare segnali che Jack possa gestire nel viamo a dare il fatidico “Start”. A questo punto, modo che abbiamo precedentemente introse tutto è andato bene, il demone jackd è in dotto. Più avanti potrete vedere una rappreesecuzione sfruttando le capacità realtime del sentazione grafica di quanto detto attraverso kernel linux e con i parametri da noi specificauno screenshot. ti. Se è effettivamente così, nel finto display LCD dell’interfaccia di qjackctl dovreste Affrontati questi due aspetti teorici vediamo in avere queste informazioni (figura 2): pratica come fare ad usare questo stupendo 32 Ambiente Desktop Dove “Started” ci indica che il server è in esecuzione, “RT” che efFigura 2 - qJackCTL fettivamente sta usando le capacità realtime del kernel linux, “x.y%” la percentuale di CPU utilizzata dal server, “xxx Hz” la frequenza di campionamento del segnale, “0 (0)” il numero di Xruns (dei quali parlerò più tardi), e il resto informazioni su di un altro aspetto del server detto “transport” (del quale non ci occuperemo per ora). Il discorso cambia se qualcosa è andato storto. La prima cosa da controllare è che l’utente che lancia il demone Jack faccia parte del gruppo “audio” (come nella maggior parte delle distribuzioni che ho provato), questo perché dura di base per fare ciò è abbastanza complicata e non sto quindi a spiegarla in questo articolo, vi basti sapere che potrete comunque utilizzare Jack in due modi: mantenendo l’opzione “Realtime” e facendo partire Jack da utente root, oppure disabilitando l’opzione “Realtime” dalla configurazione. A questo punto dovremmo avere il nostro server jackd in esecuzione e pronto a funzionare. Il cuore dell’interfaccia di controllo di Jack è senza dubbio la finestra delle connessioni, alla quale si accede tramite il pulsante “Connect”. Da qui infatti è possibile effettuare i collegamenti tra interfacce e applicazioni, una delle caratteristiche più importanti ed utili del server. Figura 3 - Finestra delle connessioni di Jack solitamente a questo gruppo sono dati i permessi necessari per accedere alle risorse che ci interessano. Se anche con questo accorgimento non appare il fatidico “RT” nel display di qjackctl, o il demone si termina all’avvio con messaggi di errore poco rassicuranti, dovrete cercare le istruzioni per permettere l’accesso alle risorse realtime del kernel linux. La proce- Nella figura 3 vediamo un esempio della finestra delle connessioni: a sinistra abbiamo dispositivi e applicazioni dai quali è possibile leggere uno o più segnali, nella parte destra invece ci sono i dispositivi e le applicazioni sui quali è possibile scrivere un segnale. È naturalmente possibile che lo stesso dispositivo o la stessa applicazione si trovi sia da una parte 33 Ambiente Desktop che dall’altra: la scheda audio avrà nella parte sinistra tutte le entrate (in questo caso specifico capture_[1-12]), e nella parte destra tutte le uscite (playback_[1-10]). Le 12 entrate della figura potrebbero (anche se in realtà non lo sono) essere 6 entrate stereofoniche (2 canali per entrata L1 R1, L2 R2 etc etc), mentre le 10 uscite potrebbero essere 5 uscite stereofoniche. A questo punto, per collegare la prima entrata stereo alla prima uscita stereo ci basterà collegare capture_1 con playback_1, e capture_2 con playback_2; per effettuare un collegamento basta cliccare su di un elemento e trascinarlo sull’elemento della parte opposta al quale si vuole collegarlo. Nella figura 3 abbiamo collegato capture_1 con un entrata di Ardour (ne parleremo nel prossimo articolo), un’applicazione per la registrazione di flussi audio, così facendo il segnale che andremo ad inviare nella prima linein potrà essere utilizzato (sulla pista Audio 1 ma al momento non ci interessa) dall’applicazione. Allo stesso tempo master/out1 e master/out2 di Ardour vengono inviate ai due canali playback_1 e playback_2, la nostra prima uscita stereo, alla quale, per esempio, abbiamo attaccato le nostre cuffie. Il nostro segnale fa quindi un percorso di questo tipo: line-in -> ardour -> line-out. Con un po’ di esercizio vedrete che l’utilizzo di questa interfaccia diverrà immediato, facilitandovi il lavoro e permettendovi di fare cose che prima neanche immaginavate. È possibile che abbiate molte meno entrate e uscite di quelle presentate qui (sono quelle di una scheda M-audio delta 44) e che dobbiate scegliere tra la mic-in e la line-in attraverso il mixer di sistema, per utilizzare l’una o l’altra. In linea di massima si tratta solo di modificare gli switches per attivare l’una o l’altra, ma a volte questa semplice operazione è complicata inutilmente dall’interfaccia di quasi tutti i mixer di sistema (kmix, alsamixer etc.), state quindi attenti ad attivare l’entrata che volete, e anche l’opzione “Capture” là dove presente. Potete ora fare la vostra prima prova con Jack. Fate partire il server, collegate alla vostra entrata un segnale come spiegato nel capitolo precedente, oppure inserite un microfono nell’apposita mic-in; a questo punto dovete attivare dal mixer di sistema la giusta entrata , collegare l’entrata (se stereo sono due) all’uscita (idem) e, come per magia, dovreste sentirvi nelle cuffie o nelle casse collegate. Probabilmente non sentirete niente ma non scoraggiatevi, si tratta sicuramente di una piccola disattenzione, controllate i volumi nel mixer, i collegamenti (reali e di Jack), e qualsiasi altra cosa abbiate fatto prima di provare. Se invece sentite suoni o la vostra voce prima di fare i collegamenti dentro Jack, significa semplicemente che la vostra scheda audio effettua il mixing dei segnali anche a livello hardware; se così fosse basterà “mutare” gli ingressi (line-in o mic-in) e lasciare che Jack faccia il suo lavoro. Ora dovrebbe funzionare tutto! Per terminare questa presentazione di Jack affrontiamo il problema degli Xruns. Semplificando, diciamo che un Xrun si manifesta quando Jack non riesce a rispettare il lasso di tempo impostogli per la latenza. Questo può accadere perché l’intervallo di tempo è troppo piccolo per le capacità della macchina, o perché altre applicazioni richiedono l’utilizzo della CPU, o per altri motivi meno immediati. Come detto in precedenza qjackctl ci informa di quanti Xruns si sono verificati, possiamo così vedere se sia utile o meno intervenire per minimizzarli. Il problema fondamentale è che ogniqualvolta si verifica un Xrun, Jack per un brevissimo momento smette di fare quello che deve fare, e se, per esempio, stiamo registrando, smetterà di registrare. Dobbiamo anche tenere conto che, se abbiamo impostato una latenza al di sotto dei 10 millisecondi, un Xrun durante una registrazione non sarà udibile dall’orecchio umano, è quindi necessario capire se sia il caso o meno di cercare di abbassare il numero di eventuali Xruns. Nel caso si debba per forza intervenire, la prima cosa da fare è alzare il tempo di latenza (aumentando la taglia dei frames come spiegato in precedenza), fino a trovare il giusto compromesso. Un altro parametro sul quale intervenire è il kernel: è infatti possibile compilare il kernel linux migliorando il suo comportamento realtime; si tratta di un procedimento che non starò a spiegare qui, ma è possibile che possiate trovare un kernel compilato in questo modo, pacchettizzato per la vostra distribuzione. Termina qui il primo articolo della serie sulla 34 Ambiente Desktop produzione di musica con il pinguino, spero sia stato di vostro gradimento. Se avete domande oppure richieste particolari non vi resta che farvi vivi sul nostro forum, intanto vi saluto fino al prossimo articolo, [1] http://jackaudio.org/ [2] http://qjackctl.sourceforge.net/ Stonedz 35 Pillole Pillole Htop – Top all’ennesima potenza Dopo questo titolo abbastanza criptico, passo a spiegare cos’è htop. In teoria è “solo” la versione interattiva di top, ma in realtà è molto di più, è un vero e proprio task manager da usare in un terminale, quindi anche in sistemi senza interfaccia grafica, cosa che risulta utilissima per chi usa SSH. Quasi sicuramente lo troveremo già pacchettizzato per la nostra distribuzione, se così non fosse possiamo compilarlo dai sorgenti, scaricabili da http:// htop.sourceforge.net/, tenendo presente che dobbiamo avere installate le librerie ncurses. Per lanciarlo non sono necessari argomenti, quindi è sufficiente digitarne il nome e premere [Invio]. Possiamo navigare tramite i processi attivi tramite le frecce della tastiera e, una volta selezionato il processo che ci interessa, possiamo killarlo, con [F9], ridurne la priorità di esecuzione con [F8] e, se siamo superutenti, aumentarla con [F7]. Con [F2] si accede alla configurazione di htop, dove scegliere quali informazioni visualizzare nella parte alta della schermata, con [F5] si ottiene la struttura ad albero dei processi, mentre spazio ci consente di selezionare più processi su cui eseguire le medesime operazioni. Queste sono solo alcune delle funzioni di htop, per scoprire le altre basterà leggere la pagina di manuale # man htop Tuttoeniente Installare NTFS-3G “Posso scrivere da Linux nella mia partizione di Windows?” Questa è una domanda molto frequente che viene posta dai nuovi utenti del pinguino nei vari forum specializzati, e molto spesso la risposta è “Sì, ma solo sulle partizioni FAT32, con NTFS non è ancora possibile”. Ora finalmente la musica è cambiata, e con il recente rilascio di NTFS-3G 1.0, un driver open source è finalmente possibile l’accesso in lettura e scrittura alle partizioni formattate con NTFS con una buona stabilità 36 Pillole e sicurezza. Se pensate che l’installazione e l’uso di questo tool sia una cosa complessa e possibile solo ai più esperti vi sbagliate! Per rendere disponibile NTFS-3G bastano pochi e semplici passaggi: una volta scaricato il pacchetto da http://www.ntfs-3g.org/ è sufficiente compilarlo con i classici ./configure && make && make install (eseguito come root). Attenzione però, perché il programma ha bisogno di Fuse 2.6.0 o versioni successive per funzionare correttamente. Ora che il driver è installato, lo si può utilizzare montando direttamente la partizione che ci interessa: # mount -t ntfs-3g /dev/ hda1 /mnt/windows Chiaramente, se necessario, possiamo cambiare sia il device che identifica la partizione da montare, sia il suo mount point. Possiamo anche rendere automatico il montaggio con NTFS-3G, aggiungendo questa linea a /etc/ fstab /dev/hda1 /mnt/windows ntfs-3g defaults 0 0 oppure sostituendo ntfs con ntfs-3g nel caso fosse già presente l’istruzione. Tuttoeniente 37 GNU FDL GNU Free Documentation License Version 1.2, November 2002 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document “free” in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this 38 GNU FDL License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standardconforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. 39 GNU FDL You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: FrontCover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. 40 GNU FDL E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 41 GNU FDL 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements”. 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the origi42 GNU FDL nal version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no FrontCover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with... Texts.” line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. 43