====== La distribution Debian GNU/Linux ====== Le **logo** de **Debian GNU/Linux** : {{ :wiki:systemes_d_exploitation:gnu_linux:debian-openlogo.png?nolink&120 |}} {{ :wiki:systemes_d_exploitation:gnu_linux:screenshot_of_debian_12_bookworm_gnome_43.9_english.png?linkonly |GNOME l'Interface Graphique par défaut de Debian}} {{ :wiki:systemes_d_exploitation:gnu_linux:capture_d_ecran_du_2024-12-28_17-03-58.png?linkonly |Autre Image de GNOME sous Debian}} ===== Présentation de Debian GNU/Linux ===== **Debian GNU/Linux** est une **distribution GNU/Linux**(**//système d'exploitation//**) communautaire, librement téléchargeable [[https://www.debian.org/distrib/|ici]], qui a été créée par **Ian Murdock** en août 1993 et la **Fondation Debian** qui a impacte ''énorme'' dans le **domaine informatique**, qui a été créée le 16 août 1993, le **site** officiel se trouve à cette [[https://www.debian.org/|adresse]]. C'est l'une des **distributions Linux** les plus anciennes encore en activité. **Debian GNU/Linux** est composé de trois branches(versions) distinctes, **Debian Stable**(pour la **//production//**), **Debian Testing**(version de **//test//** pour la future **//stable//**) et **Debian Unstable**(version **//instable//** mais pas plus instable que la plupart des distributions courantes **Linux**). La version **stable** de **Debian** est la branche recommandée pour les nouveaux utilisateurs pour sa facilitée d'utilisation et pour sa très grande stabilité idéale pour les **serveurs** en production ou pour avoir un **poste de travail** de qualité professionnel, d'ailleurs **Debian GNU/Linux** est certainement l'une des **distributions Linux** les plus ''stables''. N'allez pas croire que **Debian** ne se limite qu'aux professionnels, c'est un **OS Universel** et c'est d'ailleurs le slogan de la **distribution**. Il est tout à fait possible d'utiliser se **système d'exploitation** pour le **multimédia**, le **gaming**, le **streaming** et bien plus encore, c'est d'ailleurs la **distrib** qui a le plus grand nombre de **Logiciels** dans son référentiel. Le seul problème de la version **stable** de **Debian** est que ses **logiciels** sont vieillissants, y compris au moment de la sortie de la version **stable** mais celà n'est plus réellement un problème avec les **paquets** alternatifs tels que **Flatpak**, **Snap** ou les **AppImage** qui permettent d'installer des **logiciels** dans leurs versions les plus récentes à part en ce qui concerne le ''coeur'' du **système**, le **noyau Linux**, qui fait que **Debian** n'est pas forcément le must pour le **matériel** relativement récent sauf si vous décidez de migrer vers **Debian Testing** ou **Debian Unstable**. La **distribution Debian GNU/Linux** doit sa popularité en partie à son **gestionnaire de paquets** du nom de **APT** (**//Advanced Packaging Tool//**) qui gère automatiquement les **dépendances logiciels** et qui se base sur l'**utilitaire Unix** qui s'appelle **dpkg**, qui lui gère l'installation de ''bas niveau'' des **paquets logiciels** (en anglais, **software packages**) au **format** ''.deb'' mais qui n'est pas prévu pour gérér les **dépendances** (**paquets** necessaires pour installer le **logiciel**). Il existe un grand nombre de **logiciels graphiques** (**logithèque**), pour installer des **logiciels**, tel que **GNOME Logiciels** pour **GNOME**, l'**environnement de bureau** du **projet GNU** ou **Plasma Discover** pour le ''bureau'' **KDE Plasma**. **Debian** dispose du plus grand nombre de **paquets logiciels** dans son **référentiel** (ses **dépôts**). **Debian GNU/Linux** est ce qu'on appelle une **distribution Linux mère** ou une **méta-distribution**, c'est à dire qu'elle est la base de très nombreuses **distributions Linux**, parmi les plus notables et populaires ont peut citer **Ubuntu**, **Linux Mint**, **MX Linux**, **Kali Linux** et bien d'autres encore. **Debian GNU/Linux** est une **distributions GNU/Linux** à tout faire, aucuns ''domaines'' de l'informatique ne lui résiste. C'est également la **distribution** choisie par de nombreuses **organisations** ou **entreprises** pour des usages comme, un **media center** (**Box TV**, comme les **Box Android TV** mais en plus complet et finement configurable), **Kali Linux** pour le **Hacking**, **Tails** pour préserver votre ''anonymat'' et votre ''vie privée'' et contrer la ''censure'' des **FAI**(**//Fournisseurs d'Accès à Internet//**), pour les personnes en situation de ''handicap'', pour l'**astronomie**, pour tout ce qui concerne la **science** et l'**éducation**, le **gaming**, le **multimedia**, pour les ''enfants'', la **médecine**, pour les **serveurs informatiques**, **openmediavault** pour un **serveur NAS**, le ''domaine'' des **radioamateurs** et encore bien plus de possibilité, en partie grâce à l'énorme **référentiel logiciel** de **Debian**. La dernière version de **Debian GNU/Linux** est **Debian GNU/Linux 12** de son **nom de code**, **Bookworm**, elle a été publiée le 10 juin 2023 pour la version **12.0** et la dernière est **Debian GNU/Linux 12.8**, publiée le 9 novembre 2024. Par défaut, le **projet Debian** maintient la **distribution stable** pour une durée de ''3 ans'' mais vu que chaque **distribution stable** sont des versions **LTS** (**//Long Term Support//**), elles ont en réalité une durée de vie de ''5 ans''. À noter que le **support à long terme** de **Debian** n'est pas géré par **Debian** elle même mais par des **bénévoles** et **entreprises**. D'ailleurs, il faut préciser qu'après la durée de ''3 ans'' il faudra prendre soin de modifier les **dépôts** de **paquets logiciels** dans le **fichier** ''/etc/apt/sources.list'' en ajoutant les **dépôts** spécifiques à **LTS** pour bénéficier des ''5 ans'' de ''support''. Dans les versions maintenues, il faut ajouter les anciennes **stable** (**oldstable**), qui peuvent continuer d'être utilisées ''3 ans'' après la publication de la dernière version **stable**, grâce au **support à long terme** (**LTS**). **Debian GNU/Linux** **Oldstable** version **11.11** se nomme **Bullseye** et a été publiée le 31 août 2024. Le nom **Debian** vient de la contraction des trois premières lettres du prénom de l'ex femme du **fondateur** de **Debian**, **Ian Murdock** qui s'appelait ''Debra'' et de ''Ian'', le prénom de **Ian Murdock**. Vous avez du vous rendre compte qu'il est écrit **Debian GNU/Linux** (sa **distribution** principale) au lieu de juste **Debian**, la raison est simple, **Debian** étant un **projet** et **organisation** très diversifié, il n' utilise pas uniquement le **noyau Linux**, en autres sont ou ont été utilisés, **noyau FreeBSD**, **NetBSD**, **Hurd**. Les différentes **distributions** sont : **Debian GNU/kFreeBSD** pour **FreeBSD**, **Debian GNU/NetBSD** pour **NetBSD** et **Debian GNU/Hurd** pour **Hurd** (**noyau** ''officiel'' du **projet GNU**). Le **projet** **Debian** (**Fondation Debian**) est extrèment vaste et ne concerne pas seulement la **distribution** **Debian GNU/Linux**, le **projet Debian** est un véritable ''vivier'' pour la **communauté open source**. Énormément de **projet** **open source** prennent comme ''source'' des éléments de **Debian** ! **Debian GNU/Linux** est également la **distribution** la plus utilisée sur les **nano-ordinateurs** tel que le **Raspberry Pi** et son **système d'exploitation** ''officiel'' créée par la **Fondation Raspberry Pi** nommé **Raspberry Pi OS** (anciennement **Raspbian**). Avant **Debian GNU/Linux 12**, il était nécessaire de téléchager des **images** ''.iso'' de **Debian** ''non-officiels'' pour bénéficier des **firmwares non-libres**, ce n'est plus le cas aujourd'hui, **Debian GNU/Linux 12** alias **Debian GNU/Linux Bookworm**, intègre les **firmwares non-libres** dans ses **images** ''.iso'' par défaut. ==== Sites sur Debian ==== Les liens **Internet** ''officiels'' de **Debian** : * Le [[https://www.debian.org/|site officiel]] de **Debian**. * [[https://www.debian.org/distrib/|Télécharger]] **Debian**. * [[https://cdimage.debian.org/cdimage/release/current-live/amd64/iso-hybrid/|Télécharger des images Lives de Debian]] en direct ou via un [[https://cdimage.debian.org/cdimage/release/current-live/amd64/bt-hybrid/|logiciel Torrent]], vous avez au choix l'**environnement de bureau** **GNOME**, **KDE**, **Cinnamon**, **Xfce**, **LXDE**, **LXQt** ou un **environnement en ligne de commande**. * La [[https://www.debian.org/doc/|documentation]] de **Debian** traitant de divers sujets. * Le [[https://wiki.debian.org/fr/FrontPage?action=show&redirect=PageD%27Accueil|Wiki]] **Debian**. * Les [[https://www.debian.org/distrib/packages|paquets logiciels]] de **Debian**. Les **sites Internet** sur **Debian** non ''officiels'' : * Le site [[https://debian-facile.org/|Debian Facile]], une référence française sur **Debian** : * Son [[https://debian-facile.org/wiki|Wiki]] qui est excellent.. * Son [[https://debian-facile.org/forum.php| Forum]], c'est l'endroit idéal si vous avez des questions ou problèmes sur **Debian**. Vous pouvez également joindre des ''membres'' de **Debian Facile** sur **IRC** (**//Internet Relay Chat//**), un vieux **protocole de communication** mais qui est loin d'être mort à cette [[https://webchat.oftc.net/?channels=%23debian-facile|endroit]]. * L'[[|Association]] **Debian Facile**, à laquelle je vous conseille d'adhérer si vous êtes ''utilisateurs'' de **Debian**, pour se faire, c'est [[https://debian-facile.org/asso.php?section=adherer|ici]] et le lien du [[https://debian-facile.org/compta/public/members/new.php|formulaire]]. * Pour les ''grands débutants'' de **Debian** il y a se [[https://debian-facile.org/projets/lescahiersdudebutant/|livre]]. Le **livre** de référence sur **Debian**, se trouve [[https://debian-handbook.info/browse/fr-FR/stable/|ici]], qui à l'origine était ''payant'' (d'ailleurs l' ''auteur'' l'a en **livre** broché dans sa **collection**), se **livre** est indispensable pour tout **administrateur système** sous **Debian**. Il est désormais disponible en **paquet logiciel** dans le **référentiel** officiel de **Debian** sous le nom de ''debian-handbook''. ===== Les trois Branches distinctes de Debian GNU/Linux ===== Les trois **branches** principales de **Debian GNU/Linux** sont : * **stable** : est la **branche** recommandée par la ''communauté'' **Debian**, elle est d'une ''stabilité'' et ''fiabilité'' à toutes épreuves. J'irais même jusqu'à dire que **Debian GNU/Linux** **Stable** est la **distribution Linux** la plus ''stable'', toutes **distributions** confondues, tant qu'il reste des **bugs** à corriger, les **développeurs** de **Debian** ne la publie pas. Tous les **paquets logiciels** qui sont inclus sont rigoureusement ''testés''. Par défaut, cette **branche** ne reçoit essentiellement que des **mises à jour** de **sécurité** (**correctifs de sécurité**). C'est la version de **Debian** à privilégier pour la ''production'' et pour ceux qui n'ont peu de ''connaissance'' en **GNU/Linux** ou **Unix**. Cette **banche** est idéale pour les **serveurs informatiques**. * **testing** : est la **branche** de ''test'' pour la future **stable**, d'ailleurs elle porte le nom de la prochaine version **stable** de **Debian**. La **distribution** **Debian GNU/Linux** **Testing** est une version en continue (c'est à dire ques les **logiciels** montent en version au fur et à mesure de la vie de la **distribution**), c'est une **semi-rolling release**, elle reçoit les **paquets** provenant de la **branche unstable** lorsque ceux-ci sont relativement ''stables'' pour intégrer **Debian GNU/Linux Testing**, les **paquets** qui y sont inclus sont relativement récents. **Debian GNU/Linux** **Testing** est un bon compromis pour les **utilisateurs** qui souhaitent avoir une **distribution GNU/Linux** ayant une relative ''stabilité'' et comprenant des **paquets** beaucoup plus ''récents'' que **Debian GNU/Linux** **Stable**. Et globalement, **Debian GNU/Linux** **Testing** est aussi voir plus ''stable'' que la plupart des **distributions Linux** ''populaires'' et n'est pas figée comme **Stable**, ses **paquets** évoluent en versions contrairement à **Debian GNU/Linux** **Stable** qui ne bénéficie que de **mise à jour** de **sécurité**, de se fait il y a des **mises à jour** bien plus régulières que sur **Stable**. Certaines personnes optent pour **Testing** sur **poste de travail** du fait que les **logiciels** sont plutôt ''récents'' et la **distribution** relativement ''stable''. À la fin de son existance **Debian GNU/Linux** **Testing** entre en période de **freeze** (**gel**) et devient **Debian GNU/Linux** **Stable**, un fois qu'elle remplie tous les ''critères'' très strictes de celle-ci. * **unstable** : est une **distribution** que l'on peut qualifier de **rolling release** (**distribution continue**, **roulante**) tout comme l'est **Arch Linux**, elle contient donc les **paquets logiciels** les plus récents qui proviennent de la **branche** **experimental**, **experimental** n'est pas une **distribution GNU/Linux** à part entère, c'est seulement un **dépôt** (**référentiel**) de **paquets**. **Debian GNU/Linux** **Unstable** est plutôt réservé' aux **développeurs** de **Debian**, donc plus utilisé en interne du **projet Debian** mais il y a toutefois une partie des ''particuliers'' qui utilisent **Debian GNU/Linux** **Unstable** pour leurs usages personnels et qui en sont très satisfaits. **Debian GNU/Linux** **Unstable** n'est pas moins ''stable'' que n' importe quelle autre **distribution Linux** **rolling release**, d'ailleurs la **distribution** très ''populaires'', **Ubuntu** se base sur **Debain Unstable**. En réalité, **unstable** ne signifie pas ''instable'', c'est simplement la **branche** de **développement** de **Debian**, **Debian Unstable** porte toujours le même nom, **Sid**. À savoir, il y a une autre **branche** qui se nomme **Oldstable**, qui est ''officiellement'' maintenue par la **communauté Debian** pendant ''1 ans'' après la sortie de **Debian GNU/Linux** **Stable** et ''2 ans'' de plus dès qu'elle passe en version **LTS** (**//Long-Term Support//**), la **branche** **oldstable**, qui est l'ancienne **branche** **stable**. En définitive **Debian GNU/Linux Stable** a une durée de vie de ''5 ans'' (pour les **architectures** les plus usités comme **Intel x86_64** ou **ARM64**). À vrai dire, maintenant il n'est plus forcément indispensable d'avoir une autre **branche** que **stable** pour avoir des **logiciels** récents ! Il existe différentes ''techniques'' pour conserver **Debian GNU/Linux** **Stable** avec les dernières versions des **logiciels**, par exemple par : les **backports**, le **pinning** en ce qui concerne les **paquets Debian** ou alors par des **gestionnaires de paquets** alternatifs tel que : **Flatpak**, **Snap** d'**Ubuntu** ou encore les **AppImage** voir même **Docker**, qui utilisent tous une ''méthode'' d'**isolation** qui fait que chaque **logiciel** installé par se biais est ''isolé'' des **logiciels** installés par défaut, via **APT** (le principe du **sandboxing**), donc les solutions sont vastes ! ===== Caractéristiques de l'OS communautaire Debian GNU/Linux ===== ==== Cours résumé des Caractéristiques de Debian GNU/Linux ==== **Debian GNU/Linux** couvre un très grand nombre de **domaine** différents, allant du **serveur informatique**, au **poste de travail** pour : la **bureautique**, le **multimédia**, le **gaming**, le **développement**, le **hacking** et bien d'autres encore. **Debian GNU/Linux** est également l'une des **distribution GNU/Linux** qui supporte le plus grand nombre d'**architecture processeur** différente, comme les **portages officiels** : **Intel** (**Intel x86** et **Intel x86_64**), **ARM** (**armel**, **armhf**, **arm64**), **MIPS** (**mipsel**, **mips64el**), **PowerPC** (**ppc64el**), **System z** (**s390x**), **RISC-V** (**riscv64**) et d' autres, enfin bref, **Debian GNU/Linux** est l'une des **distributions** pouvant fonctionner sur le plus de **plateformes** différentes et vous avez même la possibilité de télécharger les **sources** de **Debian GNU/Linux**. Comme mentionné précédement, **Debian GNU/Linux** est une **distribution mère** (une **méta-distribution**), sur laquelle repose une multitude d'autres **distributions Linux**, elles sont tellement nombreuses que je ne peux par toutes les citer, en voici quelques une : les très ''populaires'', **Ubuntu**, **Linux Mint**, **MX Linux** et des **distributions** ''spécialisées'' dans certains **domaines**, **Raspberry Pi OS** pour **nano-ordinateur** **Raspberry Pi**, **OpenMediaVault** pour **serveur NAS**, **Tails** pour l'**anonymat** et éviter la **censure**, **Kali Linux** pour le **pentesting** (**hacking**), **Mobian** pour **smartphone**, **Armbian** pour les **processeurs ARM** mais il en existe encore beaucoup d'autres. **Debian GNU/Linux 12** intègre par défaut toute la panoplie de **logiciels GNU**, du **noyau Linux** en version ''6.1'', le **shell unix Bash** version ''5.2.15'', de **systemd** version ''252'', d'**apt** ''2.6.1'', de **GCC** ''12.2.0'', **PHP** ''8.2'', **Python** ''3.11'', **GNOME** ''43'', **Cinnamon** ''5.6.8'', **KDE Plasma** ''5.14.2'', **Xfce** ''4.18'', **LXDE** ''11'', **LXQt** ''31'',...etc Sachez qu'**Ubuntu** est devenu également une **distribution mère** basé sur la **méta-distribution**, **Debian GNU/Linux**. De nos jours, énormément de **distribution** se base sur **Ubuntu**, donc indirectement sur **Debian GNU/Linux**, c'est la raison pour laquelle je n'ai pas cité les **distributions** basées sur **Ubuntu**, **Ubuntu** mérite un ''article'' à elle seule. Sachez tout de même que ses deux **distributions** se ressemblent énomément et que la plupart des **tutos** pour **Debian** s'appliquent à **Ubuntu** et inversement. ==== Le Noyau Linux sous Debian GNU/Linux ==== Le **noyau Linux** de **Debian GNU/Linux** se situe dans le **répertoire** ''/boot'', le noyau en lui même est le **fichier** ''/boot/vmlinuz-version_de_votre_noyau-amd64'' pour un **noyau** ''Intel ou AMD 64 bits''. Le **noyau Linux** est un **noyau monolithique modulaire**, il comporte des **BLOBs** (**//Binary Large Object//**) qui permettent à **Debian** de reconnaître un maximum de **matériels informatiques** et qui de se fait facilitent l'utilisation de **Debian GNU/Linux** et des **modules**. Les **modules** du **noyau Linux** permettent de charger un **pilote** de **matériels** qui n'est pas activé par défaut et d'installer des **modules** externes, en général sous forme de **firmware**. La majorité des **modules** se trouvent dans ''/usr/lib/modules/votre_noyau'' ou ''/lib/modules/votre_noyau'' qui est un **lien symbolique** vers ''/usr'' ou pour accèder directement à vos **modules** ''/usr/lib/modules/`uname -r`''. Les **commande Unix** de base (qui sont à exécuter avec un **compte administrateur** comme **root**) pour gérer les **modules** du **noyau Linux** sont : * **lsmod** pour visualiser tous les **modules** chargés dans le **noyau**. * **modinfo** pour avoir des informations sur un **modules** en particulier. * **insmod** permet de charger un **module** en spécifiant son **chemin** complet, exemple : ''insmod /usr/lib/modules/`uname -r`/kernel/XXX/XXX.ko''. **insmod** les **dépendances** des **modules** que partiellement. * **rmmod** qui lui, à l'inverse, décharge un **module** en mentionnant son nom. * **modprobe** qui a les ''fonctionnalités'' de **insmod** et **rmmod** mais en plus avancée, car cette commande gère entièrement les **dépendances**. Exemple : ''modprobe nom_du_module'' pour charger un **module** et toutes ses **dépendances** et ''modprobe -r nom_du_module'' pour le décharger. Il existe un **outils** en **ligne de commande** ou en **mode interactif** via l'**interface** **curses**, spécifique à **Debian GNU/Linux** du nom de **module-assistant** qui permet de créer ses propres **modules** à partir du **code source** du dit **module**, cet **outil** est vraiment riche en ''fonctionnalités'' et les **modules** installés par son biais sont automatiquement ''re-compilés'' et ''installés'' suite à une mise à jour du **noyau Linux**. À savoir, il existe une version du **noyau Linux** dépourvue de **BLOB** (**//Binary Large Object//**), cette version se nomme **Linux-libre** qui est le **noyau** par défaut des **distributions GNU/Linux** recommandés par la **Fondation GNU** qui les considère comme de véritable **distributions GNU/Linux Libres**. ==== Installateur de Debian GNU/Linux ==== Tout d'abord **Debian** est ''installable'' via **CD** ou **DVD-Rom**, par **clé USB bootable** ou par le **réseau** en passant par exemple par **PXE** (**//Pre-boot eXecution Environment//**) et pour finir par **FAI** (**//Fully Automatic Installer//**) qui permet une installation automatique et ''massive'' sur plusieurs **ordinateurs** à la fois, genre **stations de travail**, **serveurs**, voir **machines virtuelles**. L'**installateur** de **Debian** se nomme tout simplement **debian-installer**, c'est un **installateur** extrèment ''modulaire'' qui permet d'installer **Debian GNU/Linux** au cas par cas, pour commencer **debian-installer** peut installer **Debian** en mode **texte** (**console**) via **Curses** ou en mode **graphique**. L'**installateur** de **Debian** étant très ''modulaire'', ce n'est pas forcément l'**installateur** **Linux** de plus simple à appréhender et il est même jugé comme austère par certains ''membres'' de la **communauté** **open source**. Mais honnêtement l'apparence n'est que futile, l'important c'est les nombreuses fonctionnalités dont dispose l'**installateur** de **Debian** et de se côté, c'est la ''panacée''. **debian-installer** permet d'installer **Debian** de façon standard (automatisé) ou en mode ''expert'' qui permet une installation étape par étape et de manière très ''fine'', via cette option vous avez accès à toutes les configurations possibles de **Debian** (le mode ''expert'' comme sont nom l'indique, est réservé aux personnes ayant de bonnes ''connaissances'' en **informatique**). Avec l'**installateur** de **Debian** vous avez la possibilité d'installer le **système** avec le strict minimum pour un **système embarqué**, en incluant seulement les **utilitaires essentiels** pour un **serveur** ou d'installer un environnement de bureau, par défaut GNOME mais vous pouvez également installer **Cinnamon**, **KDE Plasma**, **Xfce**, **MATE**, **LXDE** ou **LXQt** et j'omets les **gestionnaires de fenêtres** qui sont très nombreux. À savoir que pendant le **processus** d'installation, **Debian** détecte si il ne reconnait pas un **composant** de votre **oridinateurs** et vous permet de charger des **firmwares non-free** via une **clé USB** par exemple. Au moment où il vous est proposé d'installer certains **logiciels**, vous avez la possibilité d'installer les **services** (**daemons**) de bases comme **SSH**, **CUPS** ou encore le **serveur Web** **Apache**. Vous aurez une page spécifique pour le **processus** d'installation. À savoir qu'il existe des **fichiers compressés** ''tar.gz'' ou ''zip'' contenant les **firmwares non-free** inclus, à cette [[https://cdimage.debian.org/cdimage/firmware/|adresse]]. [[https://youtu.be/50yfWD8eGgY|Installation d'une Debian 12.9 minimale sur architecture AMD64 sous VirtualBox]] ==== Le Programme de Démarrage sous Debian GNU/Linux ==== Sous **Debian GNU/Linux**, pour l'**amorçage** du **système**, c'est **GNU GRUB** (**//GRand Unified Bootloader//**) qui est utilisé, c'est un **programme d'amorçage** qui est très complet et qui gére très bien le **multiboot** (**multi-amorçage**), il peut **booter** tous les **systèmes d'exploitation** existant, par exemple, si vous avez un **ordinateur** où **Windows**, **Debian GNU/Linux** et **FreeBSD** sont installés vous pouvez démarer chaque **OS** sans aucun problème. **GNU GRUB** est **programme d'amorçage** avec énomément de fonctionnalités, vous pouvez en autres **booter** n'importe quel **OS** installé sur votre **ordinateur** mais aussi des **clé USB bootable**, des **CD/DVD-Rom bootable**, des **images ISO**, des **disque dur virtuel** enfin bref les possibilités sont quasiment ''infini''. À l'époque c'était le **chargeur d'amorçage** nommé **LILO** (**//Linux Loader//**) qui était utilisé sur toutes les **distributions Linux**, il était beaucoup plus limité que **GNU GRUB** mais jouait tout de même bien son ''rôle''. ==== Système d’initialisation et de gestion des daemons de Debian GNU/Linux ==== À l'origine **Debian GNU/Linux** utilisait le **système d’initialisation** **sysvinit** qui utilisait des **scripts shell**, **système** **SysV init** similaire à celui de **UNIX System V**. Depuis **Debian Jessie**, sortie le 26 avril 2015, c'est **systemd**, créée par **Lennart Poettering**, qui a pris de ''relais'' et qui gère l'**initialisation**, la **gestion des services** (**daemons**), les **cgroups**, les **journaux systèmes** et beaucoup d'autres **services**. **systemd** a été très ''controversé'', il met un terme aux ''principes'' **KISS** de **sysvinit**, c'est une véritable **usine à gaz**. J'avoue que je ne suis moi même pas très fan de **systemd** et que j'étais beaucoup plus à l'aise avec **sysvinit** et son **système** de **runlevel** au sein de ''/etc/inittab''. Mais malgré tout, même si certaines orientations de **GNU/Linux** ne me semble pas très bonne, j'essaie tout de même de passer aux nouvelles **normes**. **Systemd** à énomément de ''fonctionnalités'', en autres : * L'**initialisation du système** et le lancement des premières **console virtuelles** (**getty**). * La **getsion des daemons** (**services**) via la **commande** nommé **systemctl**. Par exemple : * systemctl ACTION .service Parmi les ''ACTIONS'' on peut citer : ''start'', ''stop'', ''restart'', ''reload'', ''status'', ''show'',... * La **getsion des targets** (équivalent des **runlevels** de **sysv**) également avec la **commande** **systemctl**. Exemples : * systemctl isolate multi-user.target qui permet de passer une **session graphique multi-utilisateur** en mode **console multi-utilisateur**. * systemctl isolate graphical.target pour repasser en mode **graphique multi-utilisateur**. * Son propre **service de journalisation** via la **commande** nommé **journalctl**. Exemple pour le **serveur** **SSH** : * journalctl nfs-server.service par le ''nom'' du **service**. * journalctl _PID=1300 par son ''PID'' (''//Process IDentifier//''). * journalctl /usr/sbin/sshd par son ''exécutable''. * Il est aussi possible d'**éteindre**, **mettre en veille**, **hiberner**, exemple par ordre : * systemctl poweroff pour **éteindre**. * systemctl suspend pour **mettre en veille**. * systemctl hibernate pour **hiberner** Ce n'est qu'un cours résumé sur les ''fonctionnalités'' de **systemd** qui comme je l'ai dit, est une **uzine à gaz**. Des **utilisateurs**, mécontents par la décision de **Debian** d'intégrer **systemd** en son sein au détriment de **sysvinit**, ont créées un **fork** de **Debian** du nom de **Devuan** qui reste sur le traditionnel **SysV init**. Il est possible de choisir entre **sysvinit**, **runit** ou **OpenRC**. Cette **distribution** est disponible [[https://www.devuan.org/|ici]]. ==== Les Systèmes de Fichiers sous Debian GNU/Linux ==== Les **systèmes de fichiers** proposés par défaut à l'installation et l' utilisation sont : **ext4**, **ext3**, **btrfs**, **XFS**, **F2FS**. Les **systèmes de fichiers** **ext** (**//extended file system//**) sont les **systèmes de fichiers** par défaut sous **GNU/Linux**. Tous les **systèmes de fichiers** précédement mentionner gère la **journalisation**. **ext4** est le **système de fichiers** conseillé en premier, il est ''fiable'', ''performant'' et à plus de ''fonctionnalités'' que **ext3** mais il est légèrement plus énergivore. **btrfs** est sans doûte le plus ''avancé'', il gère les **snapshots**, la **compression** et la **mise en miroir** mais n'est je pense pas aussi ''mature'' que **ext4**. Un autre choix est **F2FS** qui a été conçue pour les **SSD** (**//Solid-State Drive//**) et qui offre de meilleures ''performances'' d'**écriture séquentielle**. Bien évidement, suite à l'installation de **Debian GNU/Linux** vous pouvez installer d'autres **systèmes de fichiers**. ==== Gestionnaire de Paquets sous Debian GNU/Linux ==== L'une des grandes forces de **Debian** est son **gestionnaire de paquets**, qui a fait en partie la renommé de cette **distribution GNU/Linux**. Dans les toutes premières versions de **Debian**, la **gestion de paquets** n'était géré que par **dpkg** et son **frontend** **dselect**. C'est à partir de **Debian GNU/Linux 2.1** du nom de **Slink**, publié le 9 mars 1999, que **Debian** intégra **APT** (**//Advanced Packaging Tool//**), à ne pas confondre avec la commande **apt**, **APT** est le centre ''névralgique'' du **gestionnaire de paquets**. **APT** fût le premier **gestionnaire de paquets** à gérer les **dépendances logiciels**. L'**outil** en **ligne de commande** principal qui installe les **paquets** à proprement parler sans gérer les **dépendances** est **dpkg**. Les **outils** en **ligne de commande** qui installent le **logiciel** souhaité et ses **dépendances** sont : **apt**, **apt-get** ou **aptitude** pour les principaux. La **commande** qui est devenue la référence est **apt**, qui combine les ''fonctionnalités'' de **apt-get**, **apt-cache** et **apt-file**. Les **logiciels** sous **Debian** se trouvent dans des **dépôts** (**repository** en anglais) qui sont référencés dans le **fichier** ''/etc/apt/sources.list'' et pour des **dépôts** hors **Debian** vous pouvez utiliser le **répertoire** ''/etc/apt/sources.list.d'' qui se compose de **fichiers** finissant par l'**extension de fichiers** ''.list'', se **répertoire** est très utile pour installer des **logiciels** ne faisant pas partis des **dépôts** ''officiels'' de **Debian**. En ce qui concerne les **interfaces graphiques** à **APT** ont peux citer : **Synaptic**, **Adept Manager**,...et pour les **logithèques**, il y a **GNOME Logiciels** pour l'**environnement de bureau** **GNOME** ou **Plasma Discover** pour **environnement de bureau** **KDE Plasma**, qui sont similaire au ''Play Store'' de **Google** ou de l'**App Store** d'**Apple**. À savoir, qu'il est tout à fait possible d'installer un **paquet** ''.deb'' ''isolé'' (hors **dépôts**) en gérant l'installation automatique des **dépendances** du **paquet** avec le **logiciel** du nom de **Gdebi**, pour installer la version **graphique**, installer le **paquet** **gdebi** et pour la version en **ligne de commande**, installer **gdebi-core**. Le **compilateur** pour **GNU/Linux** est **GCC** (**//GNU Compiler Collection//**), il prend en charge les **langages de programmation** suivants : **C**, **C++**, **Objective-C**, **Java**, **Ada**, **Fortran** et **Go**. À savoir que sous **Debian GNU/Linux**, il y a également des **gestionnaires de paquets** alternatifs qui permettent d'avoir les toutes dernières versions des **logiciels** n'étant souvent pas disponible par défaut sous **Debian GNU/Linux**, à moins de faire du **pinning**, qui consite à installer des **logiciels** provenant des autres **branches** de **Debian** comme **Testing** ou **Unstable** en toute ''sécurité'', sans impacter la base **logiciel** de **Debian GNU/Linux Stable** mais c'est un procédé un peu complexe et qui n'a plus trôt d'intérêt de nos jours. Ses fameux **gestionnaires de paquets** alternatifs sont : **Flatpak** de **Alexander Larsson**, **Snap** de **Canonical Ltd** et enfin les **fichiers** **AppImage** qui comporte un **logiciel** et toutes ses **dépendances** dans un même **fichier**. Contrairement à **Flatpak** et **Snap**, **AppImage** n'est qu'un **fichier** contenant tout le nécessaire pour exécuter un **logiciel** sans même avoir besoin de l'installer, il suffit de rendre le **fichier appimage** ''exécutable''. Tous ses **paquets** alternatifs son en mode **sandbox**, c'est à dire qu'ils sont ''isolés'' et n' ''interfèrent'' pas avec le **système de base** de **Debian GNU/Linux**. C'est très pratique pour avoir la dernière version des **logiciels** sans se prendre la tête et de manière ''sécurisé''. Pour installer des **logiciels** sous **Debian GNU/Linux**, se référer à se [[wiki:systemes_d_exploitation:gnu_linux:debian:tutoriels_sur_debian:tutos_debian_sur_l_admnistration_systeme:installation_de_logiciels_sous_debian|tuto]]. ==== La Pile Audio sous Debian GNU/Linux ==== À l'époque du **noyau Linux 2.4** le **pilote** pour l'**audio** etait **OSS** (**//Open Sound System//**), désormais le **pilote** par défaut pour l'**audio** est **ALSA** (**//Advanced Linux Sound Architecture//**) qui a une ''compatibilité'' avec **OSS**. Il existe également une nouvelle version du **pilote OSS** du nom de **OSS4** (**//Open Sound System v4//**) qui se trouve [[http://www.opensound.com/download.cgi|ici]]. Le **serveur de son** utilisé actuellement est **PipeWire**, le **serveur de son** précédent était **PulseAudio**, créée par l'**auteur** de **systemd**. **PipeWire** a une **couche de rétro-compatiblité** avec **PulseAudio** du nom de **pipewire-pulse**, une autre pour le **serveur de son** nommé **JACK** (**//ack Audio Connection Kit//**) qui est devenue ''obsolète'' avec **PipeWire** et enfin **pipewire-alsa**, **couche de rétro-compatiblité** avec **ALSA**. Un **serveur de son** joue le rôle d'intermédiaire entre les **applications audio** et le **pilote ALSA**. ==== La Pile Gaphique sous Debian GNU/Linux ==== La **pile graphique** sous **GNU/Linux** se compose des éléments suivants : les **applications graphiques** et **bibliothèques graphiques**, les **pilotes graphiques** liés au **noyau Linux**, le **serveur X11** (en l'occurence **X.Org**, maintenu par la **Fondation** du même nom) ou un **compositeur graphique** tel que **Wayland** associé à un **gestionnaire de fenêtres** ''compatible'' tel que **Mutter** de l'**environnement graphique GNOME** ou encore **KWin** de **KDE Plasma**. Pour le moment il n'y a pas énormément d'**interface graphique** compatible avec **Wayland** et malheureusement **Wayland** ne permet pas d'être utilisé avec les **pilotes propriétaires** **Nvidia** qui est pour les **cartes graphiques** les plus récentes, le seul **pilote** réellement utilisable. ==== Le Réseaux sous Debian GNU/Linux ==== L' élément central est la **pile TCP/IP** intégrée au **noyau Linux** fondée sur le **modèle OSI** qui gère tous les **protocoles réseaux** et les **interfaces réseau**.\\ Il y a deux **paquets logiciels** qui ont le même rôle et qui sont des **outils** en **ligne de commande** pour gérer son **réseau** : * le **paquet** du nom de **net-tools**, qui contient les **commandes** : **ifconfig, netstat, ipmaddr, iptunnel, mii-tool, nameif, plipconfig, rarp, route, slattach** et **arp**. * le **paquet** nommé **iproute2** qui comprend les **commandes** : **ip, ss, bridge, dcb, devlink, rtacct, rtmon, tc, tipc, vdpa, lnstat, nstat, rdma, routel, arpd, genl, ctstat** et **rtstat**. Il y a également le **paquet** **wireless-tools** pour gérer les **cartes wifi**, qui ont comme **utilitaires** : **iwconfig, iwlist, iwevent, iwgetid, iwpriv** et **iwspy**.\\ En ce qui concerne l'**utilitaire graphique** (et ses **commandes Unix** associés) le plus utilisé sous **GNU/Linux** ont peut citer **Network-Manager** qui contient tous les **outils essentiels** pour gérer son **réseau**, auxquel on peut ajouter des **extensions**, par exemple pour les **réseaux** **VPN** (**//Virtual private network//**, **//Réseau Privé Virtuel//** en français). Le **fichier** qui contient les **interfaces réseau** sous **Debian** est ''/etc/network/interfaces'' où vous pouvez faire un **réglage** minutieux de chaque **interface**. Vous pouvez également créer vos propres **fichiers** d'**intefaces réseau** via le **répertoire** ''/etc/network/interfaces.d/''. Globalement le **réseau** sous **Debian GNU/Linux** est très ''stable'', ce n'est pas pour rien qu'il y a un nombre gigantesque de **serveur informatique** sous **Debian GNU/Linux** ! ==== La Sécurité Réseau sous Debian GNU/Linux ==== **Debian GNU/Linux** inclut dans son **noyau Linux** le **cadriciel** (**framework**) appelé **Netfilter** qui ''implémente'' le **pare-feu** du **noyau Linux** et la **commande Unix** **iptables** pour **IPv4** et **ip6tables** pour **IPv6** permettent de configurer les **chaînes** et les **règles** en autres du **pare-feu** **Netfilter**. Parmi les **commandes Unix** comprises dans le **paquet** **iptables** il y a également **ebtables**, spécifique aux **trames Ethernet**. Il existe un **outil** en **ligne de commande** pour configurer de manière simplifiée le **pare-feu** **Netfilter** du nom de **UFW** (**//Uncomplicated Firewall//**), il existe également une **interface graphique** pour **UFW** nommée **Gufw** (bien pratique pour les **postes de travail**). Il existe aussi un **utilitaire Unix** qui se veut être le remplacement de l'**utilitaire iptables** qui a une **syntaxe** plus ''claire'' et ''cohérente'' appelé **nftables**, il permet également une ''compatibilité'' avec **iptables** en traduisant la **syntaxe** de **iptables** en **syntaxe** **nftables**. Sous **Debian GNU/Linux** et sous **GNU/Linux** en général il y a un **antivirus** **open source** du nom de **ClamAV** qui utilise la **bibliothèque** **libclamav**. Pour un **poste de travail** sous **GNU/Linux**, il complètement inutile d'avoir un **antivirus**, sauf si vous êtes en **dualboot** avec **Windows** et **GNU/Linux** sur le même **ordinateur**, dans se cas **ClamAV** peut vérifier que vous n'avez pas de **fichiers infectés** sous **GNU/Linux** qui pourrait nuire à votre **Windows**. Par contre **ClamAV** peut-être utile sur un **serveur mail** sous **Debian GNU/Linux**. Pour installer **ClamAV**, il faut installer son **paquet** qui est **clamav**, à savoir qu'il existe également une **interface graphique** pour **ClamAV** du nom de **ClamTk**, son **paquet** est tout simplement **clamtk**. Il est totalement inutile d'avoir un **antivirus** sous **Debian GNU/Linux** et sur toutes les autres **distributions Linux** ! Ça ne ferait que consommer des **ressources** inutilement. ==== La Virtualisation et Conteuneurisation sous Debian GNU/Linux ==== **Debian GNU/Linux** est loin d'être dépourvu de **logiciel** de **virtualisation**, **émulation** et **conteuneurisation**. === Virtualisation === La **virtualisation** consiste à exécuter un **système d'exploitation** appelé **machine virtuelle**, qui fonctionne de ''concert'' avec l'**hôte** (**Debian GNU/Linux**, le **système** ''principal'') en l'occurence le **noyau Linux**, de se fait il y a un gain de ''performance'' énorme par rapport à un **système d'exploitation** ''émulé''. Avec un **hyperviseur**, c'est le **CPU** (**processeur**), **mémoire vive** (**RAM**), **disque** (**mémoire de masse**) de l'**hôte** (de l'**ordinateur**) qui est utilisé pour les **machines virtuelles** (**système d'exploitation** ''virtualisé'' appelé également **VM**), chaque **VM** est ''isolée'' les unes des autres et du **système hôte**. Un **OS** ''virtualisé'' ne peut fonctionner que si il a la même **architecture processeur** que l'**OS Hôte**. En ce qui concerne la **virtualisation** vous avez les **hyperviseurs** de ''type 1'' suivants : * L'**hyperviseur** par défaut de **Linux** (directement intégré dans le **noyau Linux**) du nom de **KVM** (**//Kernel-based Virtual Machine//**) qui fonctionne de ''concert'' avec l'**émulateur** **QEMU** (**//Quick Emulator//**), il est très ''performant'' et il est disponible sur les **processeurs** comme **Intel** ou **AMD**, **ESA/390**, **PowerPC**, **IA-64** (**Intel Itanium** ''1'' et ''2'') et **ARM**. * **Xen** est également un **hyperviseur** de ''type 1'' natif sous **Linux**, en partie intégré dans le **noyau Linux**, il est disponible pour les **architectures processeur** suivantes : **x86**, **x64**, **IA-64**, **PowerPC** et **ARM** et **SPARC**. À noter que **Xen** est également disponible sous **NetBSD**. Les **hyperviseurs** de ''type 2'' : * **VirtualBox** plus pécisément **Oracle VM VirtualBox** est un **hyperviseur** de ''type 2'', disponible pour les **OS** : **Linux**, **Windows**, **macOS**, **Solaris**, **FreeBSD** et **Genode**. Il permet de **virtualiser** la plus des **OS**, il faut que l' **OS** ''virtualisé'' soit un **système** focntionnant sur le même **processeur** que l'**hôte** par exemple pour un **OS** **Hôte** avec un **processeur** **Intel** ou **AMD** ''64 bits'', il faut un **OS** ''invité'' (**VM**) qui supporte soit l'**architecture** **x86** ou **x64** d'**Intel** ou **AMD**. Pour le moment, **VirtualBox** n'est disponible que pour les **processeurs** **Intel** ou **AMD** ''64bits'' (**x64** aussi nommé **x86_64**) * **VMware Player** est très similaire à **VirtualBox**, il supporte peut-être un peu plus d'**OS** ''invité'' par contre **VMware Player** n'est pas disponible à l'installation pour autant d'**OS** que **VirtualBox**. === Émulation === L'**émulation** consiste à émuler la **totalité** d'un **appareil informatique**, par exemple : un vieux **PC**, un ancien **Macintosh**, de vielle **station UNIX**, un **mini-ordinateur** (**PDP-11**, **VAX**, **IBM 1130**,...), une **console de jeu**,...etc. L'**émulateur** ne bénéficie en aucun cas des ''ressources'' de l'**Hôte** mais il permet d'émuler des **OS** qui non pas la même **architecture processeur** que votre **ordinateur hôte**. Par contre, évidement les **appareils informatiques** ''émulés'' n'ont pas les ''performances'' et ''réactivités'' que les **OS** ''virtualisés''. Mais la plupart du temps, on ''émule'' du vieux **matériels** qui ne sont vraiment pas groumand en ''ressources''. Quelques **émulateurs** : * **QEMU** (**//Quick Emulator//**) est un **émulateur** **multi-architecure** qui peut ''émuler'' des **systèmes** : **x86**, **ARM**, **PowerPC**, **RISC-V**, **MIPS**, **s390**, **SPARC**. C'est l'un des **émulateurs** les plus complets. Il permet d'émuler une multitude de viel **OS**. À la base c'est un **émulateur** créée pour **GNU/Linux**. * **SimH** est un **émulateur** pour ''simuler'' les vieux **ordinateurs** des années ''60 à 80''. Il permet en autres de ''simuler'' un **PDP-11**, **VAX**, **Altair 8800**,... Il est idéal pour ''simuler'' tous les vieux **UNIX** mais permet bien plus. * **PearPC** est un **émulateur** qui ''émule'' les vieux **Macintosh** **PowerPC** et donc **Mac OS Classic** et les premières versions de **Mac OS X**. * **MAME** (**//Multiple Arcade Machine Emulator//**) permet d'émuler de nombreux **jeux** d'arcade et **console de jeux** mais aussi de nombreux **ordinateurs** anciens. Il est disponible pour la plupart des **OS** les plus ''populaires''. === Conteuneurisation === La **conteuneurisation** à quelques similitudes avec l'**appel système** et **commande Unix** **chroot**, elle consiste à virtualiser la totalité d'un **système GNU/Linux** (peu importe la **distribution Linux**), hormis son **noyau**. C'est une méthode de **virtualisation** qui utilise l'**isolation** comme **méthode de cloisonnement** au niveau du **système d'exploitation**. Les ''performances'' de la **virtualisation** par **conteuneurisation** son pour ainsi dire ''native'', en gros, une **application** exécutée dans un **conteuneur** est aussi ''réactive'' que sur le **système Hôte** ! Les **conteuneurs** (**containers** en anglais) : * Les **conteuneurs** **LXC** (**//LinuX Containers//**) peuvent virtualiser toutes les **distributions Linux**, comme mentionné précédement, ils virtualisent la totalité de l'**espace utilisateur** (**userland** en anglais) en utilisant les **cgroups** et le **noyau Linux** de l'**hôte**. Un **conteuneur** **LXC** utilise donc un **système Linux** complet avec le **noyau** de l'**hôte**, le **conteuneur** **LXC** est ''isolé'' de l'**OS** principal de l'**hôte** et n'a donc aucun ''droit'' d'accès sur le **système** ''principal'', alors que le **système** ''principal'' à tous les droit sur un **conteuneur**. Un **conteuneur** **LXC** n'a même pas accès aux autres **conteuneurs** **LXC**. Pour faire simple, chaque **conteuneur** paraît et fonctionne comme n'importe quel **système** à part enitère **Linux**. **LXC** est spécifique et disponible seulement sur **GNU/Linux**. * **Docker** était à l'origine basé sur **LXC** mais utilise désormais son propre **système** de **conteuneurisation** qui est en grande partie similaire à **LXC** avec une **API** (**//Application Programming Interface//** ou **//Interface de Programmation Applicative//**) de **haut niveau** et des ''fonctionnalités'' supplémentaires. Contrairement à **LXC**, de part sa conception, **Docker** n'est désormais plus seulement ''compatible'' avec **GNU/Linux** mais avec la majorité des **systèmes d'exploitation**, donc **GNU/Linux**, **macOS**, **Windows** et **FreeBSD**. La **virtualisation**, **émulation** et **conteuneurisation** sur cette page n'est qu'un petit résumé des ''fonctionnalités'' et ''offre'' **logiciels** dans se domaine sous **Debian GNU/Linux** ! Le monde de la **virtualisation**/**émulation** est bien plus vaste sous **Debian GNU/Linux**, je n'ai citer qu'une infime partie des **programmes** fournis par **Debian** dans le **domaine** !!! ===== Instructions supplémentaires pour Debian GNU/Linux ===== Dans cette section nous traiterons des [[wiki:systemes_d_exploitation:gnu_linux:debian:tutoriels sur Debian]] GNU/Linux, c'est là où vous aurez une **documentation** sur des sujets bien spécifiques liés à **Debian GNU/Linux**. Cette ''article'' n'est en aucun cas exhaustif, c'est juste un résumé de **Debian GNU/Linux** ! L'endroit où vous aurez réellement une **documentation** poussée sur **Debian GNU/Linux** est dans les [[wiki:systemes_d_exploitation:gnu_linux:debian:tutoriels_sur_debian|Tutos]].