**Fiche en cours de rédaction.** **Ne pas se fier à ce qui est écrit.** ====== Créer un live system persistant pour MX Linux sur une clé USB ====== ===== Cas d'utilisation ===== Je souhaite disposer d'une clé USB bootable (Live-USB) sur laquelle certaines informations pourront être conservées, entre deux démarrages. Cette expression de besoin est cependant beaucoup trop vague pour déboucher sur une fiche pratique indiquant la marche à suivre. Je vais donc réduire le champs des possibles à trois cas d'utilisation réels((Trois besoins réels auxquels j'ai eu à répondre.)) : - un Live-USB muni d'une partition de données indépendante et accessible depuis n'importe quel appareil muni d'un port USB (ordi, box-TV, NAS, etc.) et fonctionnant avec son propre système, - un Live-USB de dépannage, à jour des mises à jour de sécurité du système, - un ordi sur une clé USB. ==== Live-USB de dépannage ==== Une limite classique des Live-USB est que le système qui y figue est immuable, figé à l'état du fichier ISO d'installation ayant servi à le créer. Une fois le Live-USB démarré, on peut faire des mises à jour du système, mais elles disparaissent à chaque extinction redémarrage. De plus, ces mises à jours temporaires réclament une connexion réseau qui n'est pas forcément disponible ni souhaitable (compromission). La réponse classique consiste à recréer une clé USB immuable, en utilisant la dernière version du fichier ISO d'installation. C'est long, répétitif((Il faut le faire à chaque démarrage.)) et pas forcément faisable((Il faudrait disposer d'un ordi sûr, muni d'un port USB et disposant d'une connexion internet fiable et performante.)). Le besoin peut s'exprimer sous la forme suivante : enregistrer sur la clé USB les mises à jour du système que l'on aura effectuées au cours de la session de telle sorte que ces mises à jour soient automatiquement chargées lors d'un redémarrage. Nous verrons que ce but peut être atteint à l'aide de deux techniques. La première consiste à créer une partition (accessible en lecture/écriture) où sont enregistrées ces mises à jour. Lors du démarrage du Live-USB, ces mises à jour sont chargées en lieu et place de la version immuable qui figurait dans le fichier ISO initial. La seconde consiste à écraser la version immuable en la remplaçant par les mises à jour. C'est comme si on recréait un nouveau Live-USB en fusionnant l'ancien système et les mises à jour, sans avoir à télécharger l'intégralité d'un nouveau système. Cette opération un peu particulière est appelée "Remasterisation". ===== Réalisations ===== ==== Démarrage ==== Pour avoir accès aux outils de création et de gestion d'un Live-USB MX persistant il faut déjà disposer d'un ordi tournant sous MX. C'est bien gentil mais comment fait-on si l'ordi qu'on a sous la main ne tourne pas sous MX Linux ? C'est à cette question que répond cette section. Le but est de se ramener à une situation nominale de départ où l'ordi qu'on a sous la main fonctionne avec un système MX Linux démarré depuis une clé USB. Le pré-requis est de disposer d'un ordi muni d'un port USB, d'une connexion à internet, d'une clé USB et que le BIOS/UEFI de l'ordi permet de le démarrer depuis une clé USB. Peu importe le système d'exploitation sur lequel fonctionne habituellement l'ordi. On commence donc par fabriquer un Live-USB classique, non persistant. N'importe quel système moderne permet de le faire. C'est brièvement documenté sur [[https://mxlinux.org/download-links/|la page de téléchargement de MX]]. - Télécharger le fichier ISO de la version de MX qu'on veut installer((Dans la procédure présentée ici, cette version soit être compatible avec l'ordinateur présentement utilisé. Par exemple, si c'est un ordi muni d'un processeur à architecture 64 bit (resp. 32 bits) il faudra choisir une version x64 (resp. 386). Aussi surprenant que ça puisse paraître, il sera possible de produire un Live-USB persistant à destination de l'autre architecture. Cette variante n'est cependant pas traitée dans cette fiche.)) sur la clé USB - L'installer sur la clé USB (effacera tout le contenu de la clé) avec les outils disponibles sur le système dont on dispose * par exemple, sous Debian :dd bs=4M if=MX-23.3_x64.iso of=/dev/sde && sync À ce stade on dispose d'un Live-USB immuable, comme s'il s'agissant d'un Live-DVD-R. Il ne reste plus qu'à redémarrer l'ordi sur cette clé USB pour atteindre la situation nominale visée : l'ordi fonctionne sous MX Linux, démarré à partir de la clé. ===== Extensions ===== ==== Mode frugal ==== Le configuration et le fonctionnement du Live System en mode "frugal" permet d'économiser la mémoire vive de l'ordinateur sur lequel il tourne. En effet, un Live-USB crée des systèmes de fichiers en mémoire vive où il implante une « copie » vivante du système stocké sur la clé. Trivialement dit, une partie de la mémoire vive est utilisée comme un disque interne. === Variante USB Live === Une part important de ce qui figure dans ces systèmes de fichiers pourrait être implantée dans une ou plusieurs partitions dédiée la clé USB. Ces partitions n'affectent pas le Live System présent sur la clé USB. Leur contenu est écrasé à chaque session. La mémoire vive en sera délestée du rôle de stockage et pourra être utilisée pour exécuter les programmes (système ou applications) comme cela se passe sur un ordi démarrer normalement. L'avantage étant de libérer de la mémoire, le mode frugal n'a d'intérêt que si la mémoire est une ressource en tension au regard de ce que ce que l'on veut faire sur l'ordi démarré depuis le Live-USB((Les attentes ne sont pas les mêmes si notre Live-USB est prévu pour fournir un ordi sur une clé, ou un outil de dépanne du système.)). L'inconvénient étant que la mémoire vive est un support de stockage autrement plus rapide, en lecture comme en écriture, qu'une clé USB, on sera très attentives aux performances de la clé qu'on utilisera pour y installer un Live-USB. Si l'on souhaite utiliser le mode frugal, on sera donc particulièrement attentive aux performances de la clé servant de Live-USB. === Variante disque interne === Dans cette variante, c'est une partition d'un des disques de l'ordinateur qui est utilisée. Elle a son intérêt mais elle sort du cadre d'un Live USB qui tourne sur un ordi sans rien modifier sur cet ordi((À l'exception de la mémoire vive, volatile par essence.)). ===== Notions de persistance ===== ==== USB-DATA ==== Une manière commune de conserver des fichiers sur un LiveUSB et de créer une partition séparée. Cette partition "DATA-USB"((Ou tout autre nom qu'on voudra lui donner.)) est formatée comme on le souhaite. Elle pourra être utilisée sur n'importe quel ordi, système, box-TV, où l'on branchera le LiveUSB, comme on le ferait avec un clé USB ordinaire. Cette partition DATA-USB cohabitant une même clé avec le Live System,les fichiers qui y sont stockés seront disponibles sur tout ordi démarré depuis le Live System aussi bien que depuis un équipement démarré depuis son propre système (autre ordi, box-TV, serveur de fichier, etc…) Tout se passe comme si on disposait de 2 clés USB indépendantes, avec la facilité de les transporter ensemble et de ne consommer qu'un port USB pour brancher les deux. D'un côté un Live System en lecture seule. De l'autre une partition de données en lecture/écriture. Dans cette approche, le Live System est immuable. Toute configuration système ou utilisatrice, tout paquetage installé, toute mise à jour système ou applicative est perdue lorsqu'on redémarre le Live System. Seules seront conservées les fichiers qu'on aura pris soin de placer sur la partition DATA-USB. Ça peut être exactement ce que l'on souhaite mais on peut vouloir plus. ==== Persistance Live System ==== Classiquement, un Live System crée un ou plusieurs systèmes de fichiers en mémoire vive (RAM), y installe le système contenu sur la clé USB((Ou le CDROM.)) de même que les répertoires des utilisatrices. Toute création, mise à jour ou modification se fait en mémoire vive. Fort logiquement, lorsqu'on redémarre ou étient l'ordi, tout ce que l'on a fait est perdu. D'un démarrage sur l'autre, on peut souhaiter conserver tout ou partie de : * la configuration de démarrage du système depuis la clé (des choses aussi simples que langue et le clavier) * les données enregistrées les répertoires d'utilisatrice * les données enregistrées dans le répertoire de root * des paramètres de configuration du système * des paquetages nouveaux ou mis à jour * des noyaux système (kernel) et de firmwares On peut même vouloir disposer d'un "ordi-sur-clé" que l'on démarrera sur n'importe quel ordinateur physique disponible et où on retrouvera son système et ses données, telles qu'on les a laissées, la dernière fois qu'on a arrêté le système. Ce sous-cas d'utilisation est traité plus loin. ==== Support de persistance ==== Lorsqu'un LiveUSB est utilisé comme système de dépannage, on tient absolument à ce qu'il ne laisse aucune trace sur l'ordi-système que l'on dépanne. La persistance des informations du Live System doit donc impérativement se faire sur la clé USB elle-même((Toute éventuelle modification de ce qui préexiste sur l'ordi dépanné doit résulter d'une action réparatrice délibérée et ciblée.)). Dans d'autres circonstances, les modifications apportées au Live System ne présentent d'intérêt que pour un ordinateur particulier ; par exemple pour exploiter sa carte graphique. Typiquement, cela peut conduire à installer un noyau adapté pour cet ordinateur mais inadapté pour un autre. Dans ce cas, on voudrait que la persistance des modifications apportées au Live System initial soit obtenue par enregistrement sur l'ordi concerné. De manière certes limitée, ces deux exemples illustrent l'intérêt à avoir le choix du support via lequel s'effectue la persistance. ==== Terminologie ==== Comme je l'ai fait ici à propos de clés USB, le terme "persistance" est utilisé pour décrire l'existence d'une partition autonome de données (USB-DATA) et sauvegarde de modifications apportées au Live System. Beaucoup considèrent que la création d'une partition autonome de données est un problème classique de partitionnement ne soulevant aucune question spécifique de conservation au regard d'un liveUSB. C'est pourquoi le terme //persistance// est souvent réservé aux problématiques propres aux Live Systems. Ainsi, //MX Linux// définit la persistance comme :«//la capacité, lors de l'exécution d'un LiveUSB, de conserver les modifications apportées au cours d'une session en direct//» ([[https://mxlinux.org/manuals/|Manuel d'utilisation de MX Linux]]). ===== Choix de persistance ===== L'USB-DATA et la persistance Live System renvoient à des classes d'utilisation très différentes. On peut les combiner sur une même clé. D'un côté une partition USB-DATA indépendante du Live System. De l'autre un Live System assurant une certaine persistance. Il reste à voir comment ça se fait, techniquement, mais d'un point vue logique, c'est assez simple. La principale difficulté se trouve dans la configuration de persistance du Live system.