SlideShare una empresa de Scribd logo
1 de 37
IV LINUX DAY
  TERAMO ­ 27 NOVEMBRE 2004




   LINUX
   NASCITA E
CARATTERISTICHE
   VINCENTI


        relatore: Maurizio Antonelli




         Some rights reserved: http://www.maury.it#licenza
Buongiorno a tutti.
Mi presento: io sono Maurizio Antonelli. Nella vita studio fisica e sono appassionato d'informatica 
da   quando ero piccolo, da quando smanettavo sul primo VIC­20 che aveva comprato mio padre. 
Poi, dopo varie evoluzioni informatiche (Commodore 64, Amiga 2000) ho avuto il mio primo pc 
durante gli anni di Università, quando preparavo gli esami di informatica e programmazione. Ho 
preso un portatite, un Compaq Presario 1200, con Windows 98 Second Edition pre­installato.
Il portatile ha girato con il sistema operativo di fabbrica per qualche mese. Un buon portatile, per 
l'epoca,   ma   molti   crash...   Ho   pensato   che   probabilmente   fosse   la   normale   evoluzione 
dell'informatica...
Poi, in Università, nell'LCM, il Laboratorio di Calcolo e Multimedia, fatto dagli studenti per gli 
studenti, ho conosciuto Linux.
Al tempo ci si poteva giusto programmare, navigare in internet, gestire e­mail e scrivere in LaTeX. 
Io naturalmente provai subito ad installare Linux nel mio laptop ed in questi pochi anni ho assistito 
all'evoluzione  di  questo sistema operativo con cui  oggi  svolgo quasi  il 100% delle mie attività 
informatiche. E con grande efficienza, dato che il mio pc non crasha mai e ho la netta impressione 
che sia anche più veloce...

Passiamo ora alla presentazione che farò: all'inizio dell'intervento parlerò un po' di storia dell'open 
source e di Linux. Poi riassumerò brevemente cos'è l'open source, come è nato e da chi. E poi si 
passerà a Linux, descrivendo anche di esso la nascita e le caratteristiche di base che ne fanno la più 
grande (e temuta) alternativa ai sistemi Microsoft.
Questa è una frase che si trova spesso navigando su internet per siti che trattano di Open Source e di 
Linux.
Vediamo un attimino chi sono questi due signori e cosa hanno combinato di bello... anzi, cosa 
stanno combinando...




Richard Stalmann
Richard Stallman è americano, laureato in fisica. Durante gli anni '60­'70 ha lavorato presso il MIT 
(Massachussets Institute of Tecnology), dove i computer giravano sotto sistemi Unix. Nei laboratori 
del MIT Stallman lavorava con computer in rete che condividevano una stampante, una HP. Cosa 
succedeva: quando più di un PC mandava qualcosa in stampa, non essendoci ancora lo strumento 
delle   code   di   stampa,   la   carta   s'inceppava,   poiché   la   stampante   provava   a   stampare   più   cose 
contemporaneamente. Stallman risolse questo problema modificando il software di gestione della 
stampante di cui aveva il codice sorgente: ogni volta che si mandava in stampa qualcosa, su tutti i pc 
veniva visualizzato un messaggio che indicava che la stampante era occupata.
Spieghiamo   brevemente  cos'è   questo  codice  sorgente.  Un   computer   esegue   un  programma   che 
fondamentalmente è sotto forma di bit, sotto forma di una lunga serie di 1 e di 0 disposti in maniera 
tale da essere interpretati come istruzioni eseguibili: il famoso linguaggio macchina. Programmare 
scrivendo le istruzioni in questa maniera è naturalmente scomodissimo e difficilissimo. Andando 
avanti nel tempo, gli informatici hanno inventato dei linguaggi che potevano essere tradotti da un 
qualche  sistema automatico in linguaggio macchina:  d'apprima l'assembler esadecimale, sempre 
linguaggio macchina, ma umanamente più accessibile, riducendo la difficoltà degli 1 e degli 0 a un 
base  16   (per   capire  meglio:  il  nostro  sistema  numerico è  a  base  10).  Poi   linguaggi   un po'   più 
semplici, spesso basati su parole del vocabolario inglese: il C, il Fortran, il Basic, fino ai moderni 
Java, Perl, ecc. ecc. I file dei programmi scritti in questi linguaggi sono appunto il codice sorgente, 
assolutamente incomprensibili da parte di una macchina. Furono creati così i famosi traduttori, che 
avevano lo scopo di tradurre il codice sorgente del programma in linguaggio macchina, creando le 
istruzioni binarie eseguibili dal computer. Ora un'altra piccola parentesi: in un primo momento si 
realizzarono i traduttori di tipo interprete, che prendevano un'istruzione alla volta, la traducevano e 
la facevano eseguire prima di passare all'istruzione successiva. Molto lento come processo, dato il 
tempo dovuto alla traduzione tra un'esecuzione e la successiva. Chi ha usato il Commodore 64 ha 
esperienza di queste cose: il C64 utilizzava per l'appunto un interprete per il Basic. Poi arrivarono i 
compilatori, che prendono l'intero codice sorgente, lo traducono completamente creando dei file 
binari eseguibili dalla macchina e poi l'esecuzione avviene senza la perdita di tempo dovuta dalla 
traduzione in simultanea. Questi sono i traduttori di oggi.

Allora,   riprendendo:   Stallman   aggiunse   una   funzione   che   mandava   sui   monitor   un   messaggio 
quando   la   stampante   era   occupata   da   qualche   lavoro   di   stampa.   In   questo   modo   si   evitava   di 
mandare contemporaneamente più richieste ed il problema non si presentava più.
Poi il MIT cambiò la stampante. Sempre un'altra HP, ma stavolta la ditta produttrice, che aveva 
cambiato  politica in proposito, non fornì i sorgenti  del programma di gestione della stampa.  Il 
problema della carta che si inceppava c'era sempre e stavolta Stallman era impotente: qualsiasi sua 
insistenza di farsi dare il sorgente dei driver dalla HP era inutile.
Da   qui   l'idea   di   Stallman   di   formare   il   movimento   dell'Open   Source  (o  software   libero)   e   il 
progetto   GNU,   che   nasce   nel   1984.   Il   sistema   operativo   GNU   doveva   essere   composto   da 
programmi a codice sorgente aperto, disponibile a tutti e da tutti modificabile. Doveva nascere con 
il   fine   principale   di   dare   un   servizio   ulteriore   alla   società,   garantendo   sicurezza,   stabilità   e 
possibilità di essere modellato in base a qualsiasi esigenza...

ATTENZIONE:   “software   libero”  non   significa   assolutamente   “software   gratuito”.   Evitiamo   di 
continuare a fare confusione. Stallman più di una volta, venendo in Italia per conferenze, ha tenuto a 
sottolineare  che  a  differenza  che   negli   Stai  Uniti,   dove  si   usa  il   termine  “free”   per  entrambi   i 
concetti, gli italiani hanno la fortuna di avere due termini: “libero” e “gratis”. Quindi non facciamo 
confusione.   Il   software   libero   non   è   gratis.   Il   programmatore   può   decidere   tranquillamente   di 
metterlo in commercio a pagamento; gli obblighi a cui è tenuto perché il suo prodotto sia “open 
source” sono ben altri.
Queste quattro libertà, che devono essere garantite dai progetti Open Source, le ho prese dal sito 
dell'Italian Linux Society, l'associazione che ha indetto questo Linux Day, all'URL che vedete nella 
slide.

Libertà 0 o libertà fondamentale:
       La libertà di eseguire il programma per qualunque scopo, senza vincoli sul suo utilizzo.

Libertà 1:
       La libertà di studiare il funzionamento del programma, e di adattarlo alle proprie esigenze.

Libertà 2:
       La libertà di redistribuire copie del programma.

Libertà 3:
       La libertà di migliorare il programma, e di distribuirne i miglioramenti.

Queste sono le quattro regole che riassumono quello che Stallman intendeva per software libero. 
Come vedete, sono concetti decisamente diversi e lontani da quelli con cui vengono distribuiti i 
software ai quali molta gente è abituata.
Stallman sviluppò in base agli ideali che si era prefissato il compilatore C, l'editor di testi Emacs e 
nel   resto   del   mondo   partirono   altri   progettini,   ma   per   essere   un   Sistema   Operativo   completo, 
mancava una cosa fondamentale: un kernel...
E veniamo quindi al secondo personaggio... Inizi degli anni '90, dopo che durante gli anni '80 si era 
diffuso abbastanza l'ideale contro il monopolio privato dei sorgenti chiusi. Linus Torvalds era un 
semplice studente universitario presso l'Università di Helsinki. Seguiva per passione lo sviluppo e la 
diffusione del progetto GNU, ma era consapevole che ne mancava proprio la parte centrale: i sistemi 
Unix sotto cui potevano essere compilati ed installati tutti i progetti dell'Open Source erano molto 
costosi, circa 30.000­40.000 dollari. Come poteva essere accessibile se non solamente ad università 
e grosse aziende una cosa del genere?
In questi anni, il professor Tanenbaum, olandese, aveva sviluppato un sistema Unix­like (simile allo 
Unix), il Minix, utilizzabile anche sui semplici PC, senza richiedere costosissime workstation. Era 
stato sviluppato in base alle sue esigenze di insegnante, ed era a sorgenti chiusi. Tra Tanenbaum e 
Torvalds ci fu un'accesa disputa, una discussione sul fatto del Minix a sorgenti chiusi. Fu il 25 
agosto 1991 che comparve su qualche forum dell'internet di allora un messaggio di Torvalds che 
annunciava che lui (sottolineando che al tempo era studente universitario e non un professionista) 
stava scrivendo un kernel per un sistema operativo Unix­like che sarebbe girato sui PC, e a sorgenti 
aperti, rispettando appieno le direttive che aveva sviluppato Stallman.
E fu a settembre 1991 che fu disponibile su internet il kernel Linux 0.01. Successivamente GNU 
Linux.
Naturalmente poi si creò la comunità di sviluppo: molte altre persone hanno dato il loro contributo. 
Ad esempio un certo Alan Cox sviluppò le intrefacce di gestione delle reti.

