Même si Linux était un système écrit à partir de zéro, la première version de Linux ressemblait beaucoup à minix, qui est un "mini-Unix". C'est dans l'annonce de Linus.
Wikipedia fournit une brève description de l'histoire de Linux. Si vous voulez en savoir plus sur ce sujet, ce livre est ce qu'il vous faut. Vous y apprendrez que Linus Torvalds a utilisé les pages de manuel Unix afin de savoir quels appels système il devait implémenter et comment ils devaient fonctionner.
Les premiers noyaux Linux ont dû être amorcés avec MINIX, qui a été développé avec une conception de type UNIX à l'esprit. Maintenant, Linus a utilisé des livres sur UNIX lorsqu'il a conçu son noyau. La date de sa commande de livre est même archivée.
À ce jour, Linux n'est pas entièrement compatible UNIX, par conséquent, il est désigné comme "UNIX-Like" (Mac OS X, en revanche, est un UNIX (complet).
Le titre de votre question indique simplement "Linux", ce qui implique non seulement le noyau, mais également d'autres parties de celui-ci. Je dirais que lorsque vous prenez en compte des éléments extérieurs au noyau pour le comparer à UNIX, il se ressemble encore plus. Étant donné des choses comme X, etc. Le noyau Linux à lui seul est assez proche d'UNIX, mais lorsque vous prenez en compte les parties GNU, il s'en rapproche encore plus.
La version 0.01 du noyau peut encore être téléchargée. Cependant, je n'ai pas testé s'il compile, et encore moins s'exécute.
Non.
Cela n'a aucun sens de dire que la première version de Linux en particulier était "basée sur des parties" d'Unix. Ce n'était pas un portage du noyau Unix. Il n'a pas commencé avec le code Unix dans les premières versions [consulter la source] et l'a remplacé au fil du temps. Linus n'avait pas accès au code source Unix [entretien].
Ce qu'il a copié, c'est l'API. La même API se trouve dans la dernière version de Linux et le restera pour toujours. En règle générale, Linux ne supprime aucune API car cela casserait certaines applications. Ce qui est copié est le minimum nécessaire, lorsque Linux (et la première version de Linux libc) a été écrit pour exécuter des applications Unix existantes. C'est une capacité fondamentale bien connue de Linux. Vous pouvez décrire cela de différentes manières, mais il n'y a pas vraiment de quoi discuter ici.
Par exemple. la même API est copiée dans GNU libc (qui est antérieure à Linux). IIRC Linux effectivement copié à partir de la documentation de l'API (man
pages).
Je suis réticent à dire même cela, en raison de la meilleure partie de la conception de l'interface entre le noyau Unix et les applications, comme gcc; "tout est un fichier". Les opérations fondamentales sur les fichiers ont été normalisées dans le cadre du langage de programmation C . Mes pages de manuel suggèrent C89, c'est-à-dire un an ou deux plus tôt. Par exemple. Windows implémente la même API C. Cependant, cela passe sous silence trop de bits fastidieux qui ne sont pas des fichiers et/ou que C n'a pas inclus dans la norme, nous devons donc reconnaître que Linux est spécifiquement de type Unix.
Plus précisément, l'API de cette "première" version de Linux est constituée de 70 appels système, de leurs listes d'arguments, de 40 codes d'erreur ... et dépassant l'un ou l'autre, 200 lignes définissant les contrôles du terminal, ce à quoi je pensais quand j'ai écrit "fiddly morceaux". Mais il y a certainement plus tard aussi.
Comme indiqué ailleurs, c'est un peu le point sensible. Depuis qu'il a été évoqué dans une "étude" financée par Microsoft, puis plaidé pendant des années (SCO contre IBM) sans aucune preuve. IIRC ils ont finalement montré quelques lignes de code. Il s'est avéré que toutes les "IP contrefaisantes" (qu'ils prétendaient qu'IBM avait ajoutées à Linux) n'étaient que quelques API. Malgré plusieurs précédents à ce stade permettant la copie d'API, c'est-à-dire l'ingénierie inverse en salle blanche.
Comme mentionné par d'autres, la relation avec Minix était plus serré. Je crois que le format du système de fichiers a été tiré de Minix. Les structures de données sont plus spécifiques à l'implémentation que la plupart des API abstraites, et si vous avez dit "basé sur des parties de" Minix vous ne seriez pas nécessairement en train de mentir.
Minix est également décrit comme un Unix-like (ou "Unix clone", ce qui signifie un système d'exploitation similaire à Unix mais non basé sur son code). Dans tous les sens, Linux est basé sur Unix, la même chose devrait s'appliquer à Minix. (Il existe également d'autres clones Unix ; Wikipedia répertorie certains propriétaires et diverses couches de compatibilité pour Windows).
Je fais un système d'exploitation (gratuit) (juste un passe-temps, ne sera pas gros et professionnel comme gnu) pour 386 (486) clones AT. Cela couve depuis avril, et commence à se préparer. J'aimerais avoir des commentaires sur les choses que les gens aiment/n'aiment pas dans minix, car mon système d'exploitation lui ressemble quelque peu (même disposition physique du système de fichiers (pour des raisons pratiques) entre autres).
J'ai actuellement porté bash(1.08) et gcc(1.40), et les choses semblent fonctionner. Cela implique que j'obtiendrai quelque chose de pratique d'ici quelques mois, et j'aimerais savoir quelles fonctionnalités la plupart des gens voudraient. Toutes les suggestions sont les bienvenues, mais je ne promets pas de les mettre en œuvre :-)
Linus ([email protected])
PS. Oui - il est exempt de tout code minix , et il a un fs multi-thread. Il n'est PAS portable (utilise la commutation de tâches 386, etc.), et il ne prendra probablement jamais en charge autre chose que les disques durs AT, car c'est tout ce que j'ai :-(.