Utente:LoStrangolatore/Come usare Linux/Cos'è Linux

Wikibooks, manuali e libri di testo liberi.

Cos'è Linux[modifica]

Sistemi operativi

Il sistema operativo è un insieme di programmi che permettono all'utente di eseguire le proprie applicazioni, le quali necessitano di un supporto di base (accesso alle periferiche collegate al sistema; accesso a librerie software standard) in mancanza del quale non possono funzionare.

Sistemi operativi basati su Linux

Un componente importante del sistema operativo si chiama "kernel".

Nel tempo, sono stati realizzati molti kernel diversi. Uno di essi si chiama "Linux", ed è distribuito in molti sistemi operativi, i quali si possono indicare collettivamente con il nome di "sistemi operativi basati su Linux" (Linux-based).

Quindi, la scrittura "il sistema operativo Linux", in realtà, è scorretta, perché "Linux" identifica solo il kernel, che è una parte del sistema operativo.

I sistemi basati su Linux presentano delle differenze tra loro, ma hanno anche numerose caratteristiche in comune, al punto che l'utente può svolgere la maggior parte dei compiti con procedure uguali.

Elementi del sistema operativo[modifica]

Accendere un computer con un sistema operativo basato su Linux significa attivare, tra gli altri, questi tre elementi fondamentali (da ricordare):

  • il kernel, che appunto è il kernel Linux;
  • la gerarchia delle cartelle;
  • l'interfaccia utente.


L'avvio del sistema operativo, a grandi linee, è il seguente:

  1. Il kernel Linux viene caricato in memoria e attivato.
  2. Il kernel carica in memoria la gerarchia delle cartelle, che (tra le altre cose) contiene alcuni script e file di configurazione che si trovano in alcune cartelle note a priori.
  3. Il kernel avvia questi script.
  4. Completata l'inizializzazione del sistema, viene avviata (opzionalmente) l'interfaccia utente.

L'utente non può modificare direttamente il kernel, ma può personalizzare gli script e i file di configurazione, modificando il sistema anche radicalmente. Una raccolta preconfezionata che mette insieme il kernel Linux, gli script e i file di configurazione personalizzati, e un insieme di programmi preinstallati, prende il nome di "distribuzione Linux".

L'interfaccia utente[modifica]

L'interfaccia utente permette di avviare e controllare le applicazioni. Esistono due tipi principali di interfaccia utente:

  • la "console", chiamata anche "shell", "terminale" o "riga di comando";
  • interfaccia grafica.

La riga di comando è sempre attiva. L'interfaccia grafica è opzionale e viene eseguita come programma aggiuntivo, che "nasconde" la riga di comando e "maschera" l'esecuzione di comandi testuali dietro finestre e pulsanti; non è strettamente necessaria per l'esecuzione del sistema, anzi può essere riavviata o terminata senza che sia necessario riavviare anche il sistema operativo.

