2 - Introduction à Linux (suite)

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

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.

Avec Linux, le noyau peut être modifié.

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

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

Linux est très modulaire contrairement à Windows.

Historique

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.

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.

Sous Centos, le fichier de configuration d’Apache se nomme httpd.conf.

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.

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.