Qual è la differenza tra Linux e Unix?

Linux ha preso ispirazione da Unix, ma Linux non è Unix, sebbene sia decisamente simile a Unix. Spiegheremo le principali differenze tra questi due famosi sistemi operativi.

Stessa differenza?

Linux è un sistema operativo gratuito e open source. Unix è un prodotto commerciale, offerto da una varietà di fornitori ciascuno con la propria variante, solitamente dedicata al proprio hardware. È costoso e chiuso. Ma Linux e Unix fanno più o meno la stessa cosa allo stesso modo, giusto? Più o meno, sì.

Le sottigliezze sono leggermente più complicate. Ci sono differenze oltre il tecnico e l’architettura. Per comprendere alcune delle influenze che hanno plasmato Unix e Linux, dobbiamo comprendere i loro retroscena.

Le origini di Unix

Unix ha più di 50 anni. È stato sviluppato in Digital Equipment Corporation (DIC) linguaggio assembly su un DEC PDP / 7 come progetto non ufficiale presso Bell Labs, allora di proprietà di AT&T. Poco dopo è stato portato su un file DEC PDP / 11/20 computer, poi si è diffuso costantemente su altri computer alla Bell. Una riscrittura in Linguaggio di programmazione C. portò alla versione 4 di Unix del 1973. Ciò era significativo perché le caratteristiche del linguaggio C e del compilatore rendevano ora relativamente facile portare Unix su nuove architetture di computer.

Nel 1973, Ken Thompson e Dennis Ritchie ha presentato un documento su Unix a una conferenza. Di conseguenza, le richieste di copie di Unix si riversarono in Bell. Poiché la vendita di sistemi operativi non rientrava nell’ambito delle operazioni consentito da AT&T, non potevano trattare Unix come un prodotto. Ciò ha portato a distribuire Unix come codice sorgente con una licenza. I costi nominali erano sufficienti per coprire la spedizione e l’imballaggio e una “royalty ragionevole”. Unix è arrivato “così com’è”, senza supporto tecnico e senza correzioni di bug. Ma hai ottenuto il codice sorgente e potresti modificarlo.

Unix ha visto una rapida diffusione nelle istituzioni accademiche. Nel 1975, Ken Thompson trascorse un anno sabbatico da Bell al Università della California, Berkeley. Insieme ad alcuni studenti laureati, ha iniziato ad aggiungere e migliorare la loro copia locale di Unix. L’interesse esterno per le aggiunte di Berkeley è cresciuto, portando alla prima versione di Berkeley Software Distribution (BSD). Questa era una raccolta di programmi e modifiche al sistema che potevano essere aggiunti a un sistema Unix esistente, ma non era un sistema operativo autonomo. Le versioni successive di BSD erano interi sistemi Unix.

Adesso c’erano due versioni principali di Unix, il flusso AT&T e il flusso BSD. Tutte le altre varianti di Unix, come AIX, HP-UX, e Oracolo Solaris, sono discendenti di questi. Nel 1984, alcune delle restrizioni su AT&T furono rilasciate e furono in grado di produrre e vendere Unix.

Unix è stato poi commercializzato.

La genesi di Linux

Considerando la commercializzazione di Unix come un’ulteriore erosione delle libertà a disposizione degli utenti di computer, Richard Stallman deciso di creare un sistema operativo fondato sulla libertà. Ovvero, la libertà di modificare il codice sorgente, ridistribuire versioni modificate del software e utilizzare il software in qualsiasi modo l’utente ritenga opportuno.

Il sistema operativo avrebbe replicato le funzionalità di Unix, senza includere alcun codice sorgente Unix. Ha chiamato il sistema operativo GNU e ha fondato il Progetto GNU nel 1983 per sviluppare il sistema operativo. Nel 1985 ha fondato la Free Software Foundation per promuovere, finanziare e supportare il progetto GNU.

Tutte le aree del sistema operativo GNU stavano facendo buoni progressi, a parte il kernel. Gli sviluppatori del progetto GNU stavano lavorando su un microkernel chiamato GNU Hurd, ma i progressi furono lenti. (È ancora in fase di sviluppo oggi e si avvicina a una versione.) Senza un kernel, non ci sarebbe il sistema operativo.

Nel 1987, Andrew S. Tanebaum rilasciato un sistema operativo chiamato MINIX (mini-Unix) come supporto didattico per gli studenti che studiano la progettazione del sistema operativo. MINIX era un sistema operativo funzionale, simile a Unix, ma aveva alcune limitazioni, specialmente con il filesystem. Dopotutto, il codice sorgente doveva essere abbastanza piccolo da garantire che fosse adeguatamente coperto in un solo semestre universitario. Alcune funzionalità dovevano essere sacrificate.

Per comprendere meglio il funzionamento interno di Intel 80386 nel suo nuovo PC, uno studente di informatica ha chiamato Linus Torvalds ha scritto un semplice codice per cambiare attività come esercizio di apprendimento. Alla fine, questo codice è diventato un proto-kernel elementare che è diventato il primo kernel Linux. Torvalds conosceva MINIX. Infatti, il suo primo kernel è stato sviluppato su MINIX utilizzando il compilatore GCC di Richard Stallman.

Torvalds decise di creare il proprio sistema operativo che superasse i limiti del MINIX progettato per l’insegnamento. Nel 1991 ha fatto il suo famoso annuncio sul MINIX Usenet gruppo, chiedendo commenti e suggerimenti sul suo progetto.

