1 - Introduction à Linux

Introduction à Linux

  1. Il existe une très grande variété de systèmes *nix (Unix ou Linux), on les nomme distributions.

  2. Une distribution est un noyau (kernel) ET un ensemble de logiciels.

  3. Le point commun est le noyau (Linux, BSD, ou autre Unix).

  4. Les différences peuvent être:

  • La convivialité (facilité d’utilisation)

  • L’intégration (quantité de logiciels compatibles disponibles)

  • La notoriété (communauté disponible pour résoudre les problèmes)

  • L’interface graphique (Gnome, KDE)

  • Le type de paquet d’installation (rpm, deb, …)

  • L’éditeur (entreprise ou communauté)

Exemples de distributions généralistes:

Debian Debian

Ubuntu (facile pour les débutants) Ubuntu

Redhat/Fedora Redhat Fedora

Centos Centos

Mandriva Mandriva

Suse Suse

Gentoo Gentoo

Slakware Slackware

Exemples de distributions spécialisées

Certaines distributions ont des rôles spécifiques:

PFSense : cette distribution est un pare-feu PFSense

CloudRouter : permet de faire du routage CloudRouter

Android : téléphones, tablettes Android

Proportion de postes *NIX chez les développeurs

OSbars OSpie

Avantages Inconvénients
Très souvent le même environnement que la machine de production (surtout pour la portion serveur d’une application)
Très facile d’installer des nouveaux outils de développement:
  • $ dnf install nodejs
  • $ dnf install nodejs
Une bonne console (ligne de commande) est souvent un bon dépanneur pour un développeur (p.ex. les messages d’erreur sont souvent plus explicites à la ligne de commande que dans l’IDE) Accès très limité aux outils Microsoft: pas de Visual Studio, seulement VS Code et un support minimal pour C#
Plus facile d’automatiser des tâches de compilation et de tests
Systèmes plus léger qui laisse la place aux outils de développement (p.ex mon Linux prend moins de 1Go de mémoire, alors le reste est pour les outils, VM, etc.). Dans le cours Android p.ex. , l’environnement de développement prend 15Go de mémoire (pour l’IDE + deux émulateurs de téléphone).

Proportion de postes *NIX parmi les serveurs

  • Selon les études et la façon de calculer, les chiffres peuvent varier mais tous donnent un grande majorité de serveur Linux.

  • Les chiffres varient entre 65% de Linux pour les études les plus conservatrices à plus de 90% si on regarde le cloud.

  • Finalement, les 500 plus gros superordinateurs au monde utilisent Linux.

Qu’est-ce qu’un système d’exploitation

Un système d’exploitation est un programme installé sur un ordinateur et qui agit un peu comme un chef d’orchestre.

Le système d’exploitation permet les interactions entre l’homme, les logiciels et la machine.

Un logiciel n’a pas besoin de connaître toutes les spécificités du matériel pour y accéder. Il envoie ses commandes (appels systèmes) au SE qui interagit avec la matériel via les pilotes.

Il fournit aussi l’interface à l’homme qui n’a pas non plus besoin de connaître la complexité de la machine.

Le système d’exploitation a aussi comme responsabilité la gestion des ressources :

  • processeur (CPU);
  • mémoire vive (Random Access Memory ou RAM);
  • carte graphique;
  • espace de stockage;
  • etc.

En bref,

  • L’ordinateur est démarré.
  • Le système d’exploitation se charge et présente une interface (CLI – Command Line Interface ou GUI – Graphic User Interface).
  • On peut alors utiliser ses programmes et ses applications de tout genre à l’aide de périphériques d’entrée (input) tels qu’un clavier, une souris et
  • de périphériques de sortie (output) tels que l’écran, une imprimante, etc.

Historique de Linux

Historique

Jusqu’en 1976 Bell AT&T développe les différentes versions de MULTICS, UNICS et UNIX.

À partir de 1977, 2 branches se séparent:

Bell AT&T continue avec System V

BSD (Berkley Software Distribution)

System V donnera HP-UX, AIX et d’autres.

BSD donnera OpenBSD, FreeBSD, NetBSD et Mac OS.

Solaris de Sun Microsystem est un hybride de System V et BSD.

Historique2

GNU

GNU (GNU’s Not Unix)

Le 27 septembre 1983, Richard Stallman (Auteur de la célèbre autorisation Copyleft) dévoile son projet de développer un système d’exploitation compatible Unix appelé GNU mais qui serait libre. Il y a une anecdote qui serait à l’origine de son intention. On peut la découvrir dans le paragraphe 4 de la section biographie de sa page Wiképédia

