Documentaire.-.Nom.De.Code.Linux.-.(alte
Vidéo envoyée par scalp85

Pour une fois (sans doute pas la dernière, puisque je suis en plein dedans...), je vais parler d'autres choses que de cinéma ou de littérature. Je vais parler de LINUX. J'aurais probablement l'occasion, par la suite, de parler d'autres systèmes d'exploitations, Serveur ou non.

Je commence cet article par la diffusion d'un reportage de 52 minutes, environ, diffusé sur Arte. Je vous le conseille, il est rééllement passionnant (mais faut être patient, vu sa durée il mettra pas mal de temps à se charger) et présente remarquablement bien les tenants, les enjeux et les aboutissements de l'OS Linux.

«Hello everybody out there using minix - I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.» (Linus Torvald - Date "historique". Sur le forum Usenet comp.os.minix, le 5 octobre 1991)

Linux est un OS (Opérating System - autrement dit, un système d'exploitation) écrit en partie en "C". Il peut même, suivant les cas, être qualifié de NOS (Network Opérating System... Un système d'exploitation orienté réseaux - un serveur, en clair). Son logo (et sa mascotte) est "Tux", un manchot (et non pas un pingouin, comme je l'ai souvent entendu). Créé en 1991, à la suite du projet GNU (acronyme récursif signifiant Gnu's Not Unix - "GNU" n'est pas Unix) lancé par Richard Stallman au début des années 80, il prend une part de plus en plus importante sur le marché des serveurs, en concurrençant le géant aux petits pieds Microsoft (Pour en savoir plus sur GNU, je vous invite vivement à cliquer sur le lien Wiki: http://fr.wikipedia.org/wiki/GNU). Doté d'une réputation de stabilité (mais pas toujours de "propreté", contrairement aux OS d'une autre famille de descendants d'Unix que sont les distributions BSD), Linux présente l'avantage d'avoir son code source "ouvert" (open source), ce qui ne veut pas dire systématiquement "gratuit"... même si nombre des distributions Linux le sont effectivement. En revanche, cela signifie que son code source est publié sur le Web, téléchargeable et modifiable.

En effet, lorsque le Finlandais linus Torvald a choisi de créer son OS, à partir de "Minix" (un OS léger, clone d'Unix, basé sur un micronoyau), il avait pour objectif de monter un outil créé collectivement, téléchargeable gratuitement sur internet, évolutif et communautaire. Un OS qui devait pouvoir progresser en permanence, grâce à l'aide de programmeurs dispersés dans le monde entier... et, au départ, qui devait non pas concurrencer avec la philosophie du code fermé, mais permettre à tous, même au plus pauvre des étudiants, d'utiliser un OS sur son ordinateur. Mais très vite, il est entré dans la philosophie du projet GNU, il est devenu le symbole du logiciel libre face au capitalisme du système dit "fermé" (je reprends là les termes de la définition que l'on donne généralement, grossièrement, de GNU).

Linux se définit de deux manières. Tout d'abord, il s'agit d'un OS libre, multitâche (exécute plusieurs tâches simultanées), multi-plateforme (liant l'ordinateur et le soft) et multi-utilisateur (plusieurs utilisateurs peuvent profiter simultanément des mêmes ressources sur le même OS) de type UNIX ("tout est fichiers"). Il se caractérise aussi par son interopérabilité. En réalité, nous devrions parler non pas de Linux, dans ce cas, mais de GNU/Linux, puisqu'au delà du noyau (nommé aussi "Kernel"), l'OS est équipé des utilitaires GNU (prononcer "Gnou"... oui, je sais: à vos souhaits!!) conçu par Richard Stallman (par ailleurs concepteur du célèbre compilateur GCC) dans le cadre de son projet, qu'il avait initié au MIT (Massachussetts Institut of Technology). GNU/Linux est l'appellation promue par la Free Software Foundation (FSF) pour rappeller que l'OS représente le résultat de la convergence de plusieurs projets, qui comprends aussi, par ailleurs, le système de fenêtrage X Window et quelques logiciels développé par les équipes disparates de BSD (j'en reparlerai ultérieurement, mais il s'agit d'une autre famille affiliée à UNIX: les "FreeBSD, NETBSD et OPENBSD").