Ecco  quindi  raccontata un po'  la storia che viene sintetizzata con la frase che compariva  nella 
seconda diapositiva...
Ora che si aveva un kernel che rispettava tutti i requisiti dell'Open Source ideato da Stallman, la 
comunità si buttò con molto entusiasmo su tantissimi progetti senza i quali Linux non sarebbe stato 
nessuno:

X­Window:   l'ambiente   grafico.   Era   impensabile   che   con   l'avvento   di   Windows,   dove   tutto   era 
un'icona, dove la visuale era a colori, dove si utilizzava il mouse, Linux avrebbe retto il confronto 
rimanendo col semplice ambiente testuale. Ecco quindi l'X­Free, un ambiente grafico che permette 
oggi alte risoluzioni, la possibilità di utilizzare il pc in maniera multimediale, con visualizzazione di 
foto e filmati.

KDE, Gnome e altri windows manager. Gestori di finestre, ognuno con una sua veste grafica e un 
suo modo di essere utilizzato, chi più, chi meno intuitivamente. È possibile installarli tutti e ogni 
volta che si entra decidere su che ambiente lavorare. Inoltre gli sviluppatori li stanno arricchendo 
sempre più con molte applicazioni:  KOffice, una suite per ufficio; GnomeToaster un programma 
per masterizzare in maniera veloce; KsCD, un programma per ascoltare i Compact Disk, ecc. ecc...

The  Gimp:   un programma per l'elaborazione di  immagini  e fotografie digitali. Completamente 
Open Source e con tantissime funzioni. In continua evoluzione. È possibile aprire tantissimi formati 
di foto digitale, compresi quelli proprietari di altri programmi commerciali.

Mozilla: una suite per il web. Comprende un browser, un client di posta, un programma per chat, e 
altre cosette. Proviene direttamente dai codici sorgenti del Natscape Navigator ed è molto intuitivo 
da utilizzare, senza avere tutte le falle di sicurezza che ha invece Internet Explorer.

Xine,  Mplayer:   lettori   multimediali.   Per   DVD,   VCD   e   file   creati   con   vari   codec.   L'MPlayer 
comprende anche un codificatore per comprimere i propri file creando CD, DVD o DivX.

OpenOffice.org:   la   suite   per   ufficio   Open   Source.   Arriviamo   all'ultimo   arrivato,   tappa 
fondamentale dello sviluppo dell'Open Source. È una suite nata quando la Sun Microsystem decise 
di scindere lo Star Office in due progetti distinti: uno proprietario, rivolto al mondo del business e a 
sorgenti chiusi, lo StarOffice; un altro, invece,  OpenOffice.org, a sorgenti aperti, che si rivolgeva 
agli utenti con meno pretese, ma con la possibilità di avere a disposizione il codice sorgente. È una 
suite che permette di lavorare anche con i documenti creati con il più diffuso Microsoft Office, 
grazie   alla   possibilità   di   aprire   i   suoi   formati   proprietari,   i   .doc,   ecc..   per   intenderci.   Questa 
caratteristica è stata implementata grazie ad un gran lavoro di  reverse engineering. Che cos'è: la 
Microsoft non ha mai pubblicato la struttura di un .doc. Quindi i programmatori di  Sun  e della 
comunità hanno dovuto studiare il prodotto finale, appunto diversi file .doc, per poter risalire alla 
struttura. Per fare un esempio: avendo i giusti strumenti è possibile costruire una Ferrari avendone il 
progetto. Immaginate però di non avere il progetto, ma una Ferrari già montata. Immaginate quanto 
diventa difficile costruirne una identica, capire com'è strutturata, smontarla per carpirne i minimi 
dettagli... Ecco, questo è il reverse engineering... Non è una cosa da poco...
Ebbene,  OpenOffice.org  apre tranquillamente i  documenti  di  Office (attenzione  a quelli troppo 
complicati per cui si rivelano ancora alcuni problemi di impaginazione) e in più ha una funzione 
utile per chi distribuisce i file in pubblico: la possibilità di esportare in formato PDF, un formato 
difficilmente modificabile e che non contiene tutte quelle informazioni personali che memorizza, 
invece, il .doc. In più  OpenOffice.org  ha un formato proprietario aperto, cosa che, invece, Office 
non ha. Che succederebbe ai vostri .doc se un giorno Microsoft decidesse ti togliervi la licenza di 
Office (cosa che può fare benissimo, anche per spingervi a comprare i suoi nuovi prodotti)? Con 
OpenOffice.org questo rischio non c'è, perché chiunque è libero di scrivere programmi in grado di 
leggere e modificare i .sx(w,x,i), appunto i formati propri di OpenOffice.org.

Attenzione,   una   piccola   curiosità   (di   una   certa   importanza):  Gimp,  Mplayer,  Mozilla, 
OpenOffice.org sono disponibili anche per i Microsoft Windows e quindi potete già utilizzarli con 
questi sistemi operativi.




Ecco qui. Questa domanda vuole essere provocatoria. Qualche mese fa, in un'intervista il patron di 
Microsoft ha affermato che chi produce OpenSource è gente che programma nelle ore notturne, che 
non essendo spinta da un guadagno personale non può produrre roba di buona qualità...
Il signor Gates però si è dimenticato forse di qualcosa: che molte persone realizzano cose non solo 
per trarne un profitto, ma per semplice passione, per dare un ulteriore servizio alla società intera; 
visto che programmare richiede competenza ed intelligienza, anche per il semplice gusto della sfida 
personale.
Allora. Che ne pensate dell'affermazione dello zio Bill?




Allora, passiamo al concetto di “distribuzione”. Abbiamo detto che ora abbiamo un kernel, dei 
compilatori per compilare ed installare, diversi programmi più o meno grandi. Scaricare tutta questa 
roba, compilarsela, configurarsela... Sì, utile a livello di prestazioni e di controllo, dato che si ha la 
possibilità di compilarla e configurarla in maniera ottimale, ma sarebbe un'ingente perdita di tempo, 
per non parlare delle difficoltà che avrebbe chi non è molto pratico di certe cose. Molte ditte di 
software hanno quindi raccolto grandi quantità di programmi, oltra al kernel Linux naturalmente, 
compilando, configurando e mettendo il tutto in CD liberamente distribuiti. Nasce così il concetto 
di distribuzione... Qual è l'aspetto commerciale di questa faccenda? Linux è gratuito e molto spesso, 
anche se non sempre, lo sono anche gli altri programmi Open Source; queste ditte hanno il loro 
guadagno nell'assistenza tecnica. Tu sei libero di installare il RedHat Linux, ad esempio, ma se hai 
un problema, poi puoi comprare il mio manuale pagandolo oppure ti rivolgi ad un mio tecnico che 
non ti può far pagare il software, ma ti può far pagare il suo tempo e la sua competenza.

Le distribuzioni sono molte e tutte un po' diverse tra loro: da quelle rivolte a chi amministra reti 
aziendali (Debian, Slackware), a quelle per uso più casalingo (Mandrake), da quelle che puntano a 
soddisfare   programmatori   ed   hacker   smanettoni   (Gentoo)   a   quelle   facili   facili   da   installare   e 
configurare   (RedHat).   Attenzione,   qui   vi   faccio   notare   l'ultima:   la  Qi­Linux.   È   una   nuova 
distribuzione, nata qualche mese fa ed è completamente italiana. La produce la Qi­Soft, una ditta 
software   con   sede   a   Torino.   Io   personalmente   non   l'ho   mai   provata,   ma   ho   letto   che   è   molto 
semplice   da   utilizzare.   Queste   ditte,   naturalmente,   oltre   al  kernel,  OpenOffice.org  ed   altre 
applicazioni, inseriscono anche degli strumenti creati da loro per installare e configurare, venendo 
così incontro agli utenti finali.
Passiamo ora a vedere un po' le caratteristiche fondamentali del sistema operativo GNU/Linux.

È   un  sistema   multi­utente.   Il   sistema   operativo   Linux,   come   tutti   i   sistemi   Unix­like   è   stato 
progettato per macchine con cui lavorano più persone. Quindi macchine dove si rende necessaria 
una certa riservatezza, una certa sicurezza rispetto ai danni causati da altri utenti e anche un certo 
diritto   a   personalizzare   l'ambiente   di   lavoro   (screensaver,   sfondi,   configurazioni,   ecc...)   senza 
invadere lo stesso diritto degli altri.

