Le systeme d'exploitation Linux Remy Card, Rene Cougnenc, Julien Simon 11.. HHiissttoorriiqquuee ddee LLiinnuuxx Au cours de l'annee 1991, un etudiant finlandais, nomme Linus Torvalds, a achete un micro-ordinateur de type PC, afin d'etudier la programmation du microprocesseur i386. Ne voulant pas etre limite par MS/DOS, il a tout d'abord utilise un clone d'Unix, peu cher, appele Minix. Minix possede lui-meme certaines limitations qui, bien que moins importantes que celles de MS/DOS, sont assez genantes (limitation de la taille des executables a 64 kilo-octets, limitation des systemes de fichiers a 64 mega-octets, temps de reponse deplorable, ...). Aussi, Linus Torvalds a commence a re-ecrire certaines parties du systeme afin de lui ajouter des fonctionnalites et de le rendre plus efficace et a diffuse une distribution source de son travail via Internet. La premiere version de Linux (version 0.1 en aout 1991) etait nee. Cette premiere version etait tres limitee (elle ne comportait meme pas de gestionnaire des disquettes) et n'etait utilisable que sous Minix. Aussi, il est fort probable qu'elle ait ete utilisee par tres peu de personnes. Neanmoins, un petit nombre de "hackers" ont decouvert, a cette epoque, cet embryon de systeme et ont vu en lui la base d'un systeme exploitable. Aussi, un certain nombre de personnes ont commence a travailler avec Linus Torvalds afin d'enrichir le noyau. Au cours des quatre dernieres annees, le developpement du noyau Linux, ainsi que des utilitaires necessaires pour en faire un systeme compatible avec Unix, a ete mene de maniere intensive par un ensemble de programmeurs, situes aux quatre coins du monde, communiquant via le reseau Internet. Ces developpeurs ont implemente de nombreuses fonctionnalites qui font de Linux aujourd'hui un clone efficace d'Unix pour micro-ordinateurs PC-386, Amiga et Atari. 22.. MMeetthhooddee ddee ddeevveellooppppeemmeenntt La facon dont Linux a ete developpe (et continue a etre developpe) est assez originale. En effet, le developpement de Linux n'est pas controle par une organisation responsable du systeme : un ensemble de developpeurs, repartis dans le monde entier, collabore pour etendre les fonctionnalites du systeme, le plus souvent en dialoguant via Internet. Tout programmeur disposant des competences necessaires, de temps libre, et d'une certaine dose de courage, peut participer au developpement du systeme. Bien que le nom "Linux" se refere au noyau du systeme, le developpement ne se confine pas a ce seul noyau : certaines equipes travaillent sur d'autres projets, comme la conception et le developpement de nouveaux utilitaires ou encore le developpement des librairies partagees utilisees pour programmer. Chaque equipe travaille selon une structure hierarchique informelle : une personne est responsable d'un projet et plusieurs autres programmeurs participent au developpement en contribuant du code. L'exemple typique de cette methode de developpement est le noyau lui- meme : Linus Torvalds maintient le noyau et c'est lui qui effectue les distributions source quand il estime que le code est utilisable ; chaque partie importante du noyau (comme la gestion du reseau, les gestionnaires de peripheriques, le systeme de fichiers, ...) est sous la responsabilite d'un developpeur qui centralise le travail d'autres programmeurs et les transmet a Linus Torvalds pour inclusion dans le noyau officiel. Bien que cette methode de developpement puisse surprendre au premier abord, elle est tres efficace. La totalite du noyau de Linux a ete ecrite par des volontaires, qui ont souvent passe des nuits entieres a programmer et a corriger des bogues. Le code developpe dans le cadre de Linux est le plus souvent diffuse sous forme de programme source, sous la licence GNU ("_G_e_n_e_r_a_l _P_u_b_l_i_c _L_i_c_e_n_s_e", ou GPL). La GPL stipule que les programmes source sont la propriete de leurs auteurs et qu'ils doivent etre distribues sous forme de source. Cette licence autorise quiconque a revendre ces programmes mais elle impose que tout utilisateur puisse avoir acces aux programmes source. De plus, la GPL impose que toute modification de ces programmes est couverte par la meme licence, et donc que les programmes seront toujours librement disponibles. 33.. FFoonnccttiioonnnnaalliitteess ddee LLiinnuuxx 33..11.. LLee nnooyyaauu Linux offre toutes les fonctionnalites d'un clone Unix sur micro- ordinateurs PC-386. Il fournit un environnement de travail multi- utilisateurs, plusieurs personnes peuvent utiliser la machine au meme moment, et multi-taches, chaque utilisateur peut executer plusieurs programmes en parallele. Le systeme fonctionne en mode protege, execute du code 32 bits, contrairement a d'autres systemes qui s'executent en mode 16 bits et sont donc moins performants..., et utilise les mecanismes de protection du processeur pour garantir qu'aucun processus ne peut perturber l'execution des autres ou du systeme lui-meme. Le noyau implemente les semantiques Unix : processus concurrents, chargement a la demande des programmes executables avec partage de pages et copie en ecriture, pagination, systemes de fichiers, support des protocoles reseau TCP/IP. Il supporte, de plus, la majorite des peripheriques existant dans le monde PC (y compris les cartes sonores) et permet de relire les partitions MS/DOS, OS/2 et tous les formats standards de CD/ROM. 33..22.. AApppplliiccaattiioonnss Les librairies de developpement dans Linux sont basees sur les librairies GNU, de la "_F_r_e_e _S_o_f_t_w_a_r_e _F_u_n_d_a_t_i_o_n". Ces libraries offrent un haut degre de comptabilite avec les differents "standards" Unix (Posix, BSD, System V), ce qui permet de compiler facilement tout type d'application disponible au niveau source pour Unix. Ces librairies existent sous forme de bibliotheques partagees, ce qui signifie que le code des fonctions de librairie n'est charge qu'une seule fois en memoire et que les programmes executables sont plus petits en taille sur les disques. La plupart des utilitaires standards Unix sont disponibles sous Linux, aussi bien les commandes de base que des applications plus evoluees, comme les compilateurs et editeurs de texte. La plupart des ces utilitaires sont des programmes GNU, qui supportent des extensions qu'on ne retrouve pas dans les versions BSD ou System V de ces programmes, mais qui restent compatibles avec ces dernieres. Certains programmes, notamment les utilitaires reseau, sont des programmes BSD. En resume, pratiquement tout programme Unix diffuse sous forme de source peut etre compile sous Linux et s'execute parfaitement, grace a la compatibilite implementee dans le noyau et dans les librairies. En plus des programmes standards, Linux supporte de "grosses" applications. On retrouve l'interface graphique X Window (XFree86 3 base sur X11R6), un environnement de developpement tres complet comprenant toutes les bibliotheques standard, compilateurs et debogueurs disponibles sous Unix (C, C++, Objective-C, Smalltalk, Fortran, Pascal, Lisp, Scheme, Ada, gdb, de texte, comme nroff, TeX, et LaTeX. 33..33.. CCoommppaattiibbiilliittee aavveecc dd''aauuttrreess ssyysstteemmeess Linux n'est pas compatible directement avec les applications developpees pour d'autres systemes d'exploitation. Afin de permettre aux utilisateurs de Linux de beneficier des applications qu'ils possedent deja, que ce soit sous MS/DOS, Windows ou des systemes Unix commerciaux, des emulateurs sont en cours de developpement et permettent deja d'executer des applications "etrangeres". L'emulateur MS/DOS utilise le mode virtuel 8086 du processeur i386 pour executer des applications DOS. Il implemente les fonctionnalites de MS/DOS dans un processus et assure ainsi l'interfacage entre l'application et le systeme en emulant les appels systeme effectues par le programme. A ce jour, de nombreuses applications fonctionnent correctement sous l'emulateur MS/DOS et la liste s'allonge tous les jours. L'emulateur WINE est assez similaire a WABI, developpe par Sun Microsystems : il permet d'executer des applications Windows en convertissant leurs appeles graphiques en requetes adressees a l'environnement X Window. A ce jour, seul un petit nombre d'applications Windows fonctionne correctement mais le developpement de WINE n'en est qu'a ses debuts et les progres semblent prometteurs. Le module de compatibilite iBCS2 permet d'executer des applications developpees pour des systemes Unix commerciaux sur micro-ordinateurs PC-386. Cet emulateur convertit les appels systeme se conformant au standard iBCS2 (qui definit le format des primitives systeme ainsi que celui de leurs arguments) en appels natifs traites par le noyau Linux. Il est ainsi possible d'executer de maniere transparente des programmes developpes pour d'autres systemes, comme SCO par exemple. Le but de ces differents emulateurs est de permettre d'utiliser des applications commerciales sous Linux. Il faut desormais signaler que certains editeurs de logiciels considerent maintenant Linux comme un marche potentiel pour leurs produits et envisagent de porter leurs applications sous Linux. De la sorte, il est probable qu'un certain nombre d'applications commerciales tourneront bientot en mode natif sous Linux, sans necessiter d'emulateur. L'exemple le plus frappant de cette tendance consiste en le portage du jeu DOOM qui fonctionne sous Linux dans l'environnement X Window. 44.. DDiissppoonniibbiilliittee ddee LLiinnuuxx Linux, et ses programmes associes, etant diffuses librement sous la licence GNU, ils sont disponibles au telechargement sur de nombreux serveurs FTP de part le monde. Les trois sites primaires de distribution sont les suivants : +o tsx-11.mit.edu, dans le repertoire /pub/linux ; +o ftp.funet.fi, dans le repertoire /pub/OS/Linux ; +o sunsite.unc.edu, dans le repertoire /pub/Linux. De nombreux serveurs FTP effectuent des miroirs reguliers de ces sites, permettant ainsi d'acceder rapidement aux memes donnees en raison de la proximite geographique. En France, on peut citer les serveurs suivants : +o ftp.lip6.fr, dans le repertoire /pub/linux ; +o ftp.fdn.org, dans le repertoire /pub/Linux ; +o ftp.loria.fr, dans le repertoire /pub/linux ; +o ftp.univ-angers.fr, dans le repertoire /pub/Linux. De nombreuses distributions binaires du systeme sont egalement disponibles pour un prix raisonnable sous forme de CD/ROM. Ceci permet aux personnes interessees d'installer un systeme Linux, meme si elles n'ont pas acces au reseau Internet. Il est a noter que ces CD/ROM ne sont pas toujours a jour, vu l'evolution rapide de Linux, mais ils sont generalement edites periodiquement afin d'incorporer les dernieres versions disponibles. 55.. SSoouurrcceess dd''iinnffoorrmmaattiioonnss ssuurr LLiinnuuxx Linux fait l'objet de plusieurs forums de discussion Usenet, aussi bien en langue anglaise (_c_o_m_p_._o_s_._l_i_n_u_x_._a_d_v_o_c_a_c_y_, _c_o_m_p_._o_s_._l_i_n_u_x_._a_n_n_o_u_n_c_e_, _c_o_m_p_._o_s_._l_i_n_u_x_._a_n_s_w_e_r_s_, _c_o_m_p_._o_s_._l_i_n_u_x_._d_e_v_e_l_o_p_m_e_n_t_._a_p_p_s_, _c_o_m_p_._o_s_._l_i_n_u_x_._d_e_v_e_l_o_p_m_e_n_t_._s_y_s_t_e_m_, _c_o_m_p_._o_s_._l_i_n_u_x_._h_a_r_d_w_a_r_e_, _c_o_m_p_._o_s_._l_i_n_u_x_._n_e_t_w_o_r_k_i_n_g_, _c_o_m_p_._o_s_._l_i_n_u_x_._m_i_s_c_, _c_o_m_p_._o_s_._l_i_n_u_x_._s_e_t_u_p_, _c_o_m_p_._o_s_._l_i_n_u_x_._x) qu'en francais (_f_r_._c_o_m_p_._o_s_._l_i_n_u_x). De nombreuses documentations sont desormais egalement accessibles. Les "HOWTO" decrivent, brievement mais clairement, l'installation et l'utilisation d'une partie du systeme. De plus, un groupe de documentation, le "_L_i_n_u_x _D_o_c_u_m_e_n_t_a_t_i_o_n _P_r_o_j_e_c_t", publie des guides complets qui sont diffuses librement. Le serveur FTP ftp.lip6.fr offre ces documentations dans le repertoire /pub/linux/docs ainsi que leurs traductions francaises dans le repertoire /pub/linux/french. Enfin, il faut signaler que certains editeurs commencent a publier des livres complets sur Linux. Les premiers livres publies sur Linux etaient rediges en allemand mais il existe maintenant des livres en anglais sur Linux, certains de ces livres etant traduits en francais. 66.. EEvvoolluuttiioonn ffuuttuurree ddee LLiinnuuxx La version actuelle du noyau de Linux est 1.2. Bien que Linux soit deja tres complet et competitif avec des systemes d'exploitation commerciaux, le developpement du systeme continue. Des portages du noyau sont en cours afin de realiser des versions s'executant sur stations de travail Sparc et PC Alpha, en plus des versions actuelles fonctionnant sur micro-ordinateurs PC-386, Amiga et Atari. De nouvelles fonctionnalites sont egalement a l'etude et devraient etre disponibles prochainement. Le noyau n'est pas la seule partie du systeme a evoluer. Des equipes de developpement travaillent pour etendre les fonctionnalites des utilitaires et des librairies. On peut citer, notamment, l'utilisation imminente du format de fichier executable ELF qui permettra la creation de librairies dynamiques et une compatibilite plus grande avec les versions d'Unix commerciaux s'executant sur PC-386. 77.. CCee ddooccuummeenntt Ce document est un article d'introduction, base sur la feuille d'informations Linux. Il a ete ecrit par Remy Card, Rene Cougnenc, et Julien Simon. Il est, bien entendu, mis dans le domaine public. Toutefois, soyez assez courtois pour ne pas vous en approprier la propriete si vous le diffusez...