Archives par mot-clé : Linux

La petite histoire de Linux (en dessins)

Aujourd’hui, je vais vous raconter des anedoctes sympas sur la naissance de Linux

 

Première chose à retenir sur Linux parce qu’il y a pas mal de confusion :

  • Linux est un noyau, c’est pour ça qu’on parle d’ailleurs de “Linux kernel”. Kernel veut dire noyau en francais.
  • Et en gros, c’est ça qui permet de démarrer, de faire la liaison entre le matériel et le système de la machine, ainsi que de faire la liaison entre les applications installées sur la machine.

Le hic c’est qu’on ne peut pas utiliser ce noyau seul. Il faut un environnement (des logiciels autour du noyau afin que tout marche bien : des pilotes,, de quoi gérer la machine, etc). 

C’est là où la notion de distribution apparaît :

  • On parle de distribution GNU/Linux quand il s’agit d’une solution prête à être intallée par l’utilisateur final sur sa machine. 
  • Cette distribution GNU Linux  comprend un noyau Linux ainsi que des logiciels sous Licence GNU, en gros on va dire que ce sont des logiciels libres qui complètent le noyau pour avoir un système d’exploitation complet.
  • Il est à noter qu’on peut aussi très bien trouver des distributions qui ne contiennent pas seulement les logiciels GNU, il y a parfois d’autre logiciels non GNU.

Bref, c’est ce noyau Linux + des logiciels complémentaires qui vont permettre d’avoir un OS complet.

Voici des exemples de systèmes d’exploitation “Linux » :

  • Red Hat Enterprise Linux
  • Fedora Linux
  • Debian Linux
  • Ubuntu Linux

Ensuite il y a aussi souvent une autre confusion entre Linux et UNIX. Alors quelle différence?

  • Déjà pour l’anecdote sachez que le système d’exploitation “Linux” a été créé dans le but de fournir un équivalent libre au système Unix.
  • Linux est un clone d’UNIX en version libre et écrit à partir de zéro par Linus Torvalds, le createur du noyau Linux donc,  avec l’aide d’une équipe d’informaticiens.
  • Par contre UNIX regroupe un ensemble de systèmes d’exploitation différents. Ce ne sont donc pas juste des noyaux mais bien des OS complets
  • Comme exemples de système Unix connus, on a HP-UX, IBM AIX, Solaris Sun

Maintenant on va un peu s’intéresser au père de Linux : 

En 1991, l’étudiant finlandais Linus Torvalds qui a alors 22 ans, commence le développement d’un noyau de système d’exploitation alternatif à MINIX, qui est un clone d’UNIX utilisé à des fins pédagogiques pour des étudiants. Linux va au final créer avec son nouveau noyau une alternative à UNIX.

Après quelques mois, Il diffusa le code de son travail via un compte FTP de l’Université d’Helsinki. Et pour la petite anecdote le dossier contenant ces travaux a été nommé « Linux » par un administrateur du serveur FTP.  Linux pour « Linus UNIX » ou en français l’UNIX de Linus. Et par la suite, ce nom restera.

Linus publie par la suite ses travaux sur Internet en demandant à d’’autres développeurs de l’aider pour le finaliser. Aujourd’hui Linus continue de diriger le développement du noyau Linux

 

Concernant la mascotte officielle de Linux, il s’agit d’un manchot du nom de TUX. TUX étant un acronyme composé des mots Torvalds et UNIX.  A noter que beaucoup pensent à tort que la mascotte de Linux est un pingouin, notamment parce qu’en anglais, le mot « manchot » se dit « penguin », mais TUX est bien un manchot  

La différence ?

Le pingouin est un oiseau de l’hémisphère nord qui peut voler, alors que le manchot est un oiseau qui ne vit que dans l’hémisphère sud et qui est incapable de voler En gros hein!

 

Aujourd’hui, bien que peu présent sur les postes de travail, Linux est beaucoup plus présent dans le monde des serveurs

Le noyau Linux équipe aussi la plupart des systèmes embarqués (box, robots, aérospatial, drones…). mais aussi les supercalculateurs

Et pour terminer, comme vous le savez sûrement déjà, Linux domine le marché des smartphones via l’OS Android qui s’appuie sur un noyau Linux

 

Le système d’exploitation pour les nuls

Dans ce post, je vais vous parler de l’OS (pour Operating System en anglais) ou système d’exploitation en français.

Qu’est ce qu’un OS? A quoi sert-il?