Si l'on devait rééllement définir Linux, on devrait alors s'en tenir au nom du Noyau (le coeur du système, qui fournit une interface pour utiliser le matériel...). En clair, il s'agit là de la couche qui joint le matériel et l'OS. C'est une notion importante, en informatique. C'est aussi la base, du reste, du concept de virtualisation des OS (par exemple VMWARE) et des hyperviseurs (comme XEN), puisque ces derniers créent une couche supplémentaire entre le matériel et le(s) noyau(x) pour gérer simultanément un ou plusieurs système d'exploitations virtuels). Par extension, donc, Linux désigne la combinaison Kernel/utilitaires systèmes, mais techniquement, ça reste impropre (c'est à signaler car monsieur "Tong", aka Richard Stallman, le pauvre, se voit, bien involontairement, légèrement déposséder d'une pourtant bien juste notoriété. D'ailleurs, si ça continue - ou s'il n'est pas sage - on va tous en coeur le surnommer Digger Stèleman... Soyons sérieux... Stallman est un génie, si, si, c'est vrai. Stallman rule, tiens!).

Linux réponds au normes "POSIX", nom d'une famille de standards définies depuis 1988 par l'IEEE et formellement désignée IEEE 1003. POSIX est un accronyme imaginé par richard Stallman en réponse à la demande de l'IEEE d'un nom facilement mémorisable. Il signifie "Portable Operating System Inteface. Il désigne l'ensemble des standards API (Application Programming Interface ou "Interface de programmation : des interfaces permettant de définir la manière dont un composant informatique peut communiquer avec un autre. Le "X" exprime l'héritage UNIX de l'API) des logiciels destinés exclusivement à fonctionner sur des variantes du système UNIX.

POSIX spécifie dans près de 15 documents différents les interfaces utilisateurs et les interfaces logicielles. La ligne de commande standard et l'interface de script est le Korn shell (mais souvent, on trouve aussi le Bash). Les autres commandes, services et utilitaires comprennent awk, echo, ed, et des centaines d'autres. Les services d'entrées/sorties de base (fichiers, terminaux, réseau) doivent être présents (pour les spécifications POSIX sur les attributs de fichiers, voir Spécifications POSIX sur les attributs de fichiers).

Une suite de tests pour POSIX accompagne le standard. Il est appelé PCTS (POSIX Conformance Test Suite, Suite de tests pour la conformité POSIX).

Au nombreuses entités collaborent au développement de Linux : des particuliers, des organisations comme la Fondation pour le logiciel libre ainsi que des petites et grandes entreprises commerciales comme IBM (pour son OS AIX), Sun Microsystems (avec leur fameux Solaris), HP (avec HPux), Oracle (avec Mysql), etc.

Linux, est protégé par la Licence publique générale GNU, ou GNU GPL pour GNU General Public License en anglais. Il s'agit d'une licence qui fixe les conditions légales de distribution des logiciels libres du projet GNU. Richard Stallman et Eben Moglen, deux des grands acteurs de la Free Software Foundation, en furent les premiers rédacteurs. Sa dernière version est la GNU GPL version 2 de 1991 et une troisième version est en cours d'écriture.

Elle a depuis été adoptée, en tant que document définissant le mode d'utilisation, donc d'usage et de diffusion, par de nombreux auteurs de logiciels libres. La principale caractéristique de la GPL est le copyleft, qui consiste à « détourner » le principe du copyright (les droits d'auteurs) pour préserver la liberté d'utiliser, d'étudier, de modifier et de diffuser le logiciel et ses versions dérivées.

La GPL est la licence de logiciel libre la plus utilisée. Il est à noter qu'elle a une licence sœur, la GNU LGPL (GNU Lesser General Public License et plus anciennement GNU Library General Public License) qui en est une version modifiée pour être moins contraignante quant à son utilisation dans un contexte de cohabitation avec des logiciels propriétaires. Elle a une autre licence sœur, la GFDL (GNU Free Documentation License) qui elle est applicable aux manuels, livres ou autres documents écrits.

En pratique, Linux se présente comme un système d'exploitation relativement classique. Il permet l'installation de nombreux outils, logiciels et progiciels. Il est compatible avec à peu près tout matériel standard à condition de trouver les pilotes (drivers) correspondant. Cependant, il se distingue tout particulièrement avec son invitation de commande, qui descend tout droit de la philosophie UNIX. En effet, c'est grâce à cette "invitation de commande" ou "terminal" (plus communément appellé le "Shell") que tout est possible sous Linux.

On peut absolument tout gérer en lignes de commandes : connexions réseaux, internet, configuration du poste, création de scripts, de fichiers, programmation, gestion des services et des périphériques, sécurité... tout. Comme indiqué ci-dessus, le Shell réponds aux normes POSIX, ce qui inclut tout une famille de commandes. On parlera ici de "langage interprété" (à contrario du langage machine, des langages assembleurs ou des les langage compilés, comme le C, le C++, ou le cobol), et notamment du "Bash", du Csh, du Korn Shell et du C-Shell.

Bash, acronyme de Bourne-again shell, est l'interprète de commandes libre du projet GNU. Son nom est un jeu de mots (Bourne again / born again, « né de nouveau » ou encore « réincarné ») sur le shell historique d'Unix, le Bourne shell. Basé sur ce dernier, il apporte de nombreuses améliorations, provenant notamment du Korn shell et du C shell. Il faut savoir, soit dit en passant, que les systèmes Unix - à ma connaissance, y compris le SystemV qui a justement servi de base à la norme POSIX - n'ont pas d'interfaces graphiques. Il ne s'agit donc, visuellement, que d'une sorte de gros Shell.

E an pratik, à koi ca ressembl leterminalchelle ? me direz-vous? (en langage SMS, bande de bras cassés!)

(ou en bon français, pour ceux qui suivent:)

Et en pratique, à quoi ça ressemble, le terminal Shell?

A ceci:

Image:Bash screenshot.png

Pour vous donner une petite idée de la façon dont ça marche... à la quatrième ligne, vous remarquerez la commande "ls -al", ainsi que les multiples réponses de types "-rw-r--r-- Nom_du_fichier". La commande ls -al signifie, en substance, que l'utilisateur dstone (une simple déduction, puisque celui-ci se trouve dans le répertoire /home/dstone... Cf ligne 2. Monsieur, avec sa commande "pwd", nous a donc fait l'honneur de se présenter...) a demandé la liste (ls) complète (option -a) des fichiers du répertoire courant avec leurs droits utilisateurs (option -l)... "ls -al", donc. En pratique, tout à fait entre parenthèse, en général un simple ls -l suffit...

