2020-09-30 23:09:24 +02:00
\documentclass [10pt] { article}
2020-09-28 00:15:52 +02:00
\usepackage { fontspec}
\usepackage [a4paper,portrait,
bmargin=10mm,lmargin=15mm,rmargin=15mm,tmargin=10mm]{ geometry}
\pagenumbering { gobble}
\setlength { \parindent } { 0em}
\setlength { \parskip } { 0em}
\setmainfont { DejaVu Sans}
\newcommand { \hr } { \rule { \textwidth } { 1pt} }
\newenvironment { itmz} { \begin { itemize}
\setlength { \itemsep } { 0em}
} { \end { itemize} }
2020-09-26 01:33:37 +02:00
\begin { document}
2020-10-21 20:34:29 +02:00
CNAM / UAMM91 \hfill Mémoire ingénieur / Sujet \hfill IRSM ↔ CYC9104A
2020-09-28 00:15:52 +02:00
2020-10-03 00:45:26 +02:00
Marc Beninca \hfill \textbf { Systèmes d’exploitation autonomes incrémentaux} \hfill 2020 → 2021
2020-09-28 00:15:52 +02:00
2020-10-05 18:31:58 +02:00
\hr
2020-10-04 01:08:52 +02:00
\section { Problématique : maintenance des systèmes d’exploitation}
2020-09-28 00:15:52 +02:00
2020-10-05 18:34:14 +02:00
En fonction des cas d’utilisation, maintenir des systèmes d’exploitation peut nécessiter de penser :\\
2020-10-03 00:18:37 +02:00
mises à jour, indisponibilité, sauvegardes, tests, instantanés, restaurations, recettes de configuration.
2020-09-28 00:15:52 +02:00
2020-10-01 23:15:54 +02:00
\subsection { Systèmes de fichiers, installés sur partitions, avec accès en écriture}
2020-09-28 00:15:52 +02:00
2020-10-05 21:44:22 +02:00
\subsubsection { Système de fichiers conventionnel : ext2, ext3, ext4, jfs, xfs}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-05 20:10:56 +02:00
\item { \textbf { avantages} : instantanéité de toutes les modifications apportées aux fichiers du système}
2020-10-04 23:21:50 +02:00
\item { \textbf { inconvénients} : nécessité de régulièrement réaliser et tester des sauvegardes du système}
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-10-04 23:21:50 +02:00
\subsubsection { Système de fichiers géré par des recettes de configuration : ansible, chef, puppet}
2020-10-01 23:15:54 +02:00
\begin { itmz}
2020-10-05 23:53:40 +02:00
\item { \textbf { avantages} : possibilité de remettre rapidement en état certains pans entiers du système}
2020-10-01 23:15:54 +02:00
\item { \textbf { inconvénients} : pas de résolution des écarts de configuration non gérés par les recettes}
\end { itmz}
2020-10-04 23:21:50 +02:00
\subsubsection { Système de fichiers avec gestion d’instantanés : btrfs, zfs}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-04 23:21:50 +02:00
\item { \textbf { avantages} : permet de sauvegarder et restaurer un état des fichiers du système à un instant}
2020-10-05 23:53:40 +02:00
\item { \textbf { inconvénients} : réduit progressivement l’espace disponible, pas encore utilisé par défaut}
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-10-01 23:15:54 +02:00
\subsection { Images autonomes, sans installation, avec accès en lecture seule}
2020-09-28 00:15:52 +02:00
2020-10-01 16:58:55 +02:00
\subsubsection { Amorçage sans gestion de persistance}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-04 23:21:50 +02:00
\item { \textbf { avantages} : démarrer sur un système autonome dans un état ayant été figé au préalable}
\item { \textbf { inconvénients} : perdre au redémarrage toutes modifications faites aux fichiers du système}
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-10-01 16:58:55 +02:00
\subsubsection { Amorçage avec gestion de persistance}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-05 20:10:56 +02:00
\item { \textbf { avantages} : conservation sur une partition marquée des fichiers modifiés depuis le démarrage}
2020-10-05 18:57:01 +02:00
\item { \textbf { inconvénients} : pas de séparation entre la persistance des fichiers systèmes et des données}
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-10-05 20:10:56 +02:00
\hr
2020-10-01 16:58:55 +02:00
\section { Proposition : fonctionnement autonome incrémental}
2020-09-28 00:15:52 +02:00
2020-10-04 22:59:10 +02:00
Mettre en œuvre un système d’exploitation hybride entre un système installé et un système autonome :\\
cumuler les avantages des deux, en images incrémentales ou complètes, sans les divers inconvénients.
2020-10-03 00:18:37 +02:00
2020-09-30 23:09:24 +02:00
\begin { itmz}
2020-10-05 23:04:11 +02:00
\item { \textbf { avantages} : redémarrage = restauration, mise à jour = sauvegarde, séparation système/données}
2020-10-05 23:53:40 +02:00
\item { \textbf { inconvénients} : maintenance exhaustive si effectuée régulièrement et d’une façon manuelle}
2020-09-30 23:09:24 +02:00
\end { itmz}
2020-10-05 20:10:56 +02:00
\subsection { Miroirs de dépôts officiels distribution et éditeurs}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-04 22:59:10 +02:00
\item { synchronisation locale pour accès rapide, stable et hors-ligne : \textbf { apt-mirror} , \textbf { debmirror} , \textbf { ftpsync} }
2020-10-05 23:44:08 +02:00
\item { vérification d’intégrité des dépôts locaux avant utilisation de leurs paquets logiciels synchronisés}
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-10-05 23:05:39 +02:00
\subsection { Construction d’un système de fichiers autonome (debian gnu/linux)}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-05 23:31:26 +02:00
\item { prise en compte du type de machine hôte pour le choix des paquets de base : physique, virtuelle}
\item { création d’un système de fichiers de base minimal à partir des dépôts locaux : \textbf { debootstrap} }
\item { intégration des paquets nécessaires à la construction d’autres systèmes autonomes, si besoin}
2020-10-03 00:18:37 +02:00
\item { transformation effective en système d’exploitation autonome : \textbf { live-boot} , \textbf { update-initramfs} }
\item { détermination des autres paquets logiciels à installer et à configurer, en fonction des besoins}
2020-10-05 20:10:56 +02:00
\item { déport des données à rendre persistantes, avec des liens symboliques pointant vers partition(s)}
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-10-03 00:18:37 +02:00
\subsection { Encapsulation dans un fichier image}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-05 18:26:10 +02:00
\item { utilisation d’un format de fichier amorçable adapté au montage en lecture seule : \textbf { squashfs} }
2020-10-05 23:31:26 +02:00
\item { choix d’un des divers algorithmes de compression disponibles : \textbf { gzip} , \textbf { lzma} , \textbf { lzo} , \textbf { lz4} , \textbf { xz} , \textbf { zstd} }
2020-10-05 18:26:10 +02:00
\item { niveau supplémentaire d’encapsulation avec un format de fichier amorçable hybride : \textbf { iso} }
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-10-03 00:18:37 +02:00
\subsection { Sécurité du fichier image produit}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-05 23:31:26 +02:00
\item { assurer l’intégrité du fichier final par le calcul d’une somme de contrôle : \textbf { sha256} , \textbf { sha512} }
\item { garantir l’authenticité de l’image grâce à une signature numérique associée au fichier : \textbf { gpg} }
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-10-05 23:31:26 +02:00
\subsection { Amorçage de fichier(s) image(s) sécurisé(s)}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-05 18:54:28 +02:00
\item { chargeur de démarrage avec gestion de signature numérique : \textbf { grub} , \textbf { bios} , \textbf { uefi} , \textbf { secure boot} }
2020-10-03 00:18:37 +02:00
\item { création d’un menu de démarrage à choix multiple d’images : \textbf { grub.cfg} , \textbf { squash4} , \textbf { iso9660} }
2020-10-05 23:31:26 +02:00
\item { vérification d’authenticité et d’intégrité de fichiers images : \textbf { gcry\_ sha256} , \textbf { gcry\_ sha512} , \textbf { pgp} }
\item { chargement d’image(s) en mémoire vive d’une machine hôte : complet, partiel avec \textbf { overlayfs} }
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-10-04 23:36:47 +02:00
\subsection { Mise à niveau incrémentale}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-05 23:31:26 +02:00
\item { fabrication d’une nouvelle image, à partir de la plus récente, pour le prochain redémarrage}
2020-10-05 00:20:30 +02:00
\item { si le redémarrage est différé, mise à jour du système d’exploitation actuellement en mémoire}
\item { si le redémarrage est nécessaire et critique, réduction de sa durée effective : \textbf { kexec-tools} }
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-10-28 08:20:02 +01:00
\hr
2020-10-05 23:31:26 +02:00
\section { Automatisations potentiellement implémentables}
2020-09-28 00:15:52 +02:00
\begin { itmz}
2020-10-05 23:31:26 +02:00
\item { vérification d’intégrité des dépôts, voire le processus de synchronisation, de façon parallélisée}
\item { construction de systèmes de fichiers autonomes complets, à partir de différents profils versionnés}
\item { création de nouveaux fichiers images, par la mise à jour d’images amorçables déjà existantes}
\item { génération à la volée de menus de démarrage, à choix multiples d’images amorçables détectées}
2020-09-28 00:15:52 +02:00
\end { itmz}
2020-09-26 01:33:37 +02:00
\end { document}