Cos’è Linux?

Linux è un sistema operativo (SO) open source, simile a Unix e sviluppato dalla comunità per computer, server, mainframe, dispositivi mobili e dispositivi embedded. È supportato da quasi tutte le principali piattaforme informatiche, tra cui x86, ARM e SPARC, il che lo rende uno dei sistemi operativi più ampiamente supportati.

Come viene utilizzato il sistema operativo Linux?

Ogni versione del sistema operativo Linux gestisce le risorse hardware, avvia e gestisce le applicazioni e fornisce una qualche forma di interfaccia utente. L’enorme comunità di sviluppatori e l’ampia gamma di distribuzioni fanno sì che sia disponibile una versione di Linux per quasi tutte le attività, e Linux si è diffuso in molti settori dell’informatica.

Ad esempio, Linux si è affermato come un sistema operativo popolare per server web come Apache, nonché per operazioni di rete, attività di elaborazione scientifica che richiedono enormi cluster di elaborazione, esecuzione di database, elaborazione desktop ed endpoint e gestione di dispositivi mobili con versioni del sistema operativo come Android.

Il sistema operativo Linux è presente in molti contesti diversi, supportando molteplici casi d’uso. Linux viene utilizzato nei seguenti modi:

  • Sistema operativo server per server web, server di database, file server, server di posta elettronica e qualsiasi altro tipo di server condiviso. Progettato per supportare applicazioni ad alto volume e multithreading, Linux è adatto a tutti i tipi di applicazioni server.
  • Sistema operativo desktop per l’elaborazione di produttività personale. Linux è un ambiente desktop open source e disponibile gratuitamente per gli utenti che lo preferiscono ai sistemi operativi commerciali.
  • Sistema operativo server headless per sistemi che non richiedono un’interfaccia utente grafica (GUI) o un terminale e una tastiera collegati direttamente. I sistemi headless sono spesso utilizzati per server di rete gestiti da remoto e altri dispositivi.
  • Sistema operativo per dispositivi o appliance embedded per sistemi che richiedono funzionalità di elaborazione limitate. Linux viene utilizzato come sistema operativo embedded per una varietà di applicazioni, tra cui elettrodomestici, sistemi di intrattenimento per autoveicoli e appliance con file system di rete.
  • Sistema operativo di rete per router, switch, server DNS (Domain Name System), dispositivi di rete domestica e altro ancora. Ad esempio, Cisco offre una versione del Cisco Internetwork Operating System (IOS) che utilizza il kernel Linux.
  • Sistema operativo per lo sviluppo software per lo sviluppo di software aziendale. Sebbene molti strumenti di sviluppo siano stati portati su Windows o altri sistemi operativi, Linux ospita alcuni degli strumenti di sviluppo software open source più utilizzati. Ad esempio, git per il controllo del codice sorgente distribuito; vim ed emacs per la modifica del codice sorgente; e compilatori e interpreti per quasi tutti i linguaggi di programmazione.
  • Cloud OS per istanze cloud. I principali provider di cloud computing offrono accesso a istanze di cloud computing che eseguono Linux per server cloud, desktop e altri servizi.

Linux è altamente configurabile e si basa su un design modulare che consente agli utenti di personalizzare le proprie versioni di Linux. A seconda dell’applicazione, Linux può essere ottimizzato per diversi scopi, come:

  • prestazioni di rete;
  • prestazioni di calcolo;
  • implementazione su piattaforme hardware specifiche; e
  • implementazione su sistemi con memoria, storage o risorse di elaborazione limitate.

Gli utenti possono scegliere diverse distribuzioni Linux per applicazioni specifiche o adattare una distribuzione specifica per incorporare configurazioni del kernel personalizzate.

Distribuzioni Linux

Fin dal suo sviluppo iniziale, Linux ha adottato le clausole copyleft della Free Software Foundation, che ha dato origine alla GNU GPL. La GPL stabilisce che qualsiasi cosa presa gratuitamente e modificata debba essere distribuita gratuitamente. In pratica, se Linux o altri componenti con licenza GNU vengono sviluppati o modificati per creare una nuova versione di Linux, tale nuova versione deve essere distribuita gratuitamente. Questo impedisce a uno sviluppatore o ad altri gruppi di trarre profitto ingiustamente dal lavoro altrui liberamente disponibile.

Mascotte Linux

Mascotte Linux

Sono disponibili centinaia di diverse versioni di Linux, note anche come distribuzioni. Le distribuzioni di solito si distinguono dalle altre per il loro obiettivo, la loro filosofia, la loro funzione o il loro mercato di riferimento.