Le principe d'une commande - en dehors du cas particulier des scripts - est donc d'avoir une racine de commande (quelqu'un sait s'il y a un meilleur terme???), disons "ls", ici, ou "pwd", "cd", etc... suivi - si nécessaire - d'un ensemble d'options. Le tout s'exécute immédiatement, selon un programme "interpréte" qui va le traduire en instructions (d'où "langage interprété") lu ligne par ligne (ce qui différencie les langages interprétés des langages compilés) et nous offre le résultat comme sur un plateau de moules.

Bon... Après, faut savoir comprendre le résultat, c'est sûr... Et effectivement, à ce stade, et si on le souhaite, il faut s'investir dans l'outil.

Cela étant, pour un utilisateur moyen, une distribution peut-être largement utilisée sous une forme tout à fait classique, via son interface graphique (Gnome ou KDE), comme ceci :

Image:Gnome-2.18.png

C'est beaucoup moins effrayant, n'est ce pas? Et bien entendu, on peut gérer à peu près les mêmes choses qu'avec le Shell (plus ou moins efficacement, ceci dit). C'est d'autant moins effrayant, du reste, que depuis quelques années, d'autres projets d'interfaces graphiques orientées 3D ont fait leur apparitions. A commencer par le gestionnaire de fenêtres "Compiz", qui fonctionne autant avec KDE qu'avec Gnome. On peut avoir un petit aperçu des capacités de "Compiz" lorsqu'il tourne sur un server graphique XGL :

Image:Xgl videoonedge.png

Et c'est beaucoup mieux dans la réalité... (spécialement avec les effets de "floating" et de transparence). Toujours est-il que Linux n'a pas attendu l'Aéro de Microsoft pour intégrer la 3D dans ses bureaux. Linux et MacOS X l'ont fait bien avant. Bien sûr, ce type d'effet est inutile (ou doit l'être) si votre distribution est orientée serveur. Dans ce cas, d'ailleurs, il est souvent impossible d'intégrer Compiz à votre distribution (comme c'est le cas sur SuSE 10 Enterprise Server, comme j'ai pu moi-même le constater). Mais sur une distribution cliente classique, vous n'aurez aucun mal à installer Compiz (sauf si la configuration de votre matériel vous l'interdit, naturellement). Cela étant, le Gnome et le KDE classique fonctionnent très bien, eux aussi...

Je soulignerai, pour finir, que nombreux groupes s'efforcent de promouvoir les distributions Linux. On parle alors de "communautés Linux" (il est à noter aussi, au passage, que Microsoft cherche assez bizarrement à diffuser le concept de "communauté Windows" pour en quelque sorte concurrencer Linux sur le terrain de la convivialité informatique - ce qui, à mon propre sens, est non seulement ridicule, est un non sens, mais en plus ne veut rien dire).

Les prochains sujets Linux que je traiterai...

-Les distributions

-OpenOffice

- le Shell et les langages interprétés (présentation un peu plus approfondie du sujet).