Linux - SisInfLab

Transcript

Linux - SisInfLab
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Linux
Linux - Introduzione
La Shell Bash
Testi di riferimento:
Linux e la shell Bash: http://sisinflab.poliba.it/ruta/linux/Linux e la shell Bash.pdf
Di Matt Welsh, Matthias Kalle Dalheimer, Lar Kaufman “Linux. La guida” Apogeo
A.A. 2013-2014
1
Fondamenti di
Sistemi Operativi
Cos’è Linux
DEI - Politecnico di Bari
Illustrazione tratta da Advanced Programming in the UNIX Environment: Second Edition
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
2
Fondamenti di
Sistemi Operativi
Cos’è Linux
DEI - Politecnico di Bari
Cos’è LINUX?
• Si tratta di un clone di UNIX
• Più precisamente è il kernel del S.O GNU/Linux
• Fornisce un'interfaccia tra hardware e programmi-utente (alternativa a
Windows, Mac OS, MS-DOS, Solaris, …)
• Linux è ispirato a Minix, S.O. UNIX-like sviluppato da Andrew
Tanenbaum
• Nasce dall'idea di sviluppare un S.O. che tenga conto del feedback
degli utenti
• Stabile e versatile
• Può essere installato su home PC e server di rete
• Maggiore affidabilità, minor costo
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
3
Fondamenti di
Sistemi Operativi
Un po’ di storia
DEI - Politecnico di Bari
L’evoluzione
• UNIX sviluppato nei laboratori AT&T Bell da Ken Thompson
• Linux sviluppato a partire dal kernel creato da Linus Torvalds
(studente all’università di Helsinki) nel 1991
• Inizialmente fu accessibile solo per gli “addetti ai lavori” (Anni '90)
• Sono stati sviluppati programmi e driver specifici
• Nascono compagnie, come la Red Hat, che portano Linux al livello di
qualsiasi altro S.O. user-friendly
• Torvalds oggi lavora per la manutenzione del “suo” kernel
• Attualmente migliaia di sviluppatori lavorano al progetto
• Oltre 20 milioni di utenti LINUX nel mondo
• Ad oggi, è il S.O. che cresce più velocemente (numeri di versione)
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
4
Fondamenti di
Sistemi Operativi
Free software & Open source 1/3
DEI - Politecnico di Bari
Richard Stallman: GNU (GNU's Not Unix) Project
• È uno dei principali esponenti del software libero
• Fu il pioniere del concetto di copyleft
• autore di molte licenze copyleft compresa la GPL (GNU Public
Licence), la licenza per software libero attualmente più diffusa.
• Primi software realizzati:
 Emacs è un editor di testo libero;
 GCC (GNU Compiler Collection) è un compilatore multi-target;
 GDB (GNU debugger) è il debugger predefinito del sistema
operativo GNU;
• Nel 1990 inizia lo sviluppo di un kernel chiamato GNU Hurd, che
tutt'oggi è ancora insufficientemente stabile.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
5
Fondamenti di
Sistemi Operativi
Free software & Open source 2/3
DEI - Politecnico di Bari
•
Free Software: codice sorgente + eseguibile è distribuito
gratuitamente
•
Open source: codice sorgente + eseguibile è venduto
•
Software proprietario: eseguibile
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
6
Fondamenti di
Sistemi Operativi
Free software & Open source 3/3
DEI - Politecnico di Bari
• Un programma è software libero se gli utenti del programma godono
delle quattro libertà fondamentali:
1. Libertà di eseguire il programma, per qualsiasi scopo.
2. Libertà di studiare come funziona il programma di modificarlo in
modo da adattarlo alle proprie necessità.
3. Libertà di ridistribuire copie in modo da aiutare il prossimo.
4. Libertà di migliorare il programma e distribuirne pubblicamente i
miglioramenti apportati, in modo tale che tutta la comunità ne tragga
beneficio.
L'accesso al codice sorgente è un prerequisito per i punti 2. e 4.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
7
Fondamenti di
Sistemi Operativi
La community
DEI - Politecnico di Bari
La potenza della “community”
• Migliaia di sviluppatori lavorano giornalmente al progetto
• Help on line sempre a disposizione
• Supporto per la maggior parte dell’hardware
• Traduzione degli applicativi più comuni in pacchetti LINUX
• La filosofia dell’open source applicata alla realtà
• The Linux Documentation Project (http://www.tldp.org/)
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
8
Fondamenti di
Sistemi Operativi
Caratteristiche del sistema
DEI - Politecnico di Bari
• Il copyright
• Le funzionalità
• Nota sui numeri di versione
• Il kernel
• Programmi di servizio
• Elaboratori di testo e videoscrittura
• Applicativi commerciali
• Supporto alla programmazione
• X Window
• Filosofia progettuale
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
9
Fondamenti di
Sistemi Operativi
Il Copyright 1/2
DEI - Politecnico di Bari
• LINUX è coperto da una General Public License
• La GPL stabilisce le norme per la diffusione e la modifica
• LINUX è freeware open source
•

NON è detto che sia gratuito

I sorgenti sono liberamente modificabili

Non esistono limitazioni ai diritti di distribuzione
Un software free non è di pubblico dominio

Rimane la proprietà degli autori

Gli autori sono protetti dalle leggi sul copyright
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
10
Fondamenti di
Sistemi Operativi
Il Copyright 2/2
DEI - Politecnico di Bari
• LINUX è freeware ma non shareware
 Non è previsto invio di denaro per la diffusione
 Si dispone da subito di una versione full
• La licenza GPL si estende ai sorgenti modificati
 Non è possibile introdurre licenze più restrittive
 La diffusione può essere gratuita o a pagamento
• La GPL pone ampi margini di scelta alle aziende venditrici
• La GPL impone la diffusione dei sorgenti
• Obiettivi della GPL
 Incrementare la qualità del software
 Non trarre profitto
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
11
Fondamenti di
Sistemi Operativi
Funzionalità 1/4
DEI - Politecnico di Bari
Funzionalità di base
• Scheduling dei processi
• Gestione della memoria virtuale
• Gestione dei file
• Gestione dell’input/output
Funzionalità avanzate
Funzionalità
• Editing e compilazione
• Giochi, grafica e multimedialità
• Supporto al networking
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
12
Fondamenti di
Sistemi Operativi
Funzionalità 2/4
DEI - Politecnico di Bari
 Multiuser:
• più utenti possono interagire contemporaneamente (da
terminali diversi) con il sistema senza interferenze;
• ogni utente è individuato univocamente da un nome logico
(username);
• gli utenti sono suddivisiFunzionalità
in gruppi, individuabili univocamente
mediante groupname. Ciascun utente può appartenere ad
uno o più gruppi.
• l'utente root, amministratore di sistema, non ha alcuna
limitazione nell'accesso alle risorse del sistema stesso.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
13
Fondamenti di
Sistemi Operativi
Funzionalità 3/4
DEI - Politecnico di Bari
 Multitasking
• Il suo nucleo può supportare la contemporanea esecuzione di
più processi gestiti a divisione di tempo su un’unica CPU.
 Multithreading
• Esecuzione di più parti di uno stesso programma in
Funzionalità
contemporanea.
 Multiprocessing
• Supporta fino a 16 processori paralleli;
 Compatibilità con molte architetture di CPU:
•
Intel x86;
•
Sparc, Alpha, PowerPC;
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
14
Fondamenti di
Sistemi Operativi
Funzionalità 4/4
DEI - Politecnico di Bari
 Compatibilità con diversi file system
 Compatibile con la maggioranza degli standard UNIX
 Controllo diretto dei job in esecuzione
 Console virtuale (modalità testuale)
 Coesistenza con altri S.O. Funzionalità
 Portabile (linguaggio C)
 Grande attenzione al networking (integrazione di sistema)
1. Driver per TCP/IP (client e servizi per FTP, Telnet, SMTP, HTTP)
2. Driver per PPP
3. Driver per SLIP e PLIP
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
15
Fondamenti di
Sistemi Operativi
Il kernel
DEI - Politecnico di Bari
o Si tratta dell’insieme delle routine di basso livello del S.O.
o É il codice che controlla l’interfaccia tra applicativi e HW
•
•
É monolitico (un unico modulo che serve le richieste)
Non-preemptive: diverse funzioni del kernel devono essere eseguite
senza interruzione
•
Supporto ai driver caricabili e scaricabili dalla memoria
 Loadable Kernel Module: estendono le funzioni del kernel
o É indipendente in maniera debole dalla distribuzione
o Emulazione della Floating Point Unit (FPU) in assenza
coprocessore matematico
del
• Supporto alla virtualizzazione della memoria
• Utilizzo ottimizzato delle funzioni di libreria:
 Gli eseguibili adoperano librerie condivise a linking dinamico
 Gli eseguibili sono più compatti
 Ottimizzazione dell’uso della memoria
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
16
Fondamenti di
Sistemi Operativi
Le distribuzioni
DEI - Politecnico di Bari
Cos’è una distribuzione
• Si tratta del pacchetto completo comprendente:
1. LINUX (vale a dire il nucleo)
2. Applicativi
• E’ sviluppata da una comunità indipendente dalle altre
Distribuzioni desktop più diffuse
Funzionalità
• Fedora (http://www.linux.org/article/view/distro-fedora)
• Ubuntu (http://www.linux.org/article/view/distro-ubuntu)
• Linux Mint (http://www.linux.org/article/view/distro-mint)
Distribuzioni server più diffuse
• Red Hat
• Slackware
• Debian
• CentOS
• OpenSUSE
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
17
Fondamenti di
Sistemi Operativi
I numeri di versione 1/2
DEI - Politecnico di Bari
Sono due, diversi e riferiti a:
• Distribuzione
• Kernel
Versioning differente per kernel e distribuzione
Consiste di quattro cifre: A.B.C[.D]
 A: versione del kernel:
(es. 2.6.12.3)
• viene modificato molto raramente;
• la più recente è la versione 3, nel 2011, per i 20 anni del kernel linux;
 B: revisione "maggiore" del kernel:
• prima della serie 2.6.x,
 i numeri pari indicano un ramo stabile;
 i numeri dispari (come 1.1 oppure 2.5) indicano rami di sviluppo;
• a partire dalla serie 2.6.x,
 lo sviluppo di nuove caratteristiche avviene all'interno dello
stesso ramo;
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
18
Fondamenti di
Sistemi Operativi
I numeri di versione 2/2
DEI - Politecnico di Bari
 C: revisione "minore" del kernel:
• inizialmente, questo numero aumentava quando venivano
implementati nel kernel aggiornamenti riguardanti la sicurezza,
correzioni di alcuni errori, nuove caratteristiche, o nuovi driver;
• modello
attuale:
viene
cambiato solo quando nuovi driver o
caratteristiche diverse sono introdotte;
 D: build number:
• serve a conteggiare correzioni e patch di sicurezza;
• è inoltre associata col numero delle volte che il compilatore ha
costruito il kernel, ed è denominata "build number".
Punti
•
•
•
fermi
Una nuova distribuzione usa sempre il kernel più recente
Tutti gli applicativi hanno un proprio numero di versione
La compilazione dei pacchetti è molto flessibile
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
19
Fondamenti di
Sistemi Operativi
Programmi di servizio
DEI - Politecnico di Bari
• Traduzione per LINUX di tutte le utility UNIX
• Possibilità di replicare un certo ambiente operativo
1. Java Development Kit (JDK)
2. Perl
• Editor di testo
1. vi e vim
2. Emacs e joe
• Utility di compressione dati
1. tar, gzip e bzip2
• SHELL
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
20
Fondamenti di
Sistemi Operativi
Elaboratori di testo (1/2)
DEI - Politecnico di Bari
Si introduce il
descrive l’aspetto
testo
in
un
linguaggio
di
formattazione
che
ne
• Un esempio di linguaggio di formattazione è HTML
• La
formattazione
avviene
mediante
un
programma
distinto
che converte i codici
• Analogia con editing e compilazione
• Maggiore portabilità dei documenti
• Riferimenti aggiornati automaticamente
• I più famosi sono TEX e il suo dialetto LATEX
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
21
Fondamenti di
Sistemi Operativi
Elaboratori di testo 2/2
DEI - Politecnico di Bari
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
22
Fondamenti di
Sistemi Operativi
Videoscrittura
DEI - Politecnico di Bari
• Interfaccia visuale
• Editing di espressioni complesse (formule matematiche)
•
•
•
•
•
Interfaccia grafica per disegnare figure e schemi
Correttore ortografico interattivo
Generatore automatico di indici per documenti
Tool per la progettazione di font
Es: gedit, OpenOffice Writer
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
23
Fondamenti di
Sistemi Operativi
La SHELL
DEI - Politecnico di Bari
• É il più importante programma di servizio
• Interprete dei comandi utente:
File eseguibili
– File binari
– File di testo interpretati
Comandi incorporati (built-in)
•
•
•
•
•
Job control
Cronologia dei comandi immessi
Funzione di completamento automatico
Redirezione dell’input e dell’output
Linguaggio di programmazione (utilizzo di script in linguaggio di shell)
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
24
Fondamenti di
Sistemi Operativi
La SHELL
DEI - Politecnico di Bari
Esistono varie shell che differiscono per la sintassi dei comandi.
• Bourne shell (sh)
• C shell (csh)
• Korn shell (ksh)
• Z shell (zsh)
La più diffusa è Bourne Again SHell (BASH).
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
25
Fondamenti di
Sistemi Operativi
Applicativi commerciali 1/2
DEI - Politecnico di Bari
• LibreOffice (The Document Foundation).
• Attenzione crescente delle software house verso LINUX:
• Sun Microsystem Inc. ha prodotto OpenOffice
1. Videoscrittura (Writer)
2. Foglio Elettronico (Calc)
3. Database (Base)
4. Editor scientifico (Math)
5. Presentation Manager (Impress)
disponibile gratuitamente e in grado di leggere i formati più diffusi
• Corel produce versioni LINUX di WordPerfect
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
26
Fondamenti di
Sistemi Operativi
Applicativi commerciali 2/2
DEI - Politecnico di Bari
1. Caldera produce NetWare per LINUX. Esso consente di:
2. Fornire servizi di file server
3. Fornire servizi di print server
4. Condividere dati
5. Mantenere la compatibilità con client NetWare per Windows, DOS,
UNIX e Macintosh
• Oracle e Informix hanno versioni LINUX dei loro DBMS
• IBM produce una beta version di DB2 per LINUX
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
27
Fondamenti di
Sistemi Operativi
Supporto alla programmazione 1/2
DEI - Politecnico di Bari
• LINUX possiede strumenti di programmazione completi
1. Librerie standard
2. Compilatori
3. Debugger
•
C o C++ sono gli ambienti normalmente supportati
1. gcc è il compilatore C/C++ per LINUX
2. Vengono offerte funzionalità moderne e avanzate
• Supporto completo per Java e JDK
1. Applet e servlet
2. Connettività a Database
3. Sistemi distribuiti IP based
4. Portabilità avanzata grazie a JVM
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
28
Fondamenti di
Sistemi Operativi
Supporto alla programmazione 2/2
DEI - Politecnico di Bari
• Esistono traduzioni per LINUX di molti compilatori
1. SmallTalk
2. Pascal
3. Fortran
4. Lisp
• Vari assembler per scrivere codice macchina
• Linguaggi per scrivere script (Perl)
•
Tool di profiling
1. Statistiche di funzionamento
2. Prestazioni del software
• Possibilità di accedere ai sorgenti e manipolare il kernel
• Possibilità di creare applicazioni per sistemi UNIX
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
29
Fondamenti di
Sistemi Operativi
X window 1/3
DEI - Politecnico di Bari
• L'accesso ad un sistema UNIX mediante terminale avviene utilizzando un
programma chiamato login. Il programma identifica gli utenti chiedendo
loro username e password.
• Se l'autenticazione avviene con successo il sistema esegue
una shell.
• X Window (X11): interfaccia grafica per macchine UNIX
• Ha una elevata configurabilità
• Si basa sull’utilizzo di dispositivi di puntamento generici
• È distribuita gratuitamente
• Il pacchetto X Window contiene molti applicativi
1. Giochi e software di documentazione
2. Tool per la grafica e la multimedialità
3. Strumenti per la programmazione
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
30
Fondamenti di
Sistemi Operativi
X window 2/3
DEI - Politecnico di Bari
• Tutte le distribuzioni usano X Window creato da XFree86
1. Basato su X11R6 (X11 release 6)
2. E’ nella directory usr/X11R6
• Deve essere configurato
1. Mediante un file testuale (xf86Config)
2. Mediante un programma a menu (XConfigurator)
• É stratificato e modulare
1. X Server
2. Window Manager
3. Desktop Manager e Environment (KDE, Gnome)
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
31
Fondamenti di
Sistemi Operativi
X window 3/3
DEI - Politecnico di Bari
• É presente anche un emulatore di terminale
• L’aspetto grafico è controllato dal windows manager
• Sono disponibili tutti i sorgenti
• Esistono molti applicativi freeware in rete
• Supporta quasi tutti gli hardware video
1. Schede grafiche
2. Adattatori e acceleratori grafici
3. Monitor
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
32
Fondamenti di
Sistemi Operativi
La filosofia di Linux 1/2
DEI - Politecnico di Bari
• Migliorare la qualità del software
• Elevare le garanzie di controllo
1. Incrementare il numero di revisioni
2. Disporre di documentazione e reportistica avanzata
• Rapida scoperta e soluzione dei bug
• Un sistema operativo per hacker. Cioè per:
1. Programmatori appassionati
2. Utilizzatori interessati al miglioramento continuo delle prestazioni
• La community LINUX comunica per lo più via mailing list
• Linus Torvalds mantiene un ruolo determinante
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
33
Fondamenti di
Sistemi Operativi
La filosofia di Linux 2/2
DEI - Politecnico di Bari
• Per aggiungere o modificare funzionalità occorre
1. Rendere disponibile una versione alfa
2. Inviare un messaggio ad una delle mailing list degli
sviluppatori
3. Rispondere ai commenti o alle domande
4. Passare alla fase beta del codice
5. Passare alla versione definitiva
6. Chiedere a L. Torvalds di includere la modifica nel
kernel
• Il debugging avviene in poche ore
• É uno dei più efficienti sforzi di sviluppo mai intrapresi
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
34
Fondamenti di
Sistemi Operativi
Installazione
DEI - Politecnico di Bari
Dual boot:
• Partizione
• Virtual machine (VMware)
WUBI (Windows-based Ubuntu Installer)
• Presente dalla versione 8.04 di Ubuntu
• Permette di installare Ubuntu come un’applicazione di Windows
• File system virtuale
• non modifica il sistema e non crea partizioni per ospitare il nuovo
S.O.
Live cd:
• Avvio del S.O. da cd
• Consente di provare differenti distribuzioni
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
35