Linux non è realmente un clone di Unix. Se Linux fosse un clone di Unix, sarebbe Unix. Non lo è, è simile a Unix. La parola “clone” implica che una piccola parte dell’originale è coltivata in una nuova replica cellula per cellula dell’originale. Linux è stato creato di nuovo, per avere l’aspetto di Unix e per soddisfare le stesse esigenze. È meno un clone e più un file replicante.

In ogni caso, Linux era un kernel alla ricerca di un sistema operativo; GNU era un sistema operativo alla ricerca di un kernel. Con il senno di poi, quello che è successo dopo sembra inevitabile. Ha anche cambiato il mondo.

Chi fa lo sviluppo?

Un segno di Red Hat.

Una distribuzione Linux è la somma di molte parti diverse, estratte da molti luoghi diversi. Il kernel Linux, la suite GNU di utilità principali e le applicazioni user-land vengono combinate per creare una distribuzione praticabile. E qualcuno deve combinare, mantenere e gestire, proprio come qualcuno deve sviluppare il kernel, le applicazioni e le utilità principali. I manutentori della distribuzione e le comunità di ciascuna distribuzione giocano tutti la loro parte nel dare vita a una distribuzione Linux proprio come fanno gli sviluppatori del kernel.

Linux è il risultato di uno sforzo collaborativo distribuito svolto da volontari non retribuiti, da organizzazioni come Canonico e cappello rossoe individui sponsorizzati dal settore.

Ogni Unix commerciale è sviluppato come una singola entità coerente utilizzando strutture di sviluppo interne o in outsourcing strettamente controllate. Spesso questi hanno un kernel unico e sono progettati specificamente per le piattaforme hardware fornite da ciascun fornitore.

I derivati ​​gratuiti e open source del flusso Unix BSD, come FreeBSD, OpenBSD, e DragonBSD, utilizzare una combinazione di codice BSD legacy e nuovo codice. Ora sono progetti supportati dalla comunità e gestiti in modo molto simile alle distribuzioni Linux.

Standard e conformità

In generale, Linux non è né l’uno né l’altro Specifica Unix singola (SUS) né conforme POSIX conforme. Cerca di soddisfare entrambi gli standard senza esserne schiavo. Ci sono state una o due – letteralmente, una o due – eccezioni, come Inspur K-UX, un Linux cinese conforme a POSIX.

Un vero Unix, come le offerte commerciali, è conforme. Alcuni derivati ​​BSD, incluse tutte le versioni tranne una di macOS, sono compatibili con POSIX. I nomi delle varianti, come AIX, HP-UX e Solaris, sono tutti marchi di proprietà delle rispettive organizzazioni.

Marchi e copyright

Linux è un marchio registrato di Linus Torvalds. Il Linux Foundation gestisce il marchio per suo conto. Il kernel Linux e le utilità principali sono rilasciati sotto vari GNU “Copyleft” Licenze pubbliche generali. Il codice sorgente è disponibile gratuitamente.

Unix è un marchio registrato di Apri gruppo. È protetto da copyright, proprietario e closed source.

FreeBSD è protetto da copyright di Progetto FreeBSDe il codice sorgente è disponibile.

Differenze in uso

Dal punto di vista dell’esperienza utente, dalla riga di comando, non ci sono molte differenze visibili. A causa degli standard POSIX e della conformità, il software scritto su Unix può essere compilato per un sistema operativo Linux con un numero limitato di operazioni di porting. Gli script di shell, ad esempio, possono essere utilizzati direttamente su Linux in molti casi con poche o nessuna modifica.

Alcune delle utilità della riga di comando hanno opzioni della riga di comando leggermente diverse, ma essenzialmente lo stesso arsenale di strumenti è disponibile su entrambe le piattaforme. Infatti, IBM AIX ha un file Casella degli strumenti AIX per applicazioni Linux. Ciò consente all’amministratore di sistema di installare centinaia di pacchetti GNU (come Bash, GCC e così via).

I diversi gusti di Unix sono diversi interfacce utente grafiche (GUI) a loro disposizione, così come Linux. Un utente Linux che conosce GNOME o Compagno dovranno sentirsi a modo loro la prima volta che si incontreranno KDE o Xfce, ma presto lo raccoglieranno. È simile alla gamma di GUI disponibili su Unix, come Motivo, Ambiente desktop comune, e il Sistema X Windows. Sono tutti abbastanza simili da essere navigabili da chiunque abbia familiarità con i concetti di un ambiente a finestre con finestre di dialogo, menu e icone.

Imparerai di più sulle differenze durante l’amministrazione dei sistemi. Ad esempio, ce ne sono diversi dentro meccanismi. I derivati ​​del System V Unix e gli stream BSD hanno diversi sistemi di inizializzazione. Le varianti BSD libere mantenevano gli schemi di inizializzazione BSD. Per impostazione predefinita, le distribuzioni Linux utilizzeranno un sistema init derivato da Unix System V o systemd.

Stick Shift contro automatico

Se puoi guidarne uno, puoi guidare l’altro, anche se sarà un po ‘stop-start per cominciare.

Mettendo da parte il prezzo, le differenze nella filosofia, nella licenza, nel modello di sviluppo, nell’organizzazione della comunità e nel tipo e stile di governance sono maggiori e più significative delle differenze nei flag della riga di comando tra, ad esempio, una versione di grep e altro.

Le differenze maggiori non sono quelle che vedi sullo schermo.