Le système d’exploitation est présent dans divers appareil électronique :

  • Sur les ordinateurs avec Windows et Mac OS
  • Le marché des serveurs avec Windows Serveur et Linux
  • Tout comme un smartphone ou une tablette avec iOS et Android

On voit tous ce qu’est un OS mais est ce que vous savez vraiment à quoi il sert?

 

Première chose à savoir c’est que l’OS est le 1er programme exécuté lors du démarrage d’une machine. Parce qu’un ordinateur ne fait qu’éxécuter des ordres (instructions). Et c’est l’OS qui va le guider dans le démarrage , quels sont les première actions à réaliser, ce qu’il faut afficher. Et c’est après ce démarrage que l’OS vous donne la main pour que vous puissiez vous servir de l’ordinateur.

Au delà du démarrage, le rôle de l’OS est d’assurer le lien entre les ressources matérielles de la machine et les logiciels applicatifs qui tournent dessus.

Pour illustrer tout ça, on va dire que L’OS est un guichet. En effet, l’OS reçoit des demandes des application pour l’utilisation des ressources de la machin. Et parmi les ressources de la machines, on aura par exemple ressources de stockage, de mémoires, des disques durs ou alors des ressources de calcul du processeur.

Le système d’exploitation accepte ou refuse ces demandes, puis réserve les ressources pour éviter que leur utilisation n’interfère avec d’autres demandes des autres applications.

Et en ce sens l’OS est responsable de la bonne exécution des applications via l’affectation des es ressources nécessaire au bon fonctionnement. Les utilisateurs interagissent donc avec les applications qui elles communiquent avec l’OS.

Néanmoins il est possible aussi pour Les utilisateurs de demander directement des services au système d’exploitation par une interface graphique, des lignes de commandes, des interfaces de programmation.

Maintenant nous allons voir les composants les plus important dans un OS et leur rôle :

  • Le kernel (ou noyau en francais) est un espace mémoire isolé repregoupant les fonctions clé de l’OS comme la gestion de la mémoire, des processus ou des entrées-sorties principales.
  • L’interpréteur de commande (en anglais shell) permettant la communication avec le système d’exploitation par l’intermédiaire d’un langage de commandes.
  • Le «File System» ou système de fichiers (en français), permet d’enregistrer les fichiers dans une arborescence. mais aussi de gèrer et autoriser la lecture et l’écriture des fichiers. Il offre également des mécanismes de protection permettant de contrôler quel utilisateur ou programme peut manipuler quel fichier.
  • Pilotes (ou drivers en anglais) qui sont des gestionnaires de périphériques) assure les entrées / sorties avec les périphériques comme les imprimantes, webcam, clé USB, souris etc. Chaque périphérique a ses propres instructions, avec lesquelles il peut être manipulé. Et evidemment Le système d’exploitation en tient compte.

Docker : comprendre l’essentiel en 7 minutes

Dans cette vidéo, je vais vous parler de Docker!

  • Qu’est ce que Docker ?
  • Comment ça marche?
  • Et pourquoi est ce que l’on en parle autant?

 

C’est quoi la virtualisation par conteneurs ?

Avant de parler de Docker, il faut d’abord comprendre ce qu’est un conteneur

La virtualisation par conteneurs se base sur la virtualisation Linux LXC, pour Linux Containers. Il s’agit d’une méthode de cloisonnement au niveau de l’OS. Le principe est de faire tourner des environnements Linux isolés les uns des autres dans des conteneurs partageant le même noyau.

Ce qui veut dire que contrairement aux machines virtuelles traditionnelles, un conteneur n’inclut pas d’OS, puisqu’il s’appuie sur les fonctionnalités de l’OS de la machine hôte. Les conteneurs accèdent alors à l’OS hôte de manière totalement isolée les uns des autres.

Le conteneur virtualise l’environnement d’exécution (comme le processeur, la mémoire vive ou le système de fichier…) et ne virtualise donc pas la machine. C’est pour cela que l’on parle de « conteneur » et non de machine virtuelle (VM).

Fonctionnalités Linux pour LXC

LXC repose principalement sur 2 fonctionnalités du noyau Linux :

  • La première est la fonctionnalité des cgroups (pour control groups). C’est ce qui permet de limiter et d’isoler l’utilisation des ressources
  • Ensuite, la fonctionnalités de cloisonnement des espaces de nommage (ou namespace en anglais), permet d’empêcher qu’un group puisse « voir » les ressources des autres groupes.

