1.1 Evoluzione di Linux e dei Sistemi Operativi Open Source
Introduzione
Linux è uno dei sistemi operativi più popolari oggi. Il suo sviluppo è iniziato nel 1991 da Linus Torvalds. Il sistema operativo fu ispirato da Unix, un altro sistema operativo sviluppato negli anni ’70 da AT&T Laboratories. Unix era un sistema pensato per girare su “small computer”. All’epoca, erano considerato «small», ovvero piccoli, quei computer che non occupavano un’intera sala con aria condizionata e che costavano meno di un milione di dollari. In seguito, con il termine “small computer” ci si riferiva a macchine che potevano essere sollevate da due persone. A quel tempo Unix non era disponibile su computer di piccole dimensioni come macchine da ufficio, i Computer Desktop, basati su architettura x86. Pertanto Linus, che era uno studente a quel tempo, iniziò a sviluppare un sistema operativo simile a Unix che avrebbe dovuto funzionare su questa architettura.
Principalmente, Linux utilizza gli stessi principi e idee di base di Unix, ma Linux stesso non contiene codice Unix, in quanto è un progetto indipendente. Linux non è supportato da una singola azienda, ma da una comunità internazionale di programmatori. Siccome è liberamente disponibile, può essere utilizzato da chiunque senza restrizioni.
Distribuzioni
Una distribuzione Linux è un “pacchetto” composto da un kernel Linux e da una selezione di applicazioni gestite da un’azienda o da una comunità di utenti. L’obiettivo di una distribuzione è quello di ottimizzare il kernel e le applicazioni che vengono eseguite sul sistema operativo per un determinato caso d’uso o gruppo di utenti. Le distribuzioni includono spesso strumenti specifici per la distribuzione per l’installazione del software e l’amministrazione del sistema. Questo è il motivo per cui alcune distribuzioni sono utilizzate principalmente per ambienti desktop in cui devono essere facili da usare, mentre altre sono utilizzate principalmente per l’esecuzione su server per utilizzare le risorse disponibili nel modo più efficiente possibile.
Un altro modo per classificare le distribuzioni è fare riferimento alla famiglia di distribuzione a cui appartengono. Le distribuzioni della famiglia di distribuzione Debian usano il gestore di pacchetti dpkg per gestire il software che viene eseguito sul sistema operativo. I pacchetti che possono essere installati con il gestore di pacchetti sono gestiti da membri volontari della comunità della distribuzione. I manutentori utilizzano il formato del pacchetto deb per specificare come il software è installato nel sistema operativo e come è configurato per impostazione predefinita. Proprio come una distribuzione, un pacchetto è un pacchetto di software e una relativa configurazione e documentazione che rende più facile per l’utente installare, aggiornare e utilizzare il software.
Debian
La distribuzione Debian GNU/Linux è la più grande distribuzione della famiglia di distribuzione Debian. Il progetto Debian GNU/Linux è stato lanciato da Ian Murdock nel 1993. Oggi migliaia di volontari stanno lavorando al progetto. Debian GNU/Linux mira a fornire un sistema operativo molto affidabile. Promuove inoltre la visione di Richard Stallman di un sistema operativo che rispetti le libertà dell’utente di eseguire, studiare, distribuire e migliorare il software. Questo è il motivo per cui non fornisce alcun software proprietario per impostazione predefinita.
Ubuntu
Ubuntu è un’altra distribuzione basata su Debian che vale la pena menzionare. Ubuntu è stato creato da Mark Shuttleworth e il suo team nel 2004, con la missione di portare un ambiente desktop Linux facile da usare. La missione di Ubuntu è quella di fornire un software libero a tutti in tutto il mondo e di tagliare il costo dei servizi professionali. La distribuzione ha un rilascio programmato ogni sei mesi con un rilascio di supporto a lungo termine ogni 2 anni.
Red Hat
Red Hat è una distribuzione Linux sviluppata e gestita dalla società di software che è stata acquisita da IBM nel 2019. La distribuzione Red Hat Linux è stata avviata nel 1994 e ridenominata nel 2003 a Red Hat Enterprise Linux, spesso abbreviata come RHEL. Viene fornito alle aziende come soluzione aziendale affidabile supportata da Red Hat e viene fornito con software che mira a facilitare l’uso di Linux in ambienti server professionali. Alcuni dei suoi componenti richiedono abbonamenti o licenze a pagamento. Il progetto CentOS utilizza il codice sorgente liberamente disponibile di Red Hat Enterprise Linux e lo compila in una distribuzione completamente gratuita, ma in cambio non viene fornito con supporto commerciale.
Sia RHEL che CentOS sono ottimizzati per l’utilizzo in ambienti server. Il progetto Fedora è stato fondato nel 2003 e crea una distribuzione Linux rivolta ai computer desktop. Red Hat ha avviato e mantiene la distribuzione Fedora da allora. Fedora è molto progressiva e adotta le nuove tecnologie molto rapidamente ed è talvolta considerata un banco di prova per le nuove tecnologie che successivamente potrebbero essere incluse in RHEL. Tutte le distribuzioni basate su Red Hat utilizzano il formato rpm del pacchetto che viene utilizzato anche da una delle più antiche famiglie di distribuzione, Slackware.
Suse Linux
La società SUSE è stata fondata nel 1992 in Germania come fornitore di servizi Unix. La prima versione di SUSE Linux è stata rilasciata nel 1994. Nel corso degli anni SUSE Linux divenne noto soprattutto per il suo strumento di configurazione YaST. Questo strumento consente agli amministratori di installare e configurare software e hardware, configurare server e reti. Simile a RHEL, SUSE rilascia SUSE Linux Enterprise Server, che è la loro edizione commerciale. Questo viene rilasciato meno frequentemente ed è adatto per la distribuzione aziendale e di produzione. È distribuito sia come server che come ambiente desktop, con pacchetti fit-per-purpose. Nel 2004, SUSE ha rilasciato il progetto OpenSUSE, che ha aperto opportunità per sviluppatori e utenti di testare e sviluppare ulteriormente il sistema. La distribuzione OpenSUSE è disponibile gratuitamente per il download.
Altre Distribuzioni
Diverse distribuzioni indipendenti sono state rilasciate nel corso degli anni. Alcuni di essi sono basati su Red Hat o Ubuntu, alcuni sono progettati per migliorare la correttezza specifica di un sistema o di un hardware. Ci sono distribuzioni costruite con funzionalità specifiche come QubesOS, un ambiente desktop molto sicuro, o Kali Linux, che fornisce un ambiente per sfruttare le vulnerabilità software, utilizzato principalmente dai tester di penetrazione. Recentemente varie distribuzioni Linux super piccole sono progettate per essere eseguite specificamente in contenitori Linux, come Docker. Ci sono anche distribuzioni costruite specificamente per componenti di sistemi embedded e persino dispositivi intelligenti.
Sistemi Embedded
I sistemi embedded sono una combinazione di hardware e software per computer progettati per avere una funzione specifica all’interno di un sistema più grande. Di solito fanno parte di altri dispositivi e aiutano a controllare questi dispositivi. I sistemi embedded si trovano nelle applicazioni automobilistiche, medicali e persino militari. Grazie alla sua ampia varietà di applicazioni, una varietà di sistemi operativi basati sul kernel Linux è stata sviluppata per essere utilizzata nei sistemi embedded. Una parte significativa dei dispositivi intelligenti ha un sistema operativo basato su kernel Linux in esecuzione su di esso.
Pertanto, con i sistemi embedded viene software embedded. Lo scopo di questo software è di accedere all’hardware e renderlo utilizzabile. I principali vantaggi di Linux rispetto a qualsiasi software embedded proprietario includono compatibilità tra piattaforme cross-vendor, sviluppo, supporto e nessun costo di licenza. Due dei progetti software embedded più popolari sono Android, che viene utilizzato principalmente sui telefoni cellulari in una varietà di fornitori e Raspbian, che viene utilizzato principalmente su Raspbian.
Android
Android è principalmente un sistema operativo mobile sviluppato da Google. Android Inc. è stata fondata nel 2003 a Palo Alto, California. Inizialmente l’azienda ha creato un sistema operativo destinato a funzionare su fotocamere digitali. Nel 2005, Google ha acquistato Android Inc. e lo ha sviluppato per essere uno dei più grandi sistemi operativi mobili.
La base di Android è una versione modificata del kernel Linux con software open source aggiuntivo. Il sistema operativo è principalmente sviluppato per dispositivi touchscreen, ma Google ha sviluppato versioni per TV e orologi da polso. Diverse versioni di Android sono state sviluppate per console di gioco, fotocamere digitali e PC.
Android è liberamente disponibile in open source come Android Open Source Project (AOSP). Google offre una serie di componenti proprietari oltre al core open source di Android. Questi componenti includono applicazioni come Google Calendar, Google Maps, Google Mail, il browser Chrome e Google Play Store che facilita la facile installazione delle app. La maggior parte degli utenti considera questi strumenti parte integrante della loro esperienza Android. Pertanto quasi tutti i dispositivi mobili forniti con Android in Europa e in America includono software proprietario di Google.
Android sui dispositivi embedded ha molti vantaggi. Il sistema operativo è intuitivo e facile da usare con un’interfaccia utente grafica, ha una comunità di sviluppatori molto ampia, quindi è facile trovare aiuto per lo sviluppo. È supportato anche dalla maggior parte dei fornitori di hardware con un driver Android, quindi è facile ed economico prototipare un intero sistema.
Raspbian e il Raspberry Pi
Raspberry Pi è un computer a basso costo, formato carta di credito che può funzionare come un computer desktop con funzionalità complete, ma può essere utilizzato all’interno di un sistema Linux incorporato. È sviluppato dalla Raspberry Pi Foundation, che è un ente benefico educativo con sede nel Regno Unito. Ha principalmente lo scopo di insegnare ai giovani a imparare a programmare e capire la funzionalità dei computer. Il Raspberry Pi può essere progettato e programmato per eseguire attività o operazioni desiderate che fanno parte di un sistema molto più complesso.
Le specialità del Raspberry Pi includono un set di pin GPIO (General Purpose Input-Output) che possono essere utilizzati per collegare dispositivi elettronici e schede di estensione. Ciò consente di utilizzare il Raspberry Pi come piattaforma per lo sviluppo hardware. Anche se è stato progettato per scopi educativi, Raspberry Pis sono utilizzati oggi in vari progetti fai da te così come per la prototipazione industriale durante lo sviluppo di sistemi embedded.
Il Raspberry Pi utilizza processori ARM. Vari sistemi operativi, tra cui Linux, funzionano su Raspberry Pi. Poiché il Raspberry Pi non contiene un disco rigido, il sistema operativo viene avviato da una scheda di memoria SD. Una delle distribuzioni Linux più importanti per Raspberry Pi è Raspbian. Come suggerisce il nome, appartiene alla famiglia di distribuzione Debian. È personalizzato per essere installato sull’hardware Raspberry Pi e fornisce più di 35000 pacchetti ottimizzati per questo ambiente. Oltre a Rasbpian, esistono numerose altre distribuzioni Linux per il Raspberry Pi, come, ad esempio, Kodi, che trasforma il Raspberry Pi in un media center.
Linux e il Cloud
Il termine cloud computing si riferisce a un modo standardizzato di consumare le risorse di calcolo, acquistandole da un provider di cloud pubblico o eseguendo un cloud privato. A partire dai report del 2017, Linux esegue il 90% del carico di lavoro del cloud pubblico. Ogni provider di cloud, da Amazon Web Services (AWS) a Google Cloud Platform (GCP), offre diverse forme di Linux. Anche Microsoft, una società il cui ex CEO ha confrontato Linux con il cancro, offre oggi macchine virtuali basate su Linux nel cloud di Azure.
Linux viene solitamente offerto come parte dell’offerta Infrastructure as a Service (IaaS). Le istanze IaaS sono macchine virtuali di cui viene eseguito il provisioning in pochi minuti nel cloud. Quando si avvia un’istanza IaaS, viene scelta un’immagine che contiene i dati distribuiti nella nuova istanza. I provider di cloud offrono varie immagini contenenti installazioni pronte per essere eseguite sia delle distribuzioni Linux più diffuse che delle versioni proprie di Linux. L’utente cloud sceglie un’immagine contenente la distribuzione preferita e può accedere a un’istanza cloud che esegue questa distribuzione poco dopo. La maggior parte dei provider cloud aggiunge strumenti alle proprie immagini per regolare l’installazione a un’istanza cloud specifica. Questi strumenti possono, ad esempio, estendere i file system dell’immagine per adattarli al disco rigido effettivo della macchina virtuale.