Esistono distribuzioni pensate per specifiche funzioni, come server, desktop, gaming, sicurezza o dispositivi embedded, inclusi i sistemi Raspberry Pi. La maggior parte delle distribuzioni moderne è precompilata e pronta all’uso, mentre altre, come Gentoo Linux, consistono in codice sorgente che l’utente può compilare localmente durante l’installazione iniziale per ottimizzare la configurazione del sistema. Knoppix Linux è una delle numerose distribuzioni utilizzate per il ripristino di dischi rigidi danneggiati e per altre attività di supporto tecnico. I professionisti della sicurezza informatica utilizzano Kali Linux per i test di penetrazione e altre attività relative alla sicurezza.

Linux è diventato un componente importante dei sistemi di intrattenimento delle case automobilistiche. Molte case automobilistiche hanno aderito ad Automotive Grade Linux (AGL), un progetto open source ospitato dalla Linux Foundation. Ad esempio, i veicoli Toyota e Lexus utilizzano AGL per i loro sistemi di infotainment.

Le distribuzioni Linux possono essere sviluppate dalla comunità, come Debian, Slackware e Gentoo. Altre distribuzioni sono commerciali e destinate all’uso aziendale, tra cui Red Hat Enterprise Linux e SUSE Linux Enterprise Server. Molte distribuzioni utilizzano una combinazione di sviluppo supportato dalla comunità e dalle aziende, come Fedora di Red Hat, openSUSE di SUSE e Ubuntu di Canonical.

 

La licenza GNU GPL non proibisce la proprietà intellettuale ed è prassi comune per i creatori di componenti Linux detenere i diritti d’autore sui vari componenti. La licenza GNU GPL garantisce che tali componenti rimangano liberi e liberamente distribuiti. Sebbene il software rimanga libero, è comune per alcune distribuzioni commerciali far pagare servizi a valore aggiunto, come supporto o servizi di sviluppo personalizzati.

Componenti e terminologia Linux

Il sistema operativo Linux incorpora diversi componenti, tra cui:

  • Bootloader. Un bootloader è responsabile della gestione del processo di avvio del computer e dell’avvio del kernel Linux. Può anche essere utilizzato per gestire sistemi che avviano più di un sistema operativo.
  • Kernel. Il cuore del sistema Linux, il kernel gestisce l’accesso alla rete, pianifica processi o applicazioni, gestisce le periferiche di base e supervisiona tutti i servizi del file system. Il kernel Linux è il software che si interfaccia direttamente con l’hardware del computer.
  • Sistema init. Il primo processo a essere eseguito una volta caricato il kernel. Un processo è un’istanza di un programma in esecuzione su un computer e il sistema init inizializza il sistema per consentirgli di eseguire altri processi. Init è un programma demone che funge da processo padre per tutti gli altri processi in esecuzione sul sistema. Init può essere configurato per avviare processi specifici all’inizializzazione del sistema. Ad esempio, quando il sistema esegue un server web, il sistema init può essere configurato per caricare tutto il software necessario per il server web.
  • Demoni. Si tratta di un programma che viene eseguito in background, gestendo le richieste per un servizio. Un server web in esecuzione su un server Linux dipende da un demone, solitamente chiamato httpd, per ascoltare le richieste del server web.
  • Server grafico. Si tratta del software che controlla la visualizzazione della grafica su un computer. Senza un server grafico, gli utenti possono interagire con il sistema Linux solo tramite un’interfaccia a riga di comando. Il sistema X Window, noto anche come X11 o X, è il server grafico più comune per Linux, sebbene non l’unico. X viene eseguito come demone server sul sistema e viene chiamato dalle applicazioni quando è richiesto un output grafico.
  • Ambiente desktop. Si tratta dell’insieme di applicazioni e controlli dell’interfaccia utente con cui gli utenti interagiscono quando utilizzano Linux come piattaforma desktop. L’accesso all’ambiente desktop è solitamente controllato tramite il sistema X Window o un altro sistema grafico. Ogni ambiente desktop definisce il proprio aspetto, incluso il modo in cui elementi grafici come finestre, menu a discesa e file vengono visualizzati e manipolati. L’ambiente desktop include anche un set di applicazioni predefinite per la gestione di file e cartelle, la modifica del testo, l’esecuzione di una sessione da riga di comando e altre attività comuni.
  • Applicazioni. Si tratta del software installato durante e dopo l’installazione iniziale di Linux. La maggior parte delle distribuzioni Linux include migliaia di applicazioni diverse, sia per un server in rete che per l’uso desktop.

 

Sebbene questi componenti siano inclusi nella maggior parte delle distribuzioni Linux, non fanno necessariamente parte di ogni sistema Linux distribuito. Ad esempio, un server basato su Linux potrebbe non richiedere un server grafico, un ambiente desktop o applicazioni.

Ma sono in realtà i numerosi sviluppatori esterni e i progetti GNU a fornire funzioni di alto livello al kernel Linux per fornire un sistema operativo completo. Ad esempio, esistono moduli per fornire un’interfaccia a riga di comando, implementare una GUI, gestire la sicurezza e offrire servizi di input video o audio, ognuno dei quali può essere modificato e ottimizzato per creare distribuzioni uniche per attività specifiche.