È   un   sistema   con   un  file­system   caratterizzato   da   permessi.   Che   significa?   Questa   è   la 
caratteristica che garantisce proprio la riservatezza dei propri documenti e la sicurezza nei confronti 
di danni causati da terzi. Ogni file è caratterizzato da 9 permessi:  lettura, scrittura, esecuzione  da 
parte del proprietario; lettura, scrittura, esecuzione da parte dei membri del gruppo del proprietario; 
lettura, scrittura, esecuzione da parte di tutti gli utenti della macchina. Quindi il proprietario di un 
file può decidere di non rendere accessibile in scrittura un determinato file ad altri utenti e garantirsi 
così che quel file non subirà modifiche a propria insaputa. Ad esempio: io ho un documento che per 
il momento voglio tenere segreto. Basterà che toglierò tutti e tre i permessi al mio gruppo e a tutti 
gli   utenti   (si   fa   col   comando   di   shell   “chmod   700  nomefile”).   In   questo   modo   nessuno   potrà 
accedere per nessuno scopo, compresa la visualizzazione, al mio file.

C'è un super­utente, l'utente root, che gestisce il sistema. C'è questo “super­man” che è al di sopra 
di ogni permesso. Legge e scrive tutto. Questo perché? Per poter risolvere situazioni in caso di 
emergenza. Succede spesso, ad esempio, che un utente poco pratico modifichi in maniera errata dei 
file personali di configurazione della shell (vedremo più avanti cos'è), in questo modo senza riuscire 
più ad avere acceso al PC. In questo caso, per fortuna che c'è il super­utente, l'amministratore, che, 
anche se il file in questione non ha i permessi di scrittura per gli altri utenti, può modificarlo 
ugualmente. Il super­utente è anche l'unica persona che può installare programmi nel sistema (gli 
utenti possono farlo solo nelle cartelle a loro aperte, tra le quali per ovvii motivi non ci sono file di 
sistema), aggiornare gli stessi e modificare i file di configurazione di base delle varie applicazioni o 
delle funzioni del sistema (tipo rete, o hardware vari).

È  un  sistema multi­tasking. Permette quindi di eseguire più applicazioni  contemporaneamente, 
sfruttando al meglio le capacità di calcolo ed elaborazione della macchina. Oramai sono multi­
tasking tutti i sistemi, certo, compresi i vari Windows, ma la caratteristica di multi­tasking dei 
sistemi Unix­like è qualcosa di nettamente superiore. Efficienza incredibile, a cui si aggiunge una 
forte stabilità.

Linux utilizza la  memoria di swap. Anche questa è una cosa ormai comune a tutti i sistemi in 
circolazione. Quando si lavora con diverse applicazioni, naturalmente si arriva spesso ad esaurire la 
RAM fisica del calcolatore. E' qui che interviene lo swap­space, conosciuta anche come memoria 
virtuale.   Lo   swap   è   una   zona   nel   disco   fisso,   in   Linux   ben   definita   (la   si   imposta   in   fase   di 
installazione), che viene utilizzata come memoria ausiliaria. Naturalmente rallenta il sistema, dato 
che scrivere e leggere da un hard disk è più lento che da una memoria RAM fisica, ma garantisce 
maggiori capacità che il sistema non avrebbe se utilizzasse solo i megabyte disponibili con la RAM.

