\documentclass[10pt]{article}

\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}}

\begin{document}

CNAM / UAMM91 \hfill Mémoire ingénieur / Sujet (version n°1) \hfill IRSM (CYC9104A)

Marc Beninca \hfill \textbf{Systèmes d’exploitation autonomes incrémentaux} \hfill 2020 → 2021

\section{Problématique : maintenance des systèmes d’exploitation}

En fonction des cas d’utilisation, maintenir des systèmes d’exploitation nécessite de penser :\\
mises à jour, indisponibilité, sauvegardes, tests, instantanés, restaurations, recettes de configuration.

\subsection{Systèmes de fichiers, installés sur partitions, avec accès en écriture}

\subsubsection{Système de fichiers conventionnel : ext4}

\begin{itmz}
\item{\textbf{avantages} : instantanéité des modifications apportées aux fichiers du système}
\item{\textbf{inconvénients} : nécessité de régulièrement réaliser et tester des sauvegardes du système}
\end{itmz}

\subsubsection{Système de fichiers géré par des recettes de configuration : ansible, chef, puppet}

\begin{itmz}
\item{\textbf{avantages} : possibilité de remettre rapidement en état des pans entiers du système}
\item{\textbf{inconvénients} : pas de résolution des écarts de configuration non gérés par les recettes}
\end{itmz}

\subsubsection{Système de fichiers avec gestion d’instantanés : btrfs, zfs}

\begin{itmz}
\item{\textbf{avantages} : permet de sauvegarder et restaurer un état des fichiers du système à un instant}
\item{\textbf{inconvénients} : réduit progressivement l’espace utilisable, pas encore utilisé par défaut}
\end{itmz}

\subsection{Images autonomes, sans installation, avec accès en lecture seule}

\subsubsection{Amorçage sans gestion de persistance}

\begin{itmz}
\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}
\end{itmz}

\subsubsection{Amorçage avec gestion de persistance}

\begin{itmz}
\item{\textbf{avantages} : conservation sur une partition marquée des fichiers modifiés du système}
\item{\textbf{inconvénients} : pas de séparation entre persistance de fichiers systèmes et de données}
\end{itmz}

\section{Proposition : fonctionnement autonome incrémental}

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.

\begin{itmz}
\item{\textbf{avantages} : redémarrage = restauration, mise à jour = sauvegarde, système ≠ données}
\item{\textbf{inconvénients} : maintenance exhaustive si effectuée régulièrement de façon manuelle}
\end{itmz}

\subsection{Fabrication}

\subsubsection{Miroirs de dépôts officiels distribution et éditeurs}

\begin{itmz}
\item{synchronisation locale pour accès rapide, stable et hors-ligne : \textbf{apt-mirror}, \textbf{debmirror}, \textbf{ftpsync}}
\item{vérification d’intégrité des dépôts locaux avant utilisation des paquets synchronisés}
\end{itmz}

\subsubsection{Construction d’un système de fichiers}

\begin{itmz}
\item{prise en compte du type de machine hôte pour les paquets de base : physique, virtuelle, conteneur}
\item{création d’un système de fichiers de base minimal de système d’exploitation : \textbf{debootstrap}}
\item{intégration des paquets nécessaires à la construction de systèmes autonomes, si besoin}
\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}
\end{itmz}

\subsection{Encapsulation dans un fichier image}

\begin{itmz}
\item{utilisation d’un format de fichier adapté au montage en lecture seule : \textbf{squashfs}}
\item{algorithmes de compression des données disponibles : \textbf{gzip}, \textbf{lzma}, \textbf{lzo}, \textbf{lz4}, \textbf{xz}, \textbf{zstd}}
\item{niveau supplémentaire d’encapsulation avec un format de fichier hybride : \textbf{iso}}
\end{itmz}

\subsection{Sécurité du fichier image produit}

\begin{itmz}
\item{assurer l’intégrité du fichier par le calcul d’une somme de contrôle : \textbf{sha256}, \textbf{sha512}}
\item{garantir l’authenticité de l’image par une signature du fichier produit : \textbf{gpg}}
\end{itmz}

\subsection{Amorçage de fichier d’encapsulation}

\begin{itmz}
\item{chargeur de démarrage avec signature numérique : \textbf{grub}, \textbf{bios}, \textbf{uefi}, \textbf{secure boot}}
\item{création d’un menu de démarrage à choix multiple d’images : \textbf{grub.cfg}, \textbf{squash4}, \textbf{iso9660}}
\item{vérification d’authenticité et d’intégrité des images : \textbf{gcry\_sha256}, \textbf{gcry\_sha512}, \textbf{pgp}}
\item{chargement d’image(s) dans la mémoire vive : complet, partiel avec \textbf{overlayfs}}
\end{itmz}

\subsection{Mise à niveau incrémentale}

\begin{itmz}
\item{fabrication d’une nouvelle image, à partir de la dernière, pour le prochain redémarrage}
\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}}
\end{itmz}

\section{Scripts d’automatisation potentiels}

\begin{itmz}
\item{vérification d’intégrité des dépôts, voire synchronisation locale, de façon parallélisée}
\item{construction de systèmes de fichiers complets à partir de différents profils versionnés}
\item{création de nouveaux fichiers images, par mise à jour à partir d’images existantes}
\item{génération à la volée de menu de démarrage, à choix d’images amorçables multiples}
\end{itmz}

\hr

\appendix

\section{Contexte professionnel}

En tant que militaire engagé de carrière, depuis 19 ans envers le Ministère des Armées, je travaille :
\begin{itmz}
\item{depuis 2001 pour le corps des sous-officiers de l’actuelle Armée de l’Air et de l’Espace}
\item{depuis 2016 sous la Direction Interarmées des Réseaux d’Infrastructure et Systèmes d’Information}
\end{itmz}

\subsection{Restrictions diverses}

\begin{itmz}
\item{interdiction statutaire d’exercer simultanément une autre activité professionnelle}
\item{pas de droits d’administration sur le gestionnaire de l’infrastructure virtuelle distante}
\item{stations de travail locales sans virtualisation, administrées par une entité extérieure}
\item{ordinateurs portables réquisitionnés pour le personnel exerçant son activité en télétravail}
\end{itmz}

\subsection{Propriété intellectuelle}

\begin{itmz}
\item{tout développement effectué sur le temps de travail devient de fait la propriété du Ministère}
\item{le mode de fonctionnement proposé a un champ d’application plus large que celui de mon emploi}
\item{une solution d’automatisation aurait ainsi bien plus de portée en étant publiée sous licence libre}
\end{itmz}

\section{Cadre de production du mémoire ingénieur}

Compte tenu des différentes circonstances énoncées ci-dessus :\\
⇒ m’est-il possible de conduire la réalisation de mon mémoire ingénieur « Hors Temps de Travail » ?

\end{document}