La virtualisation par conteneur est aussi caractérisée par la couche intermédiaire du contrôleur qui gère un ensemble de fonctionnalités pour les conteneurs :

  • En premier lieu il y a évidemment l’interaction des conteneurs avec l’OS.
  • La sécurité par la gestion de privilèges et de ressources
  • La scalabilité : c’est à dire la duplication et la suppression de conteneurs
  • L’accessibilité des conteneurs à travers la gestion des API et CLI
  • La portabilité :c’est à dire la migration (à froid ou à chaud) de conteneurs

Différence entre un conteneur et un VM classique

  • Une machine virtuelle ou VM recrée intégralement un serveur. contenant donc un OS complet, avec ses pilotes, ses fichiers binaires ou bibliothèques, ainsi que l’application elle-même.
  • Comme le conteneur n’’embarque pas d’OS, il est donc beaucoup plus léger que la VM.  Le conteneur est donc plus facile à migrer ou à télécharger, et plus rapide à sauvegarder ou à restaurer.
  • La virtualisation par conteneur permet au serveur d’héberger potentiellement beaucoup plus de conteneurs que s’il s’agissait de machines virtuelles.

Et c’est quoi alors Docker?

Docker était initialement basé sur le LXC de Linux.

Docker est passé à Libcontainer après la v.1.8 (bye bye LXC!).
Rassurez-vous le principe est le même. L’intérêt est que Docker peut maintenant supporter plus de technologies d’isolation

Docker permet de créer des conteneurs qui vont uniquement contenir des applications avec leurs dépendances. Les conteneurs Docker permettent d’embarquer des applications afin de les exécuter au sein de l’ OS hôte mais de manière virtuellement isolée.

Le Docker engine fait tourner les conteneurs et joue le rôle de contrôleur.

En termes d’architecture,

  • Docker fonctionne sur une architecture client serveur.
  • Le client Docker communique avec le Docker daemon qui fait tourner le docker engine, pour construire et gérer les conteneurs Docker.
  • Le client Docket et le daemon Docker peuvent tourner sur la même machine, comme sur des machines différentes.

Maintenant passons à un autre concept important de Docker : il s’agit des images Docker

Une image Docker est un template prêt à l’emploi avec des instructions pour la création de conteneur. L’environnement d’exécution d’un conteneur peut nécessiter l’empilement de plusieurs images

Par exemple :

  • On trouve à la base les composants nécessaires à Docker, et qui sont fournis par le noyau Linux de l’hôte.
  • Ensuite, on va prendre l’exemple de 2 containers avec deux images différentes : un avec Debian et un avec uBuntu.
  • Il est possible d’ajouter d’autres images, par par exemple sur le premier conteneur, on ajoute une image d’editeur de texte emacs et une image de serveur web Nginx.

A noter qu’une image ne peut pas être modifiée directement, elle reste toujours en lecture seule. C’est pour cela qu’on trouve une dernière couche, qui est la partie du conteneur accessible en écriture, qui contiendra toutes les modifications apportées à l’application.

Une image Peut être construit à partir d’un Dockerfile ou bien d’une image existante ou être récupéré sur un Registre Docker. Ces registre sont accessible depuis le docker Hub, un dépôt public d’images

 

Workflow de création d’un conteneur Docker

Lorsque je souhaite crée un container. J’ai la possibilité d’utiliser une image existante que je reprend du registre docker (public ou privé).

A noter que je peux aussi créer l’image via le Docker File. Les Dockerfiles sont des fichiers qui permettent de construire une image Docker étape par étape et ceci de facon automatisé

le Docker engine exécute ensuite cette image pour créer un container. Une fois que j’ai ce nouveau conteneur, je peux décider d’en faire une nouvelle image que je fais restocker dans un registre,

 

Pourquoi est ce que l’on en parle autant?

La principale raison est que  Docker permet de faciliter et  d’accélérer les déploiements. En effet, comme toutes les dépendances sont dans le conteneur, le conteneur est autosuffisant. Les conteneurs Docker fournissent le moyen de transporter de manière fluide les applications de l’environnement de développement jusqu’à l’infrastructure de production.

Les admin system n’ont alors plus qu’à “installer le conteneur” sur leurs serveurs Linux. Ce qui permet aux admin system de moins s’arracher la tête sur la gestion de telle ou telle version de librairies, de logiciels, etc.

En ce sens il rapprochent les équipes de dev et de production. C’est pour cela qu’on associe souvent Docker au Devops.