Lavoro in rete tramite  SSH. Questa è una proprietà, data da un protocollo esterno, il protocollo 
Secure SHell. Permette di fare un login, di entrare, in un sistema remoto collegato ad internet. Così 
posso lavorare a distanza sul computer remoto (a cui naturalmente devo avere l'accesso) come se ce 
lo avessi davanti. Il tutto in maniera resa sicura dal protocollo di criptazione dei dati SSL: in rete i 
dati, comprese le mie password, e i miei comandi passano in maniera criptata, senza poter essere 
individuati da qualcuno in ascolto.




Passiamo ora alla shell. La shell è l'interprete dei comandi di Linux. È un programma di base che 
permette all'utente di mandare comandi al sistema. Apparentemente ricorda molto il vecchio prompt 
dell'MS­DOS. In effetti il modo di utilizzo è molto simile.
Di shell non ce n'è una sola, ma diversi tipi, tra cui ognuno può scegliere in base alle proprie 
esigenze ed ai propri gusti. La prima di questa piccola lista è la  bash, abbreviazione di Bourne 
Again SHell. È la shell che molte distribuzioni fanno utilizzare di default e che utilizzo di norma 
anch'io. Tra le altre merita una piccola attenzione la csh (C­Shell), una shell studiata per chi lavora 
molto con il linguaggio di programmazione C.
Vediamo una piccola carrellata dei principali comandi di shell:

ls: è il comando per visualizzare tutti i file della directory corrente. Io personalmente la utilizzo con 
le   opzioni  ­laF   ­­color,   in   maniera   da   farmi   visualizzare   tutti   i   file,   compresi   quelli   nascosti, 
caratterizzati dal nome che inizia per un punto (.), e facendomi visualizzare se sono dei file di dati, 
delle directory o dei link, distinguendomeli anche con colori diversi.

pwd: è il comando per far visualizzare alla shell la posizione corrente nel file­system: in quale 
directory ci troviamo.

exit: è il comando per uscire come utente, rendendo la macchina disponibile ad altri.

cd: per entrare in una directory (piccola attenzione: le directory in unix si separano con lo slash (/) e 
non con il back­slash () come ci ha abituato qualcun'altro. Guarda caso, tutta internet, che funziona 
sotto Unix, utilizza lo slash).

cp:   è   il   comando   per   copiare   un   file.   La   sintassi   è   semplice:   cp  nome_file_origine 
nome_file_destinazione

mv: muove/sposta un file. E' molto simile al comando cp, ma con la differenza che poi rimuove il 
file di origine. E' utilizzabile anche per rinominare un file, naturalmente.
cat: concatena due o più file. Prende il primo e dopo la fine inizia a metterci il secondo e così via. 
Poi manda tutto allo standard output, cioè al monitor.

rm: elimina un file. Attenzione: una volta eliminato, il file è andato perso per sempre. Infatti in 
Linux   non   esiste   un   cestino.   Però   è   possibile   invece   di   usare   il   comando  rm,   utilizzare   il  mv 
mettendo quello che si vuole cancellare in una directory di Trash creata.

more  e  less: sono due comandi per visualizzare un file, senza che scorra velocemente in avanti, 
pagina per pagina.  Less  è un po' più avanzato, permette di tornare indietro nella visualizzazione, 
more no.

man: il comando man visualizza il manuale in linea del programma richiesto. In genere quasi tutti i 
programmi hanno un manuale velocemente consultabile, con tutte le opzioni e le funzioni annesse. 
La visualizzazione è semplice: man nome_programma.
shutdown: è il comando per arrestare il sistema e riavviarlo o spegnerlo. In genere (ma varia a 
seconda delle configurazioni) è un comando che può eseguire solo l'utente root.

su: questo è un comando che permette di entrare come altro utente senza dover uscire da quello 
sotto cui si lavora. Naturalmente la prima cosa sarà quella di dover inserire la password di accesso. 
È molto comodo, poiché permette la manutenzione ad un utente (che amministra il sistema) di 
entrare come root senza dover interrompere le applicazioni avviate. La sintassi è “su nome­utente”, 
oppure solo “su” per il super­utente.

mkdir: il comando mkdir crea una directory vuota. La sintassi è semplice: mkdir nome_directory.

rmdir:   è   il   comando   che   elimina   una   directory   vuota.   Se   la   directory   non   è   vuota,   bisognerà 
utilizzare il comando per eliminare i file con l'opzione ­r: rm ­r nome_directory.
Oltre a questa piccola carrellata dei principali comandi della shell, vediamo alcune piccole utilità.

La PIPE (data dal simbolo “|”). Questo operatore è utile per collegare l'output di un primo comando 
all'input di un secondo comando. Per intenderci meglio: esegue il secondo comando sull'output del 
primo.
Un  esempio:  cat 1°tempo.mpg 2°tempo.mpg | mencoder ­ovc lavc ­lavcopts vcodec=mpeg4 ­oac  
copy ­o c.avi

Allora: il primo comando concatena i due file mpeg. Non so se lo sapete, ma i file mpeg possono 
essere uniti semplicemente concatenando i due file, senza bisogno di riscrivere indici ed header. Si 
otterrebbe così un filmato mpeg composto dai due filmati concatenati; come da esempio, è utile per 
unire il primo ed il secondo tempo di un film o cose di questo tipo. A questo punto, il file risultante, 
il filmato unico appunto, viene passato ad  mencoder  che creerà il file c.avi, cioè tutto il filmato 
codificato e compresso in mpeg4 (il famoso DivX per chi giochicchia con queste cose).
Un altro utile operatore è “>“ (redirezionamento dell'output ad un file). Con questo operatore si 
può   mandare   l'output   video   (o   meglio   lo   standard   output)   di  qualsiasi  comando   ad   un   file. 
Nell'esempio “cat testo1.txt testo2.txt > testone.txt” vengono concatenati i due file di testo e il testo 
risultante dall'unione, invece che essere visualizzato sul monitor, viene mandato ad un nuovo file 
creato apposta, il testone.txt.
Nell'altro esempio “ls ­laF ­­color > la_mia_home.txt”, invece, viene creato un file contenente il 
contenuto della directory.


Un altro utile comando di shell è “lpr”. Esso invia un file direttamente alla stampa. L'argomento di 
lpr può essere qualsiasi file in formato testo semplice, ghostscript o in formato pdf. Se il formato è 
di altro genere, la shell cerca di inviarlo come se fosse un testo semplice, quindi è meglio evitare, 
dato che molto spesso si tratta di roba incomprensibile che non ha senso stampare.
Abbiamo visto che molti comandi richiedono delle opzioni per svolgere il compito che vogliamo. In 
questo modo il comando si allunga. Per abbreviare un po' la battitura e velocizzare il lavoro c'è la 
possibilità di creare degli  alias. Gli alias sono dei comandi alternativi, in genere molto brevi, che 
vengono programmati per eseguire comandi più lunghi in termini di battitura. Sono personali e sono 
liberi. Attenzione però a non creare un alias con il nome di un comando già esistente, poiché quel 
comando non sarà poi più accessibile direttamente, ma solo specificando il percorso completo in cui 
si trova.

Negli esempi ci sono alcuni degli alias che utilizzo io.
lll  mi   mostra   il   contenuto   di   una   directory,   visualizzando   tutti   i   file,   anche   quelli   nascosti, 
distinguendomi i file eseguibili, le directory e i file di dati utilizzando anche i colori. Il tutto poi 
impaginato a schermate.

pp  mi visualizza tutti i processi (comando  ps) dell'utente  maury  (cioè io), impaginando il tutto a 
schermate.

cdm mi monta il cd inserito nel lettore cd­rom.

cdr mi entra nella directory in cui è montato il cd­rom. Vedremo poi il concetto di montaggio di un 
dispositivo.

ucd alla fine del lavoro con il cd, me lo smonta.

Attenzione alla sintassi. Quella visualizzata negli esempi è la sintassi per la shell BASH. Per alcune 
shell cambia leggermente; ad esempio nell c­shell non si mette l'uguale, ma un semplice spazio.
Un altro sistema per velocizzare il lavoro, che si aggiunge al sistema degli alias, è quello di far 
riconoscere   alla   shell   cosa   vogliamo   battere   sulla   tastiera   e   fargli   concludere   il   comando 
automaticamente. Per questo si batte il  tasto TAB  dopo i primi caratteri di un comando o di un 
nome di file. A questo punto la shell cercherà tutti i possibili comandi e file che iniziano con quei 
caratteri e nel caso di risultato unico completerà automaticamente il comando od il nome del file. Se 
il risultato non è unico, allora visualizzerà tutte le possibilità sullo schermo, invitando l'utente a 
battere qualche carattere ulteriore. Il tasto TAB può essere utilizzato anche per completare i nomi 
dei file argomento di un comando.
Vi   assicuro   che   prendendo   una   certa   dimestichezza   con   questa   caratteristica,   il   lavoro   diventa 
velocissimo.




Come molti altri sistemi operativi, anche in Linux si utilizzano i due caratteri jolly da inserire nei 
nomi dei file.
Il carattere “?” sostituisce uno e un solo carattere qualsiasi. Come vedete negli esempi, nel primo 
caso posso non ricordarmi se il nome del file pdf da aprire è cartellone o cartelloni. Allora posso 
sostituire l'ultima lettera con il punto interogativo (?) e la shell identificherà il file, qualsiasi sia 
l'ultima lettera. Lo stesso si può fare con le directory, come viene illustrato nel secondo esempio.

E poi c'è il  carattere asterisco “*”  che sostituisce un numero qualsiasi di caratteri consecutivi. 
Anche qui, come per il punto interrogativo, l'utilizzo può essere sia nel nome di un file, sia nel 
nome di una directory.

Inoltre i due caratteri jolly possono essere utili per operazioni su più file. Ad esempio, se volessi 
cancellare tutte le foto in formato jpeg (con estensione jpg, dato che in Linux l'estensione non è 
indicativa), basterà fare un rm *.jpg. Il comando rm sarà così rivolto a tutte le foto (o meglio a tutti i 
file) con estensione jpg.




Quando si lavora da shell, spesso si lanciano dei comandi di lunga esecuzione. Finché l'esecuzione 
non   verrà   terminata   la   shell   risulterà   occupata   ed   inutilizzabile.   E   allora   qual   è   la   soluzione? 
Sfruttare   il  multitasking.   Per   fare   questo   da   shell,   si   utilizza   la   cosiddetta  esecuzione   in 
background, semplicemente mettendo il simbolo “&” (e commerciale) alla fine del comando.
Cosa significa? Il comando verrà lanciato lasciando libera la shell per altri lavori, utilizzando le 
risorse libere di sistema. In questo modo sarà possibile lanciare altri comandi, sia in background, sia 
non, in maniera che il computer divida tra di essi le risorse. Attenzione, un comando può essere 
lanciato in background a patto che non sia interattivo: per intenderci non dovrà chiedere degli input 
da tastiera, in quanto tutto quello che sarà battuto da tastiera sarà indirizzato alla shell e non al 
programma in esecuzione. Ad esempio se lancio un programma non in background che mi chiede il 
mio   nome,   io   potrò   battere   il   mio   nome,   il   tasto   INVIO   ed   esso   sarà   preso   come   input 
dall'applicazione. Ma se l'applicazione è in background, essa mi chiederà il mio nome, ma poi 
quello che batterò sarà preso come comando di shell e non come input del programma. Insomma si 
va solo incontro a problemi. Quindi attenzione: lanciare in background solo applicazioni autonome 
e non interattive.
Nell'esempio vedete che viene lanciato il Mozilla, lasciando libera la shell. Se non ci fosse la “&” la 
shell risulterebbe occupata e non utilizzabile.
Allora. Abbiamo visto come si lavora da shell sotto Linux. La cosa che osserva la maggior parte dei 
miei amici che mi vede al lavoro sotto Linux è questa: “Ma si devono dare i comandi da tastiera. Ma  
che arretrato Linux!”. Questo non è vero. Tramite gli ambienti a finestre tipo KDE o Gnome si può 
lavorare tranquillamente anche con finestre, icone e mouse, più o meno come siete abituati coi vari 
Windows. L'utilizzo del lavoro da shell è spesso una scelta; infatti, chi è pratico ed abituato con la 
tastiera  riesce a lavorare in maniera più fluida e veloce rispetto a chi lavora generalmente con il 
mouse. Un classico esempio: quando si lavora con un word­processor, un programma di battitura, si 
utilizza il “copia­incolla” con la seguente procedura:
1 – si seleziona con il mouse la porzione di testo
2 – col tasto destro si richiama il menù
3 – si seleziona la voce “copia”
4 – ci si sposta nell'area dove si deve incollare
5 – si preme il tasto destro per richiamare di nuovo il menù
6 – si seleziona la voce “incolla”.

Con la tastiera la cosa si velocizza:
1 – si seleziona
2 – CTRL + C che equivale al ”copia”
3 – si va nell'area di destinazione
4 – CTRL + V che equivale all'”incolla”.

Chi è bravo guadagna tempo...

Allora,   capite  perché  è   una  questione  di   scelta?  Il  principiante  troverà   più  comoda   e facile   da 
memorizzare la procedura con il mouse, ma chi ha una certa dimestichezza ed una certa volontà di 
velocizzare il proprio lavoro, ecco che sceglie la keyboard, la tastiera, e quindi anche la shell, che 
come abbiamo visto ha molti strumenti che permettono un lavoro più rapido.
I   primi   tempi   in   cui   lavorerete   con   Linux   vi   accorgerete   subito   di   una   cosa:   è   un  sistema 
stabilissimo.   Chi   viene   da   ambienti   Microsoft   saprà   benissimo   cosa   significhi   dover   riavviare 
spesso il computer. Con Linux questo, salvo rare eccezioni, non avviene mai. Il sistema operativo 
rimane   sempre   in   massima   efficienza.   La   cosa   che   può   capitare   è   che   si   blocchi   qualche 
applicazione; questo può succedere a causa di bachi nell'applicazione stessa, ma con Linux non 
vedrete mai il puntatore del mouse bloccato. Il sistema continua a girare senza problemi e sarà 
possibile  chiudere la singola applicazione senza dover  riavviare  l'intero computer.  Per chiudere 
un'applicazione bloccata c'è il comando “kill”, a cui bisogna dare come argomento il PID, il numero 
che identifica ogni applicazione, che si può trovare con il comando “ps ­u utente”. Verrà chiusa la 
singola applicazione, senza bisogno di riavviare tutto il sistema.


E poi Linux, come tutti i sistemi UNIX­like, simili come struttura allo UNIX, offre una sicurezza 
molto maggiore. Tutti quanti sentiamo sui telegiornali virus fa strage di PC qua, cracker viola il 
sistema là, ecc...

Attenzione ad una cosa: “cracker” e non “hacker” come erroneamente nominano i mass­media. Il 
cracker è il pirata informatico che fa un danno a qualcun altro per divertimento e/o per fini di lucro. 
Il termine  hacker, invece, identifica uno smanettone, uno che utilizza l'intelligenza e l'abilità per 
degli scopi positivi. È una persona che utilizza l'intelligienza per riuscire ad utilizzare un qualcosa 
per uno scopo per la quale non è stata progettata. Un esempio di hacker potete essere voi ogni qual 
volta utilizzate ad esempio l'editor degli sms del vostro telefonino semplicemente per ricordarvi un 
numero   o   una   data;   l'SMS   è   nato   per   un   altro   scopo,   quello   di   messaggistica,   ma   voi   l'avete 
utilizzato come block­notes; questa è una semplice azione di hackeraggio. Quindi attenzione a non 
confondere   hacker,   termine   positivo,   con   cracker,   termine   negativo   che   identifica   il   vandalo 
informatico.

Allora, ebbene, con Linux il termine  
                                       virus 
                                              ve lo potete dimenticare
                                                                      . Primo perché Linux è ancora 
poco diffuso, quindi chi crea queste “subdole creature” prende poco in attenzione Linux. Un virus, 
infatti, come prima cosa deve infettare il mio pc, come seconda poi deve diffondersi ad altri pc. Io 
personalmente sono circondato da gente che utilizza Windows e quindi il virus si perderebbe subito, 
poiché   chiaramente   un   eseguibile   Linux   non   può   girare   sotto   Windows   e   viceversa.   Il   sistema 
Windows, molto diffuso, invece si presta bene ad epidemie.
E poi il motivo più importante: il file system è caratterizzato da permessi. Quindi io singolo utente 
che   ho   i   diritti   di   scrittura   solo   della   mia   cartella   personale   e   di   qualche   altra   cartella   meno 
importante (tipo la  /tmp), non potrò scrivere sui file di sistema, in quanto non ne ho i diritti di 
scrittura. Quindi un programma che vuole scrivere sul sistema, tipo appunto un virus per installarsi, 
non ne ha la possibilità. Questo è il motivo per cui non bisogna mai utilizzare l'utente root se non 
per stretta necessità, poiché il super­utente può scrivere ovunque. Quindi un virus non riesce ad 
installarsi sul mio sistema e a parte qualche danno iniziale poi morirebbe lì. Quindi non si tratta 
solo   di   diffusione.   I   sistemi   UNIX­like   sono   sistemi   che   strutturalmente   sono   più   robusti   e 
garantiscono più sicurezza sul piano “virus informatici”.
Poi ogni utente ha una sua password di accesso. Niente password, niente utilizzo del sistema. Io 
utente posso entrare in remoto con la mia password, ma un cracker che non la conosce ha molte 
difficoltà. Non è impossibile, ma molto difficile. Per la cronaca: Windows 98 permetteva l'entrata a 
chiunque:   in   rete   si   trovano   ancora   programmini   che   permettono   qualsiasi   tipo   di   scherzetto   a 
distanza, via internet, ad una potenziale vittima, compreso lo spegnimento del computer.

Ultima   cosa,   molto   importante:  Linux   è   software   libero.   Quindi   eventuali   bachi   di   sicurezza 
possono essere notati dall'umanità intera e non soltanto da 10 (più o meno) programmatori. La 
probabilità di identificare bachi è più alta e saranno più tempestivamente corretti. Poi non sarà 
possibile da parte del programmatore inserire codice maligno, tipo spy­ware per spiare quello che 
facciamo o cose del genere, in quanto, avendo il sorgente, verrebbe subito individuato. Chi conosce 
la programmazione e i vari linguaggi può vedere per filo e per segno tutte le operazioni che esegue 
un programma.

Quindi Linux e il software open­source battono in sicurezza il software a cui siete abituati. Decidete 
voi se vi sembra una cosa da nulla o, invece, molto importante...




Vediamo ora alcune possibili installazioni di Linux. Oltre ad essere installato come unico sistema 
del computer, Linux offre anche la possibilità di condividere il PC con altri sistemi e sarà possibile 
ogni volta decidere se far partire la macchina con Linux, con Windows 98, con BSD, ecc. ecc.
Per far questo la cosa migliore è  partizionare l'Hard­Disk. Si crea una partizione dove starà il 
vecchio sistema operativo, a cui potrete tornare quando vorrete. Altre partizioni (perché per Linux 
ne servono almeno 2, una per il sistema, l'altra per lo swap, la memoria virtuale) dove potrete 
mettere Linux. Quando avvierete il computer, verrà subito caricato un programmino che si chiama il 
bootloader che vi permetterà di scegliere se caricare il vecchio sistema o Linux.
Questa è la soluzione migliore riguardo a velocità del sistema, in quanto ogni sistema operativo avrà 
il suo hard­disk direttamente e le risorse dedicate completamente a lui.

Un altro sistema per utilizzare Linux è la distribuzione live. Praticamente il Linux è installato su un 
CD avviabile.  Si avvia il computer da cd­rom e da qui verrà caricato Linux. L'hard­disk verrà 
utilizzato   solo   per   i   file   personali   e  di   configurazione,   messi   in  una   determinata   directory   del 
sistema installato nell'hard­disk. Questa è una soluzione molto comoda, ma non permette modifiche, 
installazioni   di   programmi   e   aggiornamenti,   in   quanto   il   sistema   risiede   in   un   cd­rom,   un 
dispositivo in sola lettura. La comodità sta nel fatto che con i cd­live si può vedere al volo una 
distribuzione, che caratteristiche presenta, senza la scomodità dell'installazione.

L'installazione su di un file. Questa è una soluzione che proponeva qualche anno fa la RedHat. Ora 
non so di preciso se è ancora utilizzata. Il sistema viene installato non su una partizione reale, ma su 
una  partizione virtuale:  cioé  viene creato  un  file  nel vecchio sistema installato nell'hard­disk   e 
all'interno di questo file vengono messi i dati che qualche opportuno programma interpreta come se 
fossero   dati   in   un   hard­disk   reale.  Anche   questo  è   un   sistema   comodo,   ma   presenta  una   certa 
lentezza, in quanto il computer impiega delle risorse nell'interpretazione della partizione virtuale.

Infine l'installazione su macchina virtuale. Esistono alcuni programmi, il più famoso è VMWare, 
programma  non  open­source e tutt'altro che gratuito, che si avviano da sistemi operativi già in 
esecuzione (esiste sia per Linux che per Windows NT, 2K, XP) ed emulano un computer appena 
acceso, con tanto di BIOS. Compare lo schermo esatto di un pc all'avvio in una finestra. Da qui si 
potrà installare un ulteriore sistema operativo e una volta installato potranno essere eseguiti due 
sistemi   contemporaneamente.   L'installazione   può   avvenire   sia   su   una   partizione   virtuale,   come 
sopra, sia reale precedentemente creata. Il pc sarà naturalmente più lento, ma la comodità di avere 
due sistemi contemporaneamente supera questo aspetto negativo.
Passiamo ora a dare un'occhiata al file system di Linux.
Iniziamo col dire che in Linux qualsiasi cosa viene trattata come se fosse un file. Di file ce ne sono 
tre tipi:
file di tipo  directory  o  cartella, come esattamente in altri sistemi. Sono un tipo di file che non 
contengono dati, ma sono strutture che permettono di contenere al loro interno altri file, in maniera 
più   ordinata,   rendendo   anche   più   facile   l'accesso.   Abbiamo   già   visto   i   comandi   per   creare, 
cancellare od entrare in una directory. Una volta dentro una directory, quella diventerà il luogo di 
lavoro della shell.
Poi ci sono i file di dati. Sono tutti i file eseguibili, creati e propri di qualche programma, file di 
configurazione, di dati, ecc. Possono essere di due tipi. I file di tipo ASCII sono tutti quei file scritti 
con codifica ASCII, il vecchio codice che assegna ad ogni carattere visualizzabile un numero da 0 a 
255. Sono accessibili, leggibili e modificabili anche con un editor di testo, in quanto ogni byte che 
compone il file è tranquillamente interpretabile e visualizzabile tramite il codice ASCII. L'esempio 
più standard di un file ASCII è un file di testo semplice, creato col  Notepad  di Windows o con 
qualche altro editor di testo semplice (in Linux ce ne sono diversi: vi, emacs, pico, kedit, ecc...). E 
poi ci sono i file di tipo binario, non visualizzabili e difficilmente comprensibili. A questa categoria 
appartengono tutti i file eseguibili, tutti i file complessi creati da qualche suite per ufficio, tutti quei 
file   che   al   loro   interno   contengono   delle   istruzioni   che   devono   essere   interpretate   ed   eseguite 
esclusivamente dalla macchina. Ad esempio un foglio di calcolo sarà salvato su un file binario, in 
quanto, oltre ai valori inseriti nelle singole celle, dovrà contenere anche delle istruzioni sul formato 
(grasseto, sottolineato, ecc.), sui colori, sulle formule, ecc...
Infine ci sono i file di tipo collegamento o link. Sono dei file che in sé per sé non contengono dati, 
ma si ricollegano ad altri file. Io posso così avere accesso ad un determinato file anche trovandomi 
in una directory differente da quella in cui risiede, semplicemente perché nella directory dove sono 
ho un collegamento al file in esame. Di collegamenti ne esistono due tipi:  fisici  e  simbolici. Il 
collegamento fisico è praticamente un secondo nome dato ad un file. In questa maniera il file risulta 
due volte nel file system, anche in directory diverse, ma sul disco rigido è presente in singola copia, 
permettendo   un   risparmio   di   spazio.   Se   ad   esempio   ho   questi   due   file,   /home/maury/a   e 
/home/guest/b, uno link fisico dell'altro, potrò modificare uno dei due a piacere per modificare il 
file. Quindi un link fisico è lo stesso file, ma presente in due percorsi del filesystem differenti. Un 
link simbolico è, invece, un file a sé, che contiene la posizione nel file system del file a cui punta. Il 
concetto di link simbolico è molto simile al concetto di link a cui è abituato chi utilizza sistemi 
operativi  Microsoft.  La  differenza tra  questi   due  tipi  di   collegamento  è   molto  sottile  e  diventa 
significativa   per   chi   fa   un   utilizzo   abbastanza   avanzato   del   sistema.   In   tutti   i   modi   non 
approfondiamo, in quanto per capire bene bisogna introdurre il concetto di i­node.




Ora vediamo la struttura del file system. In Unix e di conseguenza anche in Linux non esistono le 
lettere di unità. Quindi dimentichiamoci dell'hard disk C:, del lettore cd­rom D:, ecc... Tutte le 
periferiche sono accessibili dalla directory root (radice) “/”. Ma allora, come si accede ad un hard 
disk o ad un cd­rom? Allora vediamo di introdurre il concetto di directory di mount, o punto di 
mount.   Esistono   nel   file­system   di   Linux   delle   directory   fittizie,   che   non   contengono   file   che 
risiedono   nell'hard   disk,   ma   che   possono   essere   utilizzate   per   “visualizzare”   (attenzione,   non 
contenere) il contenuto di un cd­rom o di una partizione di disco rigido, o anche di qualche unità 
che  sta  in  rete. In genere queste directory si trovano nella directory  /mnt, ma possono stare  in 
qualsiasi altra parte. Per renderle accessibili sarà necessario “montarle”, dire cioè al sistema di 
renderle accessibili in un particolare punto di mount. Per far questo si utilizza il comando “mount”. 
La sintassi è la seguente:

                                  mount dispositivo  punto_di_mount  ­t  tipo

Il dispositivo viene individuato dando il file virtuale che identifica quel dispositivo nella directory 
/dev (device). Ad esempio gli hard disk IDE sono rappresentati dai file /dev/hda /dev/hdb /dev/hdc 
ecc. e le partizioni in un singolo hard disk con un numero progressivo dopo il nome di device: 
/dev/hda1, /dev/hda2, ecc. I cd­rom, invece, spesso sono collegati su controller IDE e quindi anche 
loro saranno rappresentati da /dev/hdc, ecc, ma in molte distribuzioni sono anche collegati tramite il 
link /dev/cdrom, /dev/cdrom1, ecc.

Quindi per montare un cd­rom e renderlo accessibile, si dovrà dare il comando

                               mount /dev/cdrom /mnt/cdrom ­t auto (iso9660)

Il tipo di filesystem, con l'opzione ­t auto verrà riconosciuto in automatico dal kernel.
Vediamo ora cosa ci presenta la directory radice, la root directory (/).
Se diamo il comando ls troviamo una ventina di directory figlie.

Allora, descriviamole un attimo:

/bin  è una directory che contiene molti comandi binari ed eseguibili per tutti gli utenti. Questa 
directory   sarà   scrivibile   solo   dall'utente   root,   così   che   un   utente   normale   non   potrà   installare, 
disinstallare applicazioni e tantomeno potrà fare danni al sistema. Gli utenti normali avranno solo il 
permesso di lettura ed esecuzione. Molti dei comandi di base si trovano in questa directory:  rm, 
rmdir, ecc.

/boot contiene i file di boot, di avviamento, la parte centrale del kernel (senza moduli che verranno 
caricati   successivamente)   che   viene   caricata   come   prima   cosa   e   in   alcuni   casi   i   file   di 
configurazione del bootloader.

/dev  l'abbiamo   vista   prima,   contiene   dei   file   speciali,   virtuali,   che   rappresentano   i   dispositivi 
collegati al computer: stampanti, harddisk, lettori dvd­cdrom, masterizzatori, schede video, schede 
audio, mouse, modem, ecc. ecc.

/etc è una directory destinata ai file di configurazione. Questi saranno i file di configurazione base, 
poi   ogni   utente   potrà   personalizzare   le   varie   applicazioni   con   dei   file   di   configurazione   che 
risiederanno nella propria home.

/home  contiene le cartelle personali di ogni utente. Nella propria home ogni utente avrà i propri 
documenti, le configurazioni personali e tutto ciò che vorrà.
/lib contiene i moduli del kernel, le parti del kernel che servono a gestire ad esempio le periferiche 
di input/output, ma anche altre cose e tutte le librerie che sono condivise da più programmi.

/proc  è   una   directory   virtuale,   creata   ogni   volta   che   si   avvia   il   sistema   e   viene   utilizzata 
esclusivamente dal kernel.

/root è la home del super­utente.




/sbin contiene i binari eseguibili che vengono utilizzati generalmente dall'utente root.

/tmp è una cartella accessibile a tutti anche in scrittura per i file temporanei. Meglio utilizzare una 
/tmp  all'interno   della   home,   in   quanto   la  /tmp  comune   è   disponibile   per   tutti   e   più   o   meno 
periodicamente l'utente root potrebbe ripulirla per liberare spazio nell'hard­disk.
/usr contiene molti comandi e molte librerie per i vari programmi e anche la documentazione delle 
varie applicazioni.

/var  è una directory dedicata a dei file che vengono scritti molto spesso. Tra questi ci sono i log 
delle applicazioni, le code di stampa e altre cose di questo tipo. Ad esempio la Mandrake la utilizza 
per scaricare i temporanei degli aggiornamenti.


Ecco qui. Abbiamo concluso questo rapido tour nel file system di Linux. Per chi viene da sistemi 
Microsoft, all'inizio avrà un certo disorientamento a vedere un contenuto dell'harddisk di questa 
maniera, in quanto la differenza c'è. Ma con l'abitudine imparerete a girare in maniera tranquilla e 
sicura tra le varie cartelle.




Passiamo ora a vedere come si installa un programma sotto Linux.

Il primo modo consiste nel compilare direttamente i sorgenti. Molte applicazioni per Linux sono, 
infatti, open source. Quindi dalla relativa pagina web spesso è possibile scaricare i sorgenti, in C, in 
Perl o in qualsiasi altro linguaggio. Toccherà a noi poi compilare il programma ed installarlo. La 
cosa può  spaventare, dato che compilare un programma è spesso una procedura lunga, dove le 
istruzioni di compilazione da dare sono molte: molti programmi sono composti da diversi moduli e 
librerie e bisogna compilare ognuno di essi. Per fortuna che quasi sempre ci aiuta il programmatore 
che, oltre ai sorgenti, ci fornisce anche degli strumenti per una compilazione automatica. Questo poi 
lo vedremo dopo...
L'installazione tramite compilazione diretta è più scomoda, in quanto la compilazione richiede un 
certo tempo, ma si ha poi il vantaggio di avere un programma compilato a pennello per il proprio 
hardware e per il proprio sistema, ottimizzando così anche il suo successivo utilizzo.

Comunque esiste un tipo di installazione anche più semplice. Si possono trovare molto spesso anche 
dei pacchetti precompilati che si installano in maniera molto semplice, come siete abituati a fare 
con i sistemi Microsoft. I pacchetti RPM, sviluppati da RedHat e adottate poi da altre distribuzioni, 
Fedora, Mandrake, SuSe, ecc... I pacchetti DEB sviluppati da Debian. Altre forme di precompilati 
con varie tecniche di installazione. Ad esempio L'OpenOffice.org precompilato si installa lanciando 
il programma di installazione “install.sh” e vedrete che l'installazione è molto simile a quella che 
avviene in ambiente Windows.
Installare un precomilato è una procedura molto veloce, ma in genere un pacchetto precompilato è 
creato in maniera molto generica, gonfiato con parti di codice per gestire cose che non servono, tipo 
varie schede video, vari processori, ecc.




Allora, vediamo ora come si compila un programma.
Il  TARBALL. In genere dalla pagina web del programma è sempre possibile scaricare i sorgenti. 
Questi sono racchiusi in un unico file che spesso ha due estensioni :  .tar.gz, il cosiddetto tarball. 
Questo perché la moltitudine di file che costituiscono i sorgenti del programma sono stati trattati 
prima   con   l'archiviatore  Tar,   che   serve   ad   archiviare   molti   file   in   un   file   unico,   e   sono   stati 
compressi poi con il Gunzip, un compressore di file dello stesso tipo del più famoso Winzip, e che 
serve a far occupare meno spazio in un disco fisso e a far scaricare meno byte dalla rete. Quindi una 
volta scaricato, abbiamo un unico file che contiene tutti i sorgenti del programma da installare.
Per decomprimere il file bisogna dare l'istruzione

                                                gzip ­d nome_file.tar.gz

ottenendo così il file tar non compresso. L'opzione ­d indica appunto la decompressione. Senza, il 
comando comprime. Quindi si scompone il tar con l'istruzione

                                                 tar ­xvf nome_file.tar

ottenendo   così  una  directory  con  all'interno  tutti   i  file  del   codice  sorgente  del  programma.   Le 
opzioni:
­x sta per “estrai”, ­v fa visualizzare sul video l'elenco dei file estratti e ­f, invece, indica che segue il 
nome del file in oggetto.
Si può velocizzare la procedura con un'unica istruzione
tar ­xzvf nome_file.tar.gz

che come vedete, il comando  tar, tramite l'opzione “­z” degizippa il  .tar.gz  prima di scomporlo. 
Un'istruzione sola al posto di due.




Attenzione: a volte si utilizza un compressore differente dal Gunzip, il Bzip2, un compressore un 
po' più potente per i file grandi. La procedura in questo caso è simile:

si decomprime col comando

                                      bunzip2 nomefile.tar.bz2

e poi si detara come prima, oppure in maniera veloce

                                      tar ­xjvf nomefile.tar.bz2

dove l'opzione ­z è sostituita dall'opzione ­j, che indica appunto di decomprimere un file bzip2 e non 
un gzip.
E ora vediamo  come si compila  di solito il programma. Si entra nella directory che è risultata 
dall'estrazione dal tarball.

                                                cd nome_directory

Chiedendo una lista dei file con ls se ne notano alcuni coi nomi scritti completamente in maiuscolo, 
tipo  README,  INSTALL.   Questi   sono   dei   file   ASCII   che   conviene   sempre   leggere   in   quanto 
contengono informazioni importanti sulla compilazione e sull'installazione del programma. Molti 
programmi possono, infatti, richiedere delle procedure e delle opzioni differenti dalla norma. In 
genere comunque si compila in questo modo:

                                                     ./configure

che  lancerà   un  tool  automatico  per  il  riconoscimento  delle caratteristiche  della macchina  e  del 
sistema sul quale sarà installato il programma. Vedrete sul monitor l'elenco dei risultati di tutte le 
analisi che fa questo tool. Inoltre scriverà il Makefile, un file dove saranno scritti tutti i parametri 
per la compilazione e per l'installazione, indispensabile per i passaggi successivi.

Poi si va col comando

                                                        make

che  eseguirà   la compilazione vera e propria. Anche qui saranno visualizzati sul monitor tutti  i 
comandi   ed   eventuali   messaggi   di   errore   nel   caso   la   compilazione   non   vada   a   buon   fine.   E' 
interessante vedere che bella mole di comandi il programmatore ci ha risparmiato.

Alla fine della compilazione si installa il programma (da root, naturalmente) con

                                                    make install

e a questo punto il programma sarà pronto per essere eseguito.
Piccola curiosità: per disinstallare il programma, dalla stessa directory

                                                  make uninstall

Queste sono le procedure più comuni, ma meglio leggere sempre i file con i nomi in maiuscolo, in 
quanto a volte sarà necessario qualche altro passaggio per la compilazione e l'installazione.




Allora, passiamo ora a qualche consiglio su una migrazione meglio gestibile.
Per passare a Linux in maniera meno shoccante, conviene iniziare a sostituire pian piano i vari 
programmi, che si utilizzano col vecchio sistema, con quelli che verranno poi utilizzati sotto Linux. 
Molti di questi, infatti, esistono anche per i sistemi Microsoft.
Iniziare con  sostituire ad esempio l'Office di  Microsoft  con l'OpenOffice.org, convertendo  pian 
piano i documenti da .doc, ad esempio, in formato di OpenOffice.org (.sxw). Il Mozilla al posto di 
Internet   Explorer   e   di   Outlook   Express,   avendo   anche   la   possibilità   di   importare   dai   vecchi 
programmi la rubrica, i messaggi di posta e gli indirizzi internet tra i preferiti. L'MPlayer al posto 
del Windows Media Player, per vedere DVD e file multimediali. Provare il The Gimp per fare foto 
ritocco. Xchat al posto di mIRC per chi usa il sistema di messaggistica IRC. E molti altri programmi 
che potranno essere trovati in rete.
Questi sono tutti programmi che esistono anche per Windows, quindi si può iniziare a prenderci 
familiarità senza dover installare ancora il sistema Linux.
Così facendo inizieremo a rendere la maggior parte dei nostri documenti accessibili e modificabili 
anche da Linux.
A questo punto, quando ci si sente pronti per il salto maggiore, si installa Linux. Personalmente 
consiglio sempre di installare Linux su una partizione propria, ma in tutti i modi, le prime prove 
potranno essere fatte con una distribuzione di tipo “live”, quelle famose che si avviavano da cd­rom.

Poi si inizia quindi ad utilizzare Linux ricorrendo a Windows solo nei casi di estrema necessità, che 
ammetto, ci saranno sempre: amici che mandano documenti con all'interno WordArt e altra roba 
proprietaria o pagine web apribili solo da Internet Explorer, in quanto non rispettano gli standard 
del web, causate da una stupida cecità da parte di molti professionisti della rete.

Ed infine per ogni problema cercarne la soluzione in rete. Qualcuno ci sarà sempre che c'è passato 
prima di voi. In primis, naturalmente, iscrivetevi alla mailing list del Telug, dove troverete spesso 
qualcuno disposto ad aiutarvi.
Ed ora facciamo un elenco di buoni motivi per passare al Pinguino ed al software Open­Source.

1 – È quasi sempre gratuito.
L'ho messo per primo perché indubbiamente è quello che più rende interessante la cosa all'utente 
comune. Attenzione, però: quasi sempre. Non pensate che chi vi distribuisce software open source 
non possa farsi pagare.

2 – È più stabile
Linux è più stabile, come abbiamo detto prima. Quindi si ottimizza il tempo, niente più riavvii.

3 – È più sicuro.
E si vive più tranquillamente, senza dover prendere particolari precauzioni contro virus e robaccia 
del genere. In più non ci sarà più qualche fratello o nipote che vi fa impazzire il sistema installando 
chissacosa.

4 – Le applicazioni sono sempre di più. Ormai potete lavorare al 100% come lavoravate prima con 
Windows.   Qualche   mancanza   ancora   c'è   purtroppo:   ad   esempio   un   programma   equivalente 
all'AutoCad,   ma   in   genere   ci   si   arrangia   bene   per   tutto   il   resto.   Le   mancanze   col   tempo   si 
risolveranno: la comunità dell'open source è in continuo lavoro per sviluppare applicazioni sempre 
migliori.

5 – Si riesce a rifiutare il monopolio privato, che come si sa è tutt'altro che positivo.

6 – Tutti i documenti sono salvati in un formato non proprietario, ma aperto. Quindi un domani 
saranno   senpre   apribili   e   gestibili,   senza   il   bisogno   di   comprare   nuove   licenze.   Microsoft   ad 
esempio ha previsto nella sua licenza la revocabilità (almeno fino all'Office 2000, poi spero cha 
l'abbia tolta questa clausola). A quel punto, se un giorno Microsoft decidesse di togliervi la licenza 
per Office, per costringervi a comprare le nuove versioni, avendo tutti i file in  .doc, vi trovereste 
costretti ad acquistare. Beh, coi formati aperti questo non vale, poiché chiunque avrà la possibilità di 
sapere com'è strutturato un file di un documento e quindi di riuscire ad interpretarlo.

7   –   Alcune   distribuzioni   sono   facili   da   usare   per   tutti,   comprendendo   tools   grafici   per 
configurazioni. Molto simili all'ambiente Windows. Quindi, che Linux è difficile da utilizzare, non 
è più vero.

8   –   Si   ha   a   disposizione   il   codice   sorgente   e  si   può   quindi   modificare   e   modellare   a   proprio 
piacimento   qualsiasi   programma,   a   condizione   di   redistribuirlo   liberamente.   Per   questa 
caratteristica,   i   programmi   open   source   nascono   e   si   sviluppano   grazie   alla   collaborazione   di 
tantissimi programmatori. E si sa: l'unione fa la forza; 1000 cervelli possono avere idee migliori di 
quelle di 10.
Ed ora un po' di obiettività: ci sono anche alcuni contro:

1 – Utilizzare Linux richiederà del tempo per l'educazione al nuovo sistema. Ci si metterà un po' ad 
orientarsi   a   dovere   e   per   imparare   ad   utilizzare   le   nuove   applicazioni   open   source.   Quindi   è 
veramente gratuito? Sulla carta sì, ma qualche mese fa, in una conferenza (Rimini, 27 maggio 2004, 
intervento di Paolo Attivissimo), ho sentito questa frase: “E' gratuito, a patto che il tuo tempo non  
valga nulla”. Quindi preparatevi a qualche difficoltà iniziale. La cosa sicura è che vale la pena di 
fare l'investimento. Naturalmente parlo per chi si fa assistenza da sé; in caso si chiamino degli 
specialisti il discorso cambia.

2 – Molte applicazioni per determinati lavori mancano ancora all'appello. Abbiamo visto prima, ad 
esempio, l'equivalente dell'AutoCad. Beh, per ora si usa il dual­boot e al limite si ritorna “di là”, in 
tutti i modi si può provare l'emulazione con il wine, un progetto che sotto Linux tenta di emulare le 
API di Windows, rendendo possibile l'esecuzione di molti piccoli programmi eseguibili per DOS o 
per Win32. I grandi programmi probabilmente non funzioneranno, ma molte applicazioni Windows 
potranno essere utilizzate tranquillamente da Linux.

3 – Il problema maggiore: la compatibilità hardware. Molti hardware daranno problemi. Le ditte 
continuano a vendere hardware fornendo driver per Microsoft e lasciando gli utenti di altri sistemi 
operativi in mano alla comunità open­source, almeno per chi rende pubbliche le specifiche tecniche 
del componente, altrimenti il discorso si fa più complicato. Preparatevi quindi ad avere problemi se 
avete qualche hardware strano...
Riguardo a schede di rete Wireless o a Soft­Modem Conexant, segnalo in una piccola parentesi un 
progetto a pagamento: il DriverLoader, un programma in grado di leggere ed interpretare i driver 
per Windows, rendendoli utilizzabili anche sotto Linux. Io l'ho provato con una schedina wireless 
per il mio portatile e funziona molto bene.
Allora,  abbiamo visto brevemente  8 pro e 3 contro. Secondo voi  quindi conviene quantomeno 
provare ad effettuare il passaggio?

Io spero di avervi convinto, spero di avervi fatto una chiara presentazione delle caratteristiche di 
Linux, sperando che possa esservi stata d'aiuto per convincervi a tentare la migrazione e che vi 
possa essere stata d'aiuto per iniziare subito ad orientarsi discretamente bene nel nuovo sistema.

         ...e speriamo che domani Linux sia installato su qualche computer in più di oggi...
GRAZIE A TUTTI PER L'ATTENZIONE

Per chiunque voglia, qui c'è il mio indirizzo e­mail e questo è il  mio sito web, dove sarà presto 
disponibile una relazione dell'intervento (la presente) e probabilmente anche le registrazioni audio e 
video.

Poi ci sono i recapiti del Telug. Se vi iscrivete alla nostra mailing list, potrete ottenere lì molte 
risposte ai problemi più comuni. Per l'iscrizione basta andare su www.telug.it.

Más contenido relacionado

Similar a LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - trascrizione

Un Sistema Aperto Per Menti Aperte
Un Sistema Aperto Per Menti AperteUn Sistema Aperto Per Menti Aperte
Un Sistema Aperto Per Menti Aperte
Emmanuele Bello
 

Similar a LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - trascrizione (20)

Open non è free
Open non è freeOpen non è free
Open non è free
 
Introduzione al software libero
Introduzione al software liberoIntroduzione al software libero
Introduzione al software libero
 
Linux Pizza
Linux PizzaLinux Pizza
Linux Pizza
 
Presentazione progetto software libero scuole Torre del Greco
Presentazione progetto software libero scuole Torre del GrecoPresentazione progetto software libero scuole Torre del Greco
Presentazione progetto software libero scuole Torre del Greco
 
Presentazione software libero a scopo didattico scuole di Ercolano
Presentazione software libero a scopo didattico scuole di ErcolanoPresentazione software libero a scopo didattico scuole di Ercolano
Presentazione software libero a scopo didattico scuole di Ercolano
 
Linux e fs - Storia e caratteristiche vincenti
Linux e fs - Storia e caratteristiche vincentiLinux e fs - Storia e caratteristiche vincenti
Linux e fs - Storia e caratteristiche vincenti
 
Gallus oristano 25.2.12
Gallus oristano 25.2.12Gallus oristano 25.2.12
Gallus oristano 25.2.12
 
Software open
Software openSoftware open
Software open
 
Beni Culturali 2.1 Introduzione Os
Beni Culturali 2.1 Introduzione OsBeni Culturali 2.1 Introduzione Os
Beni Culturali 2.1 Introduzione Os
 
Software libero, pensiero libero
Software libero, pensiero liberoSoftware libero, pensiero libero
Software libero, pensiero libero
 
FLOSS: Free Software e Open Source
FLOSS: Free Software e Open SourceFLOSS: Free Software e Open Source
FLOSS: Free Software e Open Source
 
11 Il computer come calcolatore - 5
11  Il computer come calcolatore - 511  Il computer come calcolatore - 5
11 Il computer come calcolatore - 5
 
Free software & Open Source (FLOSS)
Free software & Open Source (FLOSS)Free software & Open Source (FLOSS)
Free software & Open Source (FLOSS)
 
Software Libero e Linux: non è solo questione di software
Software Libero e Linux: non è solo questione di softwareSoftware Libero e Linux: non è solo questione di software
Software Libero e Linux: non è solo questione di software
 
Un Sistema Aperto Per Menti Aperte
Un Sistema Aperto Per Menti AperteUn Sistema Aperto Per Menti Aperte
Un Sistema Aperto Per Menti Aperte
 
Il software open-source
Il software open-sourceIl software open-source
Il software open-source
 
Il software libero
Il software liberoIl software libero
Il software libero
 
Open source
Open sourceOpen source
Open source
 
Foss-Ingegneria
Foss-IngegneriaFoss-Ingegneria
Foss-Ingegneria
 
Venti anni di GNU/Linux
Venti anni di GNU/LinuxVenti anni di GNU/Linux
Venti anni di GNU/Linux
 

Más de Maurizio Antonelli

10-06-2008 Contributi specifici del karate all'attività sportiva, in età scol...
10-06-2008 Contributi specifici del karate all'attività sportiva, in età scol...10-06-2008 Contributi specifici del karate all'attività sportiva, in età scol...
10-06-2008 Contributi specifici del karate all'attività sportiva, in età scol...
Maurizio Antonelli
 
13-05-2006 - Il compostaggio domestico
13-05-2006 - Il compostaggio domestico13-05-2006 - Il compostaggio domestico
13-05-2006 - Il compostaggio domestico
Maurizio Antonelli
 
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - slides
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - slidesLinuxBeach 2006 - Criptografia e firma digitale con GnuPG - slides
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - slides
Maurizio Antonelli
 
LinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesLinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slides
Maurizio Antonelli
 
LinuxDay 2005 - Multimedialità con Linux - trascrizione
LinuxDay 2005 - Multimedialità con Linux - trascrizioneLinuxDay 2005 - Multimedialità con Linux - trascrizione
LinuxDay 2005 - Multimedialità con Linux - trascrizione
Maurizio Antonelli
 

Más de Maurizio Antonelli (9)

Corso arbitrale kumite - maestro G. Visciano - ASI Abruzzo 2010
Corso arbitrale kumite - maestro G. Visciano - ASI Abruzzo 2010Corso arbitrale kumite - maestro G. Visciano - ASI Abruzzo 2010
Corso arbitrale kumite - maestro G. Visciano - ASI Abruzzo 2010
 
Al di là del cielo... Guardando oltre le stelle - trascrizione
Al di là del cielo... Guardando oltre le stelle - trascrizioneAl di là del cielo... Guardando oltre le stelle - trascrizione
Al di là del cielo... Guardando oltre le stelle - trascrizione
 
Fabio Riccio - Un'esperienza di free-software nelle scuole
Fabio Riccio - Un'esperienza di free-software nelle scuoleFabio Riccio - Un'esperienza di free-software nelle scuole
Fabio Riccio - Un'esperienza di free-software nelle scuole
 
10-06-2008 Contributi specifici del karate all'attività sportiva, in età scol...
10-06-2008 Contributi specifici del karate all'attività sportiva, in età scol...10-06-2008 Contributi specifici del karate all'attività sportiva, in età scol...
10-06-2008 Contributi specifici del karate all'attività sportiva, in età scol...
 
Al di là del cielo... guardando oltre le stelle
Al di là del cielo... guardando oltre le stelleAl di là del cielo... guardando oltre le stelle
Al di là del cielo... guardando oltre le stelle
 
13-05-2006 - Il compostaggio domestico
13-05-2006 - Il compostaggio domestico13-05-2006 - Il compostaggio domestico
13-05-2006 - Il compostaggio domestico
 
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - slides
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - slidesLinuxBeach 2006 - Criptografia e firma digitale con GnuPG - slides
LinuxBeach 2006 - Criptografia e firma digitale con GnuPG - slides
 
LinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slidesLinuxDay 2005 - Multimedialità con Linux - slides
LinuxDay 2005 - Multimedialità con Linux - slides
 
LinuxDay 2005 - Multimedialità con Linux - trascrizione
LinuxDay 2005 - Multimedialità con Linux - trascrizioneLinuxDay 2005 - Multimedialità con Linux - trascrizione
LinuxDay 2005 - Multimedialità con Linux - trascrizione
 

LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - trascrizione