https://fr.wikipedia.org/wiki/Richard_Stallman

Ce projet a donné naissance à la licence GNU GPL (GNU General Public Licence) pour les logiciels :

  • La liberté d’exécuter le logiciel, pour n’importe quel usage ;

  • La liberté d’étudier le fonctionnement d’un programme et de l’adapter à ses besoins, ce qui passe par l’accès aux codes sources ;

  • La liberté de redistribuer des copies ;

  • L’obligation de faire bénéficier à la communauté des versions modifiées.

Linux

En 1991, aussi, Linus Torvalds un étudiant finlandais annonce la création d’un nouveau noyau de système d’exploitation et en février 1992, la version 0.12 est diffusée sous la Licence publique générale GNU (GNU GPL). C’est la fusion des projets GNU et Linux (GNU/Linux). Un système d’exploitation libre, apportant avec lui les quatres libertés déjà expliquées :

  • Exécuter le programme, pour tous les usages ;

  • Étudier le fonctionnement du programme et de l’adapter à ses besoins ;

  • Redistribuer des copies du programme ;

  • Améliorer le programme et de distribuer ces améliorations au public, pour en faire profiter toute la communauté

Ces libertés sont définies par la Licence publique générale GNU (GPL).

Le système d’exploitation Linux devrait en toute rigueur se nommer GNU/Linux puisqu’il est composé du noyau Linux et des applications sous licence GNU/GPL.

Linux est très modulaire contrairement à Windows.

Le code de Linux est exécuté dans un objet unique en mémoire de l’ordinateur. C’est ce qu’on appelle le noyau. Le noyau Linux est la base, le cœur d’un système Linux. Le noyau contient toutes les fonctions rendues par le système d’exploitation, comme la gestion de la mémoire, du processeur, des périphériques de stockage, de l’interface réseau, etc. Ces fonctions s’appellent des modules (blocs de code).

Cette organisation présente un avantage très important. Il est possible d’ajouter et/ou supprimer des modules dans un noyau Linux en cours d’exécution, sans avoir à l’arrêter ou à le redémarrer.

Avec Linux, le noyau peut être modifié.

Il est possible d’avoir plusieurs noyaux simultanés.

Le GUI peut aussi être changé (KDE, Gnome, …).

WSL : Windows Subsystem for Linux

WSL permet d’exécuter des commandes Linux dans Windows.

WSL a été développé par Microsoft pour permettre aux développeur de tester leurs applications qui devront être déployées sur Linux.

WSL fonctionne sur Windows 10 et Windows server 2019.

ATTENTION : il ne s’agit pas ici de virtualisation.

Normalement, lorsqu’une commande est exécutée, pour accéder au matériel (exemple: interface réseau) ou au système de fichiers (exemple: lecture d’un fichier ou affichage du contenu d’un répertoire), celle-ci fait un appel système: code du noyau capable de communiquer avec la matériel par l’intermédiaire des pilotes.

Avec WSL, l’application intercepte l’appel système vers le noyau Linux et réalise l’appel système équivalent vers le noyau Windows. Ceci permet d’interagir avec le matériel et le système de fichiers Windows.

WSL

L’installation de WSL est simple a réaliser.

Il faudra choisir l’une des distributions disponibles:

  • Ubuntu
  • OpenSuse
  • Suse
  • Debian
  • Kali

L’application s’ouvre sur une fenêtre permettant de taper des commandes.

À ce moment là, vous êtes dans un environnement Linux et les commandes Linux que vou connaissez sont disponibles.

Comme il ne s’agit pas de virtualisation à proprement parler, l’environnement Linux que vous utilisez partage le même matériel que l’hôte:

  • L’adresse IP de l’environnement Linux est le même que celui de la machine Windows.Vous pouvez vérifier avec les commandes suivantes:Sur Windows: ipconfigSur Linux: ip a

  • Vous pouvez accéder au disque de Windows depuis l’environnement Linux:Le disque entier de Windows se trouve dans le répertoire /mnt/c

  • Vous pouvez accéder au disque Linux depuis Windows:Pour accéder à la racine du système de fichier:C:\Users\aseguin\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

Dans le terminal Linux, vous pouvez exécuter les commandes Linux mais aussi les commandes Windows à condition de les suffixer avec leur extension Windows.

Exemple:

$ notepad.exe
$ ipconfig.exe

Dans un terminal Windows, vous pouvez exécuter les commandes Windows mais aussi les commandes Linux à condition de les préfixer du nom de la distribution et de run.

Exemples:

$ ubuntu run ls -al
$ ubuntu run vim test.txt

Survol des utilitaires Linux

vim

