Cosa è Linux?

Linux è un sistema operativo per computer open source, inizialmente sviluppato su e per personal computer basati su Intel x86. Successivamente è stato trasportato su altre piattaforme hardware, dai piccoli elettrodomestici ai supercomputer più grandi del mondo.

La mente dietro a questo sistema è Linus Torvalds, uno studente di Helsinki, Finlandia, che nel 1991 iniziò un progetto: scrivere il proprio kernel del sistema operativo. 

Ha anche raccolto e/o sviluppato gli altri ingredienti essenziali necessari per costruire un intero sistema operativo con al centro il suo kernel. Non passò molto tempo prima che questo diventasse noto come kernel Linux. 

Linus Torvalds abbandona Intel e sceglie una CPU AMD per il suo PC |  TechRadar
Linus Benedict Torvalds

Il successo di Linux ha catalizzato la crescita della comunità open source, dimostrando l'efficacia commerciale dell'open source e ispirando innumerevoli nuovi progetti in tutti i settori e livelli dello stack tecnologico.

Nel 1992, Linux è stato ri-licenziato usando la General Public License (GPL) da GNU (un progetto della Free Software Foundation o FSF, che promuove il software open-source), che ha reso possibile la costruzione di una comunità mondiale di sviluppatori. 

Combinando il kernel con altri componenti di sistema del progetto GNU, a metà degli anni '90 numerosi altri sviluppatori crearono sistemi completi chiamati distribuzioni Linux.

Linux prende pesantemente in prestito dal consolidato sistema operativo UNIX

Fu scritto per essere un sistema libero e open source da usare al posto di UNIX, che all'epoca era progettato per computer molto più potenti dei PC ed era abbastanza costoso.

I file sono memorizzati in un filesystem gerarchico, con il nodo superiore del sistema come root o semplicemente "/". 

Ogni volta che è possibile, Linux rende disponibili i suoi componenti tramite file o oggetti che assomigliano a file. 

I processi, i dispositivi sono tutti rappresentati da oggetti simili a file e spesso possono essere lavorati con le stesse utilità utilizzate per i file normali. 

Linux è un sistema operativo completamente multitasking (cioè più thread di esecuzione vengono eseguiti simultaneamente), multiutente, con processi di rete e di servizio integrati noti come deamons nel mondo UNIX.

Tux la mascotte di Linux
Tux la mascotte di Linux

Si usa Linux ogni giorno, che lo si conosca o meno. Ogni giorno vengono attivati oltre 850.000 telefoni Android con Linux.

Confrontatelo con appena 30.000 telefoni Windows secondo gli ultimi rapporti. Ciò significa che da quando hai iniziato a leggere queste righe sono stati messi online un centinaio di dispositivi Android.

Quasi 700.000 televisori sono venduti ogni giorno, la maggior parte dei quali funziona con Linux. Otto operazioni finanziarie su dieci sono alimentate da Linux. Nove super computer su dieci del mondo utilizzano Linux.

Google, Twitter, Facebook e Amazon sono tutti utilizzatori di Linux. 

Quindi, come è stato sviluppato Linux per ottenere tutto questo? 

A differenza di altri sistemi operativi come Windows o iOS, Linux è costruito in modo collaborativo tra aziende, aree geografiche e mercati, dando luogo al più grande progetto di sviluppo collaborativo nella storia dell'informatica.

Solo dal 2005, circa 8000 sviluppatori di quasi 800 aziende hanno contribuito al kernel di Linux. 

Questi contributi hanno portato a 15 milioni di linee di codice, 1,5 milioni di linee scritte solo negli ultimi due anni

Si consideri che il poema epico di Omero sull'Iliade è un testo di sole 15000 righe, il romanzo Guerra e Pace, solo 56000 parole. 

Non si tratta solo delle semplici righe di codice, ma anche della velocità con cui Linux viene sviluppato e rilasciato. Per esempio, un nuovo importante kernel esce ogni due o tre mesi. 

Questo è reso possibile da un processo di sviluppo collaborativo unico nel suo genere. Quando si invia il codice al kernel Linux, gli sviluppatori frammentano i cambiamenti in singole unità chiamate patch.

Una patch descrive le linee che devono essere modificate, aggiunte o rimosse dal codice sorgente. Ogni patch può aggiungere una nuova funzionalità, un nuovo supporto per un dispositivo, risolvere un problema, migliorare le prestazioni o rielaborare il testo per essere più facilmente comprensibile. 

Gli sviluppatori pubblicano le loro patch nella relativa mailing list dove altri sviluppatori possono rispondere con un feedback. Quando la patch è quasi pronta per il rilascio, viene accettata da un senior kernel developer o maintainer Linux, che gestisce una o più di cento diverse sezioni del kernel.

Quando il manutentore finisce la revisione, firmerà la patch e la invierà al creatore di Linux e Linus Torvalds, che è l'autorità ultima su ciò che viene o non viene accettato.

Quasi 10.000 patch vanno in ogni nuova release, circa 6 patch ogni ora. Con questo sviluppo di Linux è semplicemente ineguagliato. 

Oggi Linux domina i dispositivi mobili, le infrastrutture aziendali, nel web, nei data center e nel supercomputing. 

Termini base Linux

Prima di iniziare ad usare Linux, è necessario essere consapevoli di alcuni termini di base come kernel, distribuzione, boot loader, service, filesystem, X Window system, ambiente desktop e linea di comando. Questi sono molto comunemente usati dalla comunità Linux.

Il kernel è considerato il cervello del sistema operativo Linux. Esso controlla l'hardware e fa interagire l'hardware con le applicazioni. Un esempio di kernel è il kernel Linux. Il kernel Linux più recente, insieme ai kernel Linux del passato, può essere trovato sul sito web kernel.org.

Una distribuzione nota anche come Distros è una collezione di programmi combinati con il kernel Linux per formare un sistema operativo basato su Linux. Alcuni esempi comuni di una distribuzione sono Red Hat Enterprise Linux, Fedora, Ubuntu e Gentoo.

Il boot loader, come suggerisce il nome, è un programma che avvia il sistema operativo. Due esempi di boot loader sono GRUB e ISOLINUX.

Un service è un programma che viene eseguito come processo in background. Alcuni esempi di servizio sono httpd, nfsd, ntpd, ftpd e named.

Un filesystem è un metodo per memorizzare e organizzare i file in Linux. Alcuni esempi di filesystem sono ext3, ext4, FAT, XFS e Btrfs.

l'X Window System fornisce il toolkit standard e il protocollo per costruire interfacce utente grafiche su quasi tutti i sistemi Linux.

L'ambiente desktop è un'interfaccia utente grafica sopra il sistema operativo. GNOME, KDE, Xfce e Fluxbox sono alcuni esempi dell'ambiente desktop.

La linea di comando è un'interfaccia per digitare comandi sopra il sistema operativo.

La Shell è l'interprete della linea di comando che interpreta l'input della linea di comando e istruisce il sistema operativo ad eseguire tutti i compiti e i comandi necessari. Per esempio, bash, tcsh e zsh.