Anche se la riga di comando può incutere timore in coloro che sono da sempre abituati alla GUI, in realtà risulta abbastanza semplice da usare, se si conoscono alcune informazioni di base sul funzionamento di Linux (in mancanza delle quali, peraltro, alcune operazioni banali possono diventare ostiche anche utilizzando un'interfaccia grafica). Inoltre, su Internet si trovano ottime guide all'uso dei comandi da terminale per le operazioni più comuni.

La gerarchia delle cartelle[modifica]

Si è scritto gerarchia perché le cartelle hanno una struttura ad albero, con una unica radice comune. Ogni cartella è dotata di un nome, e il percorso della cartella è costituito dalla sequenza dei nomi delle cartelle separate dal simbolo /.
La cartella radice (root directory) si chiama /.

Montare e smontare[modifica]

Montare e smontare le partizioni

Collegare una memoria di massa al sistema non vuol dire renderla disponibile per la lettura e la scrittura. Infatti, il sistema operativo accede a una partizione solo quando è "montata", ovvero dopo che è stato eseguito un apposito comando che la associa ad una cartella dell'albero delle directory.

La partizione elenca le informazioni che descrivono l'albero delle cartelle e il contenuto dei file. Le informazioni sono organizzate secondo uno schema noto a priori, che prende il nome di file system.

"Smontare" la partizione vuol dire scollegarla dalla cartella di cui sopra. Prima di rimuovere una memoria di massa dal sistema, è fortemente consigliato smontare le partizioni che ospita, perché ciò forza il sistema operativo a scrivere alcuni dati che potrebbero essere stati conservati in un buffer temporaneo invece che direttamente sul disco. Rimuovere prima di smontare potrebbe danneggiare il file system e portare alla perdita dei dati.

Un discorso più generale

Dal punto di vista dell'utente, una cartella è un contenitore per file e sottocartelle. Dal punto di vista di Linux, una cartella è una "maschera" che nasconde l'accesso ad un supporto fisico di qualche tipo, sul quale è memorizzata una struttura gerarchica di file e sottocartelle. Questo supporto fisico può essere un'altra cartella, una partizione di una memoria di massa, una porzione della memoria RAM, un'immagine ISO, e così via. I programmi accedono al contenuto della cartella senza conoscere quale sia il supporto fisico che c'è "dietro".

La cartella viene collegata al supporto fisico eseguendo un comando apposito sul terminale, e questa associazione viene cancellata in automatico allo spegnimento del computer. Montare quel supporto fisico vuol dire associarvi una cartella; smontarlo vuol dire eseguire l'operazione inversa, cioè rimuovere l'associazione.

Sul supporto fisico trovano posto le informazioni che descrivono l'albero delle cartelle e il contenuto di ogni singolo file, scritte secondo uno schema ben preciso. Questo schema si chiama file system.
Quando un programma utente legge o scrive su un file che è in una cartella, oppure modifica l'albero delle sottocartelle, Linux, "dietro le quinte", controlla il tipo di file system, accede al supporto e modifica le informazioni secondo lo schema definito dal file system.

Nel caso più semplice, la cartella corrisponde ad una partizione di qualche memoria di massa che è collegata al computer, e in tal caso il file system corrisponde a quello che è sulla partizione. Ma esistono altri tipi di file system, che non richiedono il collegamento con una memoria di massa. Ad esempio, il tmpfs risiede interamente nella memoria volatile del calcolatore, vale a dire che allo spegnimento esso verrà automaticamente cancellato (quindi, viene tipicamente utilizzato per ospitare i file temporanei). Uno SquashFS converte un albero di cartelle in una sequenza di bytes compressi, che può essere salvata su file (infatti, viene tipicamente usato per fornire "pacchetti" di file preconfezionati e disponibili in sola lettura). Uno UnionFS permette di combinare altri file system, sovrapponendoli; e così via.

Il concetto di "file"[modifica]

Un file è una sequenza di bytes. Questa definizione è così generica che, oltre ai file "normali", esistono anche dei file speciali, che non sono salvati su alcun filesystem, ma invece fanno da ponte verso una periferica che legge o scrive bytes.

Ad esempio, le memorie di massa, e le partizioni, sono considerate come delle sequenze di bytes, e quindi dei file, e in particolare si trovano sotto /dev.

Inoltre, il kernel simula apposta l'esistenza di alcuni file speciali, come /dev/null, /dev/zero, e altri.

Tipi di file

In Linux, il tipo di un file viene determinato dal suo contenuto (a differenza di altri sistemi operativi che, invece, usano l'estensione del file, cioè la parte del nome che segue il punto).

Altre informazioni[modifica]

I programmi

Dal punto di vista di Linux, un programma non è altro che un file che contiene istruzioni eseguibili.

Dal punto di vista dell'utente, esistono due categorie di programmi: quelli scritti in formato binario e gli script. I primi possono essere modificati solo da un programmatore. I secondi, invece, sono banali file di testo che contengono comandi scritti in un linguaggio standardizzato, noto a priori. Chiunque può modificarli, a patto di conoscere il linguaggio di programmazione utilizzato. Può essere uno script per bash, oppure scritto in un linguaggio di scripting come Python e Perl.

Font-end

Può capitare di avere davanti un programma che dà solo l'interfaccia grafica ad un altro programma che viene eseguito "dietro le quinte", su terminale. In questo caso si dice che si ha davanti un font-end grafico per quel programma che viene eseguito su terminale.

Installare i programmi

I programmi e le librerie software sono raggruppati in pacchetti. Installare un programma vuol dire eseguire un comando che scarica in automatico il pacchetto e lo installa. Disinstallare un programma vuol dire eseguire un altro comando che rimuove il pacchetto dal sistema.

I pacchetti sono memorizzati su un sito apposito, che si chiama repository, e che in genere è il sito ufficiale della società che produce il sistema operativo in uso. Spesso è possibile anche installare un pacchetto che è stato copiato come file a sé, invece che scaricato dal repository.

Antivirus e firewall
Swap

Lo swap è una partizione di una memoria di massa che viene usata come se fosse memoria RAM. Esso permette di continuare a lavorare anche qualora si rendesse necessaria una quantità di RAM superiore a quella installata.

Le applicazioni non usano direttamente lo swap, il quale, invece, viene gestito dal sistema operativo. Infatti, quest'ultimo, all'occorrenza, libera spazio nella RAM salvando alcune zone di memoria sul disco, e all'occorrenza le reimmette nella RAM leggendole dal disco. Le zone di memoria che vengono spostate su disco sono scelte dal sistema operativo in base alla probabilità che avranno di essere richieste nel futuro.

Avere uno spazio di swap è importante anche se si ha una grande quantità di RAM. Ad esempio, il sistema operativo sposta nello swap le zone di memoria allocate per l'inizializzazione di un programma, e che non vengono più lette finché il programma non termina.
In Rete si trovano guide che espongono alcune formule per il calcolo dello swap in base alla dimensione della memoria RAM. Tuttavia, non si vede la necessità di avere uno swap variabile in funzione della RAM:

  • in genere, un valore di 2 GB è più che sufficiente per la maggior parte degli usi da parte dell'utente medio;
  • tuttavia, se si vuole usare la funzionalità di ibernazione, lo swap va impostato ad un valore superiore a quello della RAM, in quanto l'ibernazione consiste proprio nel salvataggio della RAM sullo swap.

In genere, una partizione di swap è identificata dal fatto che ha un file system specializzato.
Le partizioni di swap non si "montano" né si "smontano", invece si attivano e si disattivano con due comandi specializzati che si chiamano "swapon" e "swapoff". Essi notificano il sistema operativo e non collegano la partizione ad alcuna cartella. Possono essere richiamati in ogni momento da terminale (ma sono accessibili anche tramite alcuni programmi che sono dotati di GUI, ad esempio GParted); inoltre, in genere, lo stesso sistema operativo durante il boot ricerca in automatico le partizioni di swap collegate al sistema ed esegue lo swapon in automatico.

Il terminale
Utenti; permessi e utenti; permessi e file