vim est l’éditeur de texte le plus utilisé sur *NIX.

S’il peut ne pas paraitre très convivial au début, sa puissance compensera très largement ce petit défaut.

Il est très léger et n’a pas besoin d’interface graphique pour fonctionner.

Il est aussi rapide en local qu’à distance.

Aide mémoire:

Action Commande
Passer en mode insertion où se trouve le curseur i
Sortir du mode insertion ESC
Sauvegarder :w
Quitter :q
Sauvegarder et quitter :wq
Quitter sans sauvegarder :q!

La suite SSH (Secure SHell)

ssh permet de se connecter à distance sur une machine *NIX et d’y exécuter des commandes.

ssh est très sécurisé car toutes les communication entre vous et la machine Linux sont très fortement cryptées.

scp (Secure CoPy) fait partie de la suite ssh et permet de transférer des fichiers ou des répertoires de ou vers une machine Linux. Ici aussi, tout est fortement crypté.

Des outils existent sur Windows pour interagir avec la suite ssh:

Putty : connection ssh

WinSCP : copy de fichiers

Les gestionnaires de paquets

Pour réaliser des installations, beaucoup de distributions disposent d’un gestionnaire de paquets qui permet d’installer la majorité des applications de façon très simple.

Le type de paquets dépend de la distribution:

  • Debian, Ubuntu,… : les paquets sont des *.deb et le gestionnaire se nomme aptitude.

  • Redhat, Centos, Fedora,… : les paquets sont des *.rpm et le getionnaire se nomme dnf.

Dans tous les cas, le gestionnaire de paquets va télécharger et installer tout ce dont il a besoin pour faire fonctionner l’application voulue (plus de détails plus tard).

Exemple d’installation de Apache sur Centos:

dnf install httpd

Configuration et fichiers texte

Dans Linux (surtout sans interface graphique), tout se fait grâce à des fichiers texte:

  • Configuration des interfaces réseau

  • Configuration des applications et des services comme Apache, DNS, DHCP,…

  • Configuration de l’environnement de l’utilisateur

  • Création des utilisateurs et des groupes

Souvent, le fichier de configuration contient du texte pour expliquer comment modifier les paramètres, l’aide est intégrée en quelque sorte.

L’interface graphique

Un système *NIX fonctionne parfaitement sans interface graphique. La majorité des serveurs *NIX n’ont d’ailleurs aucune interface graphique installée.

La connexion à ces serveurs se fera toujours à l’aide d’une connexion ssh.

Cependant, certaines applications doivent ouvrir une fenêtre pour fonctionner.

Un environnement de bureau est simplement un environnement graphique. Il fait référence à un bureau sur lequel on travaille. Il y a des dossiers, des fichiers, une corbeille, etc.

Un environnement de bureau (environnement graphique), offre:

  • une session de connexion avec un identifiant et un mot de passe pour chaque utilisateur;
  • un espace graphique qui couvre la totalité de l’écran, souvent habillé avec un fond d’écran;
  • des fenêtres avec leurs propriétés, comme des bordures, les polices, la couleur (qui peuvent être modifiées);
  • un menu pour lancer des applications;
  • un explorateur de fichiers, qui permet de se déplacer dans l’arborescence du système de fichiers, de copier, de lire, de supprimer et de gérer les fichiers.

Les principaux environnements de bureaux Linux génériques sont:

  • Gnome: est sûrement le plus connu des environnements, il est convivial et moderne. Gnome est exigeant en ressources machine.
  • KDE: qui cherche à se reprocher du “look” Windows.
  • XFCE: qui se veut un environnement minimaliste, tout en étant très efficace, il permet de redonner vie à une machine vieillissante. Il consomme très peu de ressources tout en étant complètement personnalisable.
  • Certaines distributions proposent leur propre environnement graphique: par exemple Cinnamon de Mint ou Pantheon de Elementary OS, Deepin ou Unity. Il est possible de se connecter à une machine distante avec ssh, et que la machine distante utilise le serveur X (serveur d’interface graphique) de la machine locale pour ouvrir la fenêtre.

L’application s’exécute sur la machine distante mais la fenêtre s’ouvre sur la machine locale qui ne va gérer que l’affichage. On appelle ceci X11 forwarding.

Il existe des serveurs X pour Windows comme Xming.

Quelques lectures

https://openclassrooms.com/fr/courses/7170491-initiez-vous-a-linux

https://openclassrooms.com/fr/courses/7170491-initiez-vous-a-linux?archived-source=43538

https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27exploitation

https://fr.wikipedia.org/wiki/Linux

https://www.astuces-aide-informatique.info/9084/environnements-bureau-linux