Gli ambienti desktop possono anche variare notevolmente a seconda dell’approccio alla progettazione della GUI e delle applicazioni predefinite. I due ambienti desktop più diffusi sono:

  • L’ambiente desktop GNOME, incluso nella maggior parte delle distribuzioni Linux più diffuse, è il desktop predefinito per molti. Progettato per essere facile da usare e affidabile, GNOME ha dato vita ad altri progetti di ambienti desktop, tra cui MATE, Cinnamon e Unity.
  • L’ambiente desktop KDE è la principale alternativa a GNOME. Anche KDE è progettato per essere facile da usare e affidabile. Ha dato vita ad altri progetti, tra cui il Trinity Desktop Environment.
    I software di gestione dei pacchetti in genere aggiungono, aggiornano o rimuovono componenti software nel sistema operativo Linux. I gestori di pacchetti consentono agli utenti di installare software aggiuntivo non incluso nelle loro distribuzioni. Esempi di gestori di pacchetti includono RPM Package Manager, dpkg, OpenPKG e Zero Install.

Come funziona il sistema operativo Linux

Il sistema operativo Linux segue un design modulare che è la chiave delle sue numerose varianti e distribuzioni. Tutte le distribuzioni Linux sono basate sul kernel Linux, ma possono differire a seconda di fattori come:

  • Versione del kernel. Le distribuzioni possono essere configurate con versioni più recenti per incorporare funzionalità più recenti o con versioni precedenti per essere più stabili.
  • Moduli del kernel. Si tratta di software che può essere caricato e scaricato nel kernel per estendere le funzionalità senza riavviare. I moduli del kernel sono spesso utilizzati per supportare:
    • driver di dispositivo, che utilizzano codice che controlla il funzionamento dei dispositivi collegati;
    • driver del file system, che utilizzano codice che controlla il funzionamento del kernel con diversi file system; e
    • chiamate di sistema, che utilizzano codice che controlla il modo in cui i programmi richiedono servizi al kernel.
  • Opzioni di configurazione. I kernel Linux compilati con opzioni di configurazione impostate per includere solo driver di dispositivo o file system vengono utilizzati per alcune distribuzioni specializzate; ad esempio, la compilazione di un kernel per un dispositivo wireless senza driver di dispositivo di rete cablata.

Il kernel Linux è l’unica cosa che tutti i sistemi che eseguono Linux hanno in comune. Linux funziona così:

  • Caricando e avviando un kernel Linux.
  • Una volta avviato, il kernel gestisce tutti gli input e gli output del sistema. Il sistema viene inizializzato e i processi possono essere avviati.
  • Man mano che i processi di sistema vengono avviati, il sistema può essere utilizzato per processi che includono funzioni di server di rete, comandi immessi interattivamente tramite riga di comando, applicazioni desktop o qualsiasi applicazione o programma.

Sebbene il kernel possa essere pressoché identico, con alcune differenze di configurazione e compilazione, l’esperienza utente può variare notevolmente a seconda di come viene utilizzato il sistema Linux. Ad esempio, alcuni casi d’uso di Linux con esperienze utente molto diverse includono:

  • Sistemi di produttività desktop, come quelli utilizzati da sviluppatori di software o altri professionisti. Le workstation per lo sviluppo software possono essere ottimizzate per le prestazioni, mentre i desktop per i professionisti amministrativi possono essere ottimizzati per l’utilizzo di strumenti di produttività desktop.
  • I server di rete potrebbero non includere nemmeno un terminale per l’accesso diretto. Questi server headless sono gestiti da remoto tramite terminale di rete o sessioni Windows. I server possono essere utilizzati da molti, ma l’accesso diretto dovrebbe essere consentito solo agli amministratori di sistema autorizzati.
  • I thin client consentono agli utenti di accedere a un ambiente desktop completo da un dispositivo leggero. Tra questi rientrano i computer Raspberry Pi a scheda singola e i Google Chromebook.

Quando si utilizza Linux con un ambiente desktop come interfaccia grafica, Linux funziona in modo molto simile a qualsiasi sistema operativo basato su interfaccia grafica. Applicazioni e altre risorse possono essere aperte facendo clic sulle icone e i file possono essere spostati, copiati o eliminati utilizzando un mouse o un trackpad.

Allo stesso modo, l’utilizzo della riga di comando di Linux è simile a quello di qualsiasi riga di comando di sistema operativo moderno:

userID@DESKTOP-2KD3FT2:/mnt/c/WINDOWS/system32$

Questo esempio mostra il prompt dei comandi predefinito nel sottosistema Windows per Linux. Il prompt visualizza, da sinistra a destra, userID@hostname e il percorso completo della directory corrente seguito dal simbolo “$”.

