Introduction
Architecture d’un système UNIX
Les systèmes UNIX, en particulier les systèmes sous Linux, sont particulièrement modulaires. Différentes couches sont définies, chacune interagissant avec les autres de certaines manières.
Au plus bas se trouve le noyau (dans notre cas, il s’agit de Linux). C’est lui qui gère les interactions entre les différents logiciels (quels qu’ils soient) et le matériel. Par-dessus se situent les bibliothèques (par exemple les bibliothèques du projet GNU - acronyme de GNU is Not UNIX, un projet définissant un système de type UNIX entièrement libre) : ce sont des bouts de code exécutable qui permettent de simplifier l’interaction entre les logiciels et le noyau. Ce sont notamment elles qui permettent d’utiliser le langage de notre choix lorsque l’on développe un logiciel, les bibliothèques traduisant les instructions du langage dans des appels système exécutés par le noyau. Au-dessus de cela, on retrouve tous les logiciels qui composent le système d’exploitation. Parmi ces logiciels on trouve bien sûr nos applications habituelles (le navigateur web, le logiciel de traitement de texte, le gestionnaire de fichiers, le lecteur de musique, etc.), mais également des choses un peu moins évidentes comme l’environnement graphique...
Le principe KISS
Cette approche relativement globale (on peut tout faire à partir d’un shell) est due à un principe utilisé et appliqué dans de nombreux domaines, dont l’informatique. Ce principe, appelé KISS pour Keep It Simple, Stupid, peut également être décrit en français par l’expression « pourquoi faire compliqué quand on peut faire simple ? » On le retrouve également chez Antoine de Saint-Exupéry, qui écrit dans Terre des hommes « Il semble que la perfection soit atteinte non quand il n’y a plus rien à ajouter, mais quand il n’y a plus rien à retrancher », c’est un concept très proche du rasoir d’Ockham : « Les multiples ne doivent pas être utilisés sans nécessité ».
Dans le cadre d’un système UNIX comme Linux, cette approche est matérialisée par l’existence d’un grand nombre de commandes et de logiciels, chacun ayant un but précis. C’est en associant ces nombreuses commandes les unes avec les autres que l’on réussira à créer des tâches complètes.
Imaginons que l’on ait besoin d’archiver tous les fichiers qui n’ont pas été utilisés depuis plus d’un an, ceci une fois par jour....
Mise en œuvre de ces apprentissages
Peut-être avez-vous déjà accès à un serveur (ou au moins à un poste de travail) sous Linux. Dans ce cas, vous pouvez vous en servir pour vous entraîner. Mais attention à ne pas casser un service qui serait en fonctionnement !
Pour ne rien casser ou simplement si vous n’avez pas une machine fonctionnant sous Linux sous la main, vous avez plusieurs solutions. Tout d’abord, vous pouvez installer une distribution Linux (par exemple Ubuntu Server) sur une machine virtuelle : sans allumer de matériel complémentaire, vous aurez sur la même machine deux systèmes fonctionnant en parallèle.
Une autre possibilité est de louer un serveur chez un hébergeur : soit un serveur dédié (une machine qui est démarrée rien que pour vous), soit un serveur virtuel (VPS, pour Virtual Private Server), à travers lequel vous partagerez un même matériel avec d’autres utilisateurs, chacun ayant son propre système d’exploitation, son propre environnement. Vous pourrez alors accéder à ce serveur où que vous soyez, une connexion à Internet suffit.
L’objectif de ce livre n’est pas d’approfondir ces méthodes : si l’une d’entre elles vous intéresse, n’hésitez pas à vous tourner d’abord...