Anche se Linux era un sistema scritto da zero, la prima versione di Linux era molto simile al minix, che è un "mini-Unix". È nell'annuncio di Linus.
Wikipedia fornisce una breve descrizione della storia di Linux. Se vuoi saperne di più su questo argomento, questo libro è ciò di cui hai bisogno. Lì scoprirai che Linus Torvalds usava le pagine man di Unix per sapere quali chiamate di sistema doveva implementare e come dovevano funzionare.
I primi kernel Linux dovevano essere avviati con MINIX, che è stato sviluppato pensando a un design simile a UNIX. Ora, Linus usava libri su UNIX quando stava progettando il suo kernel. La data del suo ordine del libro è persino archiviata.
Ad oggi, Linux non è completamente compatibile con UNIX, pertanto è designato come "UNIX-Like" (Mac OS X, d'altra parte, è un (completo) UNIX).
Il titolo della tua domanda afferma semplicemente "Linux" che implica non solo il kernel, ma anche altre parti di esso. Direi che quando prendi in considerazione cose al di fuori del kernel per confrontarlo con UNIX, è ancora più simile. Date cose come X, ecc. Il kernel Linux da solo si avvicina molto a UNIX, ma se si prendono in considerazione le parti GNU, si avvicina ancora di più.
La versione 0.01 del kernel, può ancora essere scaricata. Tuttavia, non ho verificato se si compila, figuriamoci se viene eseguito.
No.
Non ha senso dire che la prima versione di Linux in particolare era "basata su parti di" Unix. Non era un port del kernel Unix. Non è iniziato con il codice Unix nelle prime versioni [sfoglia la fonte] e lo ha sostituito nel tempo. Linus non aveva accesso al codice sorgente Unix [intervista].
Ciò da cui è stato copiato è l'API. La stessa API è nell'ultima versione di Linux e rimarrà per sempre. Di norma Linux non rimuove alcuna API perché ciò interromperebbe alcune applicazioni. Ciò che viene copiato è il minimo necessario, quando Linux (e la prima versione di Linux libc) è stato scritto per eseguire applicazioni Unix esistenti. Questa è un'abilità fondamentale ben nota di Linux. Puoi descriverlo in modi diversi, ma non c'è davvero nulla su cui discutere qui.
Per esempio. la stessa API viene copiata in GNU libc (che precede Linux). IIRC Linux ha effettivamente copiato dalla documentazione API (man
pagine).
Detesto persino dirlo, a causa della maggior parte del design dell'interfaccia tra il kernel Unix e le applicazioni, come gcc; "tutto è un file". Le operazioni fondamentali sui file sono state standardizzate come parte del linguaggio di programmazione C . Le mie manpage suggeriscono C89, cioè circa un anno prima. Per esempio. Windows implementa la stessa API C. Tuttavia, questo sorvola su troppi bit complicati che non sono file e/o che C non ha incluso nello standard, quindi dobbiamo riconoscere che Linux è specificamente simile a Unix.
Nello specifico l'API in questa "prima" versione di Linux è composta da 70 chiamate di sistema, i loro elenchi di argomenti, 40 codici di errore... e superando uno di questi, 200 righe che definiscono i controlli del terminale, che è proprio quello a cui stavo pensando quando ho scritto "fiddly bit". Ma sicuramente ce ne saranno anche di più in seguito.
Come accennato altrove, questo è un punto dolente. Dal momento che è stato sollevato in uno "studio" finanziato da Microsoft e poi contestato per anni (SCO contro IBM) senza alcuna prova. IIRC alla fine hanno mostrato alcune righe di codice. Si è scoperto che tutto l '"IP in violazione" (che secondo loro IBM ha aggiunto a Linux) erano solo alcune API. Nonostante i numerosi precedenti a questo punto consentano la copia delle API, ovvero il reverse engineering in camera bianca.
Come accennato da altri, la relazione con Minix era più stretto. Credo che il formato del filesystem è stato preso da Minix. Le strutture dati sono più specifiche dell'implementazione rispetto alla maggior parte delle API astratte e se hai detto "basato su parti di" Minix non mentiresti necessariamente.
Minix è anche descritto come Unix-like (o "clone Unix", che significa un sistema operativo simile a Unix ma non basato sul suo codice). In ogni senso Linux è basato su Unix, lo stesso dovrebbe valere per Minix. (Ci sono anche altri cloni Unix; Wikipedia ne elenca alcuni proprietari e vari livelli di compatibilità per Windows).
Sto realizzando un sistema operativo (gratuito) (solo un hobby, non sarà grande e professionale come gnu) per i cloni 386 (486) AT. Questo è in preparazione da aprile e sta iniziando a prepararsi. Vorrei qualsiasi feedback su cose che piacciono/non piacciono alle persone in minix, dato che il mio sistema operativo gli somiglia in qualche modo (stesso layout fisico del file system (per motivi pratici) tra le altre cose).
Attualmente ho eseguito il porting di bash(1.08) e gcc(1.40) e le cose sembrano funzionare. Ciò implica che avrò qualcosa di pratico entro pochi mesi e mi piacerebbe sapere quali funzionalità vorrebbe la maggior parte delle persone. Qualsiasi suggerimento è benvenuto, ma non prometto che li implementerò :-)
Linus ([email protected])
PS. Sì - è privo di qualsiasi codice minix , e ha un fs multi-thread. NON è portatile (usa il cambio di attività 386 ecc.) e probabilmente non supporterà mai nient'altro che gli hard disk AT, dato che è tutto quello che ho :-(.