Pro e contro dell’utilizzo di Linux

Alcuni vantaggi dell’utilizzo di Linux includono:

  • Software open source. Il kernel Linux è rilasciato con licenza GNU GPL (open source software). La maggior parte delle distribuzioni include centinaia di applicazioni, con numerose opzioni in quasi ogni categoria. Molte distribuzioni includono anche software proprietario, come i driver di dispositivo forniti dai produttori, per supportare il loro hardware.
  • Costi di licenza. A differenza di Microsoft Windows o Apple macOS, Linux non ha costi di licenza espliciti. Sebbene il supporto di sistema sia disponibile a pagamento da molti fornitori Linux, il sistema operativo stesso è libero di essere copiato e utilizzato. Alcune organizzazioni IT hanno aumentato i propri risparmi convertendo il software server da un sistema operativo commerciale a Linux.
  • Affidabilità. Linux è considerato un sistema operativo affidabile ed è ben supportato da patch di sicurezza. Linux è anche considerato stabile, il che significa che può funzionare nella maggior parte delle circostanze. Linux gestisce anche errori durante l’esecuzione del software e input imprevisti.
  • Compatibilità con le versioni precedenti. Linux e altri software open source tendono ad essere aggiornati frequentemente per patch di sicurezza e funzionali, pur mantenendo le funzionalità principali. È probabile che le configurazioni e gli script della shell continuino a funzionare invariati anche dopo l’applicazione degli aggiornamenti software. A differenza dei fornitori di software commerciali che rilasciano nuove versioni dei loro sistemi operativi insieme a nuove modalità di lavoro, Linux e le applicazioni open source generalmente non modificano le loro modalità operative con le nuove release.
  • Ampia scelta. Tra le centinaia di distribuzioni disponibili, migliaia di applicazioni e opzioni pressoché infinite per la configurazione, la compilazione e l’esecuzione di Linux su quasi tutte le piattaforme hardware, è possibile ottimizzare Linux per quasi tutte le applicazioni.

Alcuni svantaggi dell’utilizzo di Linux sono:

  • Mancanza di uno standard consolidato. Non esiste una versione standard di Linux, il che può essere utile per ottimizzare Linux per applicazioni specifiche, ma meno per la distribuzione di immagini server o desktop standardizzate. L’ampia gamma di opzioni può di conseguenza complicare il supporto.
  • Costi di supporto. Mentre un’organizzazione può acquisire Linux gratuitamente senza costi di licenza, il supporto non è gratuito. La maggior parte dei distributori Linux aziendali come SUSE e Red Hat offre contratti di supporto. A seconda delle circostanze, questi costi di licenza possono ridurre significativamente i risparmi.
  • Software proprietario. Software di produttività desktop come Microsoft Office non possono essere utilizzati su desktop Linux e altri software proprietari potrebbero non essere disponibili per le piattaforme Linux.
  • Hardware non supportato. Mentre molti produttori di hardware rendono disponibili driver di dispositivo Linux per i loro prodotti, molti altri non lo fanno.
  • Ripida curva di apprendimento. Molti utenti faticano a imparare a utilizzare il desktop Linux o le applicazioni basate su Linux.
    In alcuni casi, la stessa caratteristica di Linux può rappresentare un vantaggio o uno svantaggio. Ad esempio, avere numerose opzioni per personalizzare il sistema operativo Linux è vantaggioso per i produttori che cercano un sistema operativo embedded, ma è uno svantaggio per le aziende che desiderano un sistema operativo desktop che possa essere utilizzato da un’ampia gamma di utenti finali.

Storia di Linux

Linus Torvalds iniziò a lavorare su Linux come sostituto del sistema operativo Minix mentre era all’Università di Helsinki in Finlandia. Torvalds riconobbe il lavoro svolto sul Progetto GNU nel 1983, che mirava a creare un sistema operativo completo e compatibile con Unix, composto interamente da software libero, e indicò GNU come modello di distribuzione. Tuttavia, il lavoro su GNU non era ancora terminato quando Torvalds cercò un sostituto di Minix, il che lo spinse a sviluppare un kernel alternativo chiamato Linux – una contrazione di Unix di Linus – e ad adottare la licenza GNU GPL.

Torvalds pubblicò il kernel Linux nel settembre del 1991. Una comunità di sviluppatori lavorò per integrare i componenti GNU con il kernel di Torvalds, creando un sistema operativo completo e libero, noto collettivamente come Linux. Torvalds continua a sviluppare il kernel Linux e una vasta comunità di sviluppatori continua a creare e integrare un’ampia gamma di componenti.

Sebbene Linux sia ancora in ritardo rispetto a Windows e macOS sul desktop, continua a rappresentare una sfida per i produttori di sistemi operativi proprietari su server e sistemi embedded.

.