Introduzione
Nell’uso popolare, “Linux” si riferisce spesso a un gruppo di distribuzioni di sistemi operativi costruite attorno al kernel Linux. Nel senso più stretto, però, Linux si riferisce solo alla presenza del kernel stesso. Per creare un sistema operativo completo, le distribuzioni Linux includono spesso strumenti e librerie dal progetto GNU e da altre fonti. Negli ultimi tempi, sempre più sviluppatori hanno utilizzato Linux per creare ed eseguire applicazioni mobili; ha anche svolto un ruolo chiave nello sviluppo di dispositivi economici come Chromebook, che eseguono sistemi operativi sul kernel. Nei contesti di cloud computing e server in generale, Linux è una scelta popolare per alcune ragioni pratiche:
- Le sue distribuzioni rimangono aggiornate e supportate dalle comunità di altri sviluppatori.
- È in grado di funzionare su una vasta gamma di hardware e si installerà accanto a sistemi preesistenti (una caratteristica utile negli ambienti di sviluppo locali).
- Supporta l’installazione centralizzata di software da repository preesistenti.
- I suoi requisiti di risorse sono bassi.
- È spesso il primo pensiero quando gli sviluppatori stanno creando ecosistemi di applicazioni e strumenti per server, portando a elevati livelli di compatibilità.
- Mantiene le modifiche necessarie ai comportamenti del sistema operativo.
Linux ha anche le sue origini nel movimento del software libero e open source, e di conseguenza alcuni sviluppatori lo scelgono per una combinazione di motivi etici e pratici:
- Per alcuni sviluppatori, utilizzare Linux rappresenta un impegno per l’accessibilità e la libertà di espressione.
- La comunità Linux è anche un punto di attrazione per alcuni sviluppatori: quando hanno domande, possono consultare le risorse prodotte da questa comunità o contattare direttamente uno dei molti manutentori attivi.
Per comprendere il ruolo di Linux all’interno della comunità degli sviluppatori (e oltre), questo articolo delineerà brevemente la storia di Linux attraverso Unix e discuterà alcune distribuzioni Linux popolari.
Radici in Unix
Linux ha le sue radici in Unix e Multics, due progetti che condividevano l’obiettivo di sviluppare un robusto sistema operativo multiutente.
Le origini di Unix
Unix è nato dal progetto Multics presso il Computer Sciences Research Center dei Bell Laboratories. Gli sviluppatori che lavoravano su Multics presso i Bell Labs e altrove erano interessati a costruire un sistema operativo multiutente con memorizzazione a livello singolo, collegamento dinamico (in cui un processo in esecuzione può richiedere che un altro segmento venga aggiunto al suo spazio degli indirizzi, consentendogli di eseguire il codice di quel segmento) e un sistema di file gerarchico.
Bell Labs ha interrotto il finanziamento del progetto Multics nel 1969, ma un gruppo di ricercatori, tra cui Ken Thompson e Dennis Ritchie, ha continuato a lavorare con i principi fondamentali del progetto. Nel 1972-3 hanno preso la decisione di riscrivere il sistema in C, rendendo Unix unicamente portabile: a differenza degli altri sistemi operativi contemporanei, poteva sia spostarsi che sopravvivere al suo hardware.
La ricerca e lo sviluppo presso i Bell Labs (in seguito AT&T) sono continuati, con Unix System Laboratories che sviluppava versioni di Unix, in partnership con Sun Microsystems, che sarebbero state ampiamente adottate dai venditori commerciali di Unix. Nel frattempo, la ricerca continuava negli ambienti accademici, più notevolmente il Computer Systems Research Group presso l’Università della California, Berkeley. Questo gruppo ha prodotto la Berkeley Software Distribution (BSD), che ha ispirato una gamma di sistemi operativi, molti dei quali sono ancora utilizzati oggi. Due distribuzioni BSD di nota storica sono NeXTStep, il sistema operativo pionieristico di NeXT, che è diventato la base per macOS, tra gli altri prodotti, e MINIX, un sistema operativo educativo che ha formato una base comparativa per Linus Torvalds mentre sviluppava Linux.
Caratteristiche chiave di Unix
Unix è orientato intorno ai principi di chiarezza, portabilità e simultaneità.
- Chiarezza: Il design modulare di Unix consente alle funzioni di eseguire in modo limitato e definito. Il suo sistema di file è unificato e gerarchico, il che semplifica la manipolazione dei dati. A differenza di alcuni dei suoi predecessori, Unix implementa centinaia (piuttosto che migliaia) di chiamate di sistema, ognuna delle quali è progettata per essere diretta e chiara nel suo obiettivo.
- Portabilità: Scrivendo Unix in C, il gruppo di Bell Labs ha posizionato Unix per un uso e una diffusione su vasta scala. C è stata progettata per avere un accesso a basso livello alla memoria, un supporto minimo a tempo di esecuzione e una relazione efficiente tra linguaggio e istruzioni della macchina. Una base in C significa che Unix è adattabile e facile da eseguire su una varietà di hardware.
- Simultanietà: Il kernel di Unix è progettato per il obiettivo (condiviso dal progetto Multics) di sostenere più utenti e flussi di lavoro. Lo spazio del kernel rimane distinto dallo spazio utente in Unix, il che consente a più applicazioni di essere eseguite contemporaneamente.
L’Evolutzione di Linux
Unix ha sollevato importanti domande per gli sviluppatori, ma è rimasto proprietario nelle sue prime iterazioni. Il prossimo capitolo della sua storia è quindi la storia di come gli sviluppatori hanno lavorato all’interno e contro di esso per creare alternative gratuite e open-source.
Espimenti Open-Source
Richard Stallman è stato una figura centrale tra gli sviluppatori che si sono ispirati a creare alternative non proprietarie a Unix. Mentre lavorava presso il Laboratorio di Intelligenza Artificiale del MIT, ha avviato il lavoro sul progetto GNU (ricorsivo per “GNU’s not Unix!”), lasciando infine il laboratorio nel 1984 per poter distribuire componenti GNU come software libero. Il kernel GNU, noto come GNU HURD, è diventato il focus della Free Software Foundation (FSF), fondata nel 1985 e attualmente guidata da Stallman.
Nel frattempo, un altro sviluppatore stava lavorando a un’alternativa libera a Unix: il finlandese Linus Torvalds, studente universitario. Dopo essersi frustrato con la licenza per MINIX, Torvalds annunciò a un gruppo di utenti di MINIX il 25 agosto 1991 che stava sviluppando il suo sistema operativo, che assomigliava a MINIX. Sebbene inizialmente sviluppato su MINIX utilizzando il compilatore GNU C, il kernel Linux divenne rapidamente un progetto unico con un nucleo di sviluppatori che rilasciarono la versione 1.0 del kernel con Torvalds nel 1994.
Torvalds aveva utilizzato il codice GNU, incluso il compilatore GNU C, con il suo kernel, ed è ancora vero che molte distribuzioni Linux si basano su componenti GNU. Stallman ha fatto pressioni per espandere il termine “Linux” in “GNU/Linux”, sostenendo che questo catturerebbe sia il ruolo del progetto GNU nello sviluppo di Linux che gli ideali sottostanti che hanno favorito il progetto GNU e il kernel Linux. Oggi, “Linux” viene spesso utilizzato per indicare sia la presenza del kernel Linux che degli elementi GNU. Allo stesso tempo, i sistemi embedded su molti dispositivi portatili e smartphone spesso utilizzano il kernel Linux con pochi o nessun componente GNU.
Caratteristiche chiave di Linux
Anche se il kernel Linux ha ereditato molti obiettivi e proprietà da Unix, si differenzia dal sistema precedente nei seguenti modi:
- Il suo componente principale è il kernel, che viene sviluppato in modo indipendente dagli altri componenti del sistema operativo. Ciò significa che Linux prende elementi da una varietà di fonti (come GNU) per comporre un intero sistema operativo.
- È gratuito e open-source. Mantenuto da una comunità di sviluppatori, il kernel è distribuito con licenza GNU General Public License (un derivato del lavoro della FSF sul progetto GNU) ed è disponibile per il download e la modifica. La GPL stabilisce che le opere derivati devono mantenere i termini di licenza del software originale.
- Ha un kernel monolitico, simile a Unix, ma può caricare e scaricare dinamicamente il codice del kernel su richiesta.
- Ha il supporto multiprocessore simmetrico (SMP), a differenza delle implementazioni tradizionali di Unix. Ciò significa che un singolo sistema operativo può avere accesso a più processori, che condividono una memoria principale e l’accesso a tutti i dispositivi I/O.
- Il suo kernel è preemptive, un’altra differenza rispetto a Unix. Questo significa che lo scheduler può forzare un cambio di contesto su un driver o un’altra parte del kernel mentre sta eseguendo.
- Il suo kernel non differenzia tra thread e processi normali.
- Include un’interfaccia a riga di comando (CLI) e può anche includere un’interfaccia grafica utente (GUI).
Distribuzioni Linux Popolari
Gli sviluppatori mantengono molte distribuzioni Linux popolari oggi. Tra le più longeve c’è Debian, una distribuzione libera e open-source che conta 50.000 pacchetti software. Debian ha ispirato un’altra distribuzione popolare, Ubuntu, finanziata da Canonical Ltd. Ubuntu utilizza il formato pacchetto deb di Debian e gli strumenti di gestione dei pacchetti, e gli sviluppatori di Ubuntu contribuiscono con le modifiche a monte a Debian.
A similar relationship exists between Red Hat, Fedora, and CentOS. Red Hat created a Linux distribution in 1993, and ten years later split its efforts into Red Hat Enterprise Linux and Fedora, a community-based operating system that utilizes the Linux kernel and elements from the GNU Project. Red Hat also has a relationship with the CentOS Project, another popular Linux distribution for web servers. This relationship does not include paid maintenance, however. Like Debian, CentOS is maintained by a community of developers.
Conclusione
In questo articolo, abbiamo trattato le radici di Linux in Unix e alcune delle sue caratteristiche distintive. Se sei interessato a saperne di più sulla storia di Linux e sulle sue varianti di Unix (incluse FreeBSD), un buon passo potrebbe essere la nostra serie su FreeBSD. Un’altra opzione potrebbe essere considerare la nostra serie introduttiva su come iniziare con Linux. Puoi anche dare un’occhiata a questa introduzione alla struttura del filesystem in Linux, questa discussione su come utilizzare find
e locate
per cercare file su un VPS Linux, o questa introduzione alle espressioni regolari sulla linea di comando.
Source:
https://www.digitalocean.com/community/tutorials/brief-history-of-linux