- Le noyau Linux est aujourd’hui un immense projet open source de 36 millions de lignes, mais sa toute première version ne comptait que 10 239 lignes (8 670 hors commentaires et lignes vides)
- Linux v0.01, par sa simplicité, constitue un excellent point de départ pour apprendre le fonctionnement interne d’un noyau de type Unix
- La v0.01 ne possède que 66 appels système
- création, suppression et écriture de fichiers/répertoires
- chmod, chown, pipe, fork, execve
- Le concept de socket n’ayant pas encore été introduit, aucun support réseau n’est possible
mount n’est pas encore implémenté
- Tout est codé en dur pour l’architecture Intel 386 (ce que l’auteur de MINIX avait critiqué)
strcpy est codé en assembleur à l’aide d’instructions i386
- Seuls les équipements PC/AT sont pris en charge
- CMOS, PIT (Programmable Interval Timer), ATA (PIO), VGA (mode texte), clavier PS/2 Intel 8042 (assembleur)
- Il n’existe pas encore de dossier
drivers, tout est codé en dur dans les sous-systèmes
- On trouve dans le Makefile un commentaire mentionnant le nom initialement choisi par Linus, le noyau "FREAX"
- Le système de fichiers ne prend en charge que MINIX (
ext s’en est inspiré)
- Dans le code de l’ordonnanceur, un commentaire dit : "cette partie est un code plutôt bon qui devrait fonctionner dans tous les environnements, il n’y aura donc probablement aucune raison de la modifier !"
- Bien sûr, cette prédiction s’est révélée fausse, puisque de nombreuses améliorations et de nouveaux algorithmes ont depuis été introduits
- L’implémentation du kernel panic tient en seulement 5 lignes : affichage de "kernel panic: raison" puis arrêt du système avec
for(;;)
- Il y a un passage qui semble appeler
fork(2) dans l’espace noyau
- En apparence seulement : juste avant,
move_to_user_mode() sert en fait d’astuce
- Linus ne disposait pas de machine avec plus de 8 Mo de RAM (il n’a donc pas pu tester lui-même et disait en substance à ceux qui en avaient une de se débrouiller…)
- Il est difficile de compiler cela avec une toolchain moderne
- GCC reste rétrocompatible, mais pas suffisamment
- Linus disposait de sa propre version de GCC avec l’option
-mstring-insns (probablement pour prendre en charge les instructions de chaîne x86)
2 commentaires
C'est intéressant.
Commentaires sur Hacker News