Aller au contenu

Gestion des sessions dans MiniOS 🔄 ​

🤔 Qu'est-ce qu'une session ? ​

Les sessions MiniOS offrent un stockage persistant de vos modifications, vous permettant de :

  • Sauvegarder les modifications effectuées pendant une session live
  • Reprendre votre travail là où vous l'avez laissé après un redémarrage
  • Gérer plusieurs environnements de travail distincts
  • Basculer entre différentes configurations

Les sessions utilisent la technologie Union Filesystem (AUFS ou OverlayFS) pour superposer les modifications au-dessus du système de base en lecture seule.


📋 Types et modes de session ​

Actions sur les sessions ​

  • resume - Continuer à partir de la dernière session utilisée (par défaut)
  • new - Créer une nouvelle session
  • ask - Sélection interactive de la session au démarrage
  • fresh - Sans persistance (session temporaire)

Modes de stockage ​

  • native - Stockage direct sur le système de fichiers (nécessite un système de fichiers POSIX : ext4, btrfs, xfs)
  • dynfilefs - Fichiers conteneurs extensibles (fonctionne sur tout système de fichiers, recommandé pour FAT32/NTFS/exFAT)
  • raw - Fichiers image de taille fixe (fonctionne sur tout système de fichiers)

🚀 Paramètres de démarrage pour le contrôle des sessions ​

Paramètres principaux des sessions ​

ParamètreValeursDescription
perch-Active la persistance des modifications
perchdirresume | new | ask | /pathAction ou dossier de session
perchmodenative | dynfilefs | rawMode de stockage
perchsize<size_in_MB>Taille initiale pour les modes conteneur/image

Structure du dossier de session ​

/minios/changes/
├── session.conf          # Session configuration (default format)
├── session.json          # JSON metadata (when jq is available)
├── 1/                     # Session #1 directory
├── 2/                     # Session #2 directory
└── N/                     # Session #N directory

🎛️ Intégration au bootloader ​

Configuration GRUB ​

MiniOS propose des entrées de menu GRUB préconfigurées pour différents modes de session :

bash
# Resume previous session
linux /minios/boot/vmlinuz... perchdir=resume

# Start new session  
linux /minios/boot/vmlinuz... perchdir=new

# Interactive session selection
linux /minios/boot/vmlinuz... perchdir=ask

# Fresh start (no persistence)
linux /minios/boot/vmlinuz...

Configuration SYSLINUX ​

Entrées SYSLINUX correspondantes :

bash
LABEL default
MENU LABEL Run MiniOS (Resume previous session)
APPEND ... perchdir=resume

LABEL perch
MENU LABEL Run MiniOS (Start a new session)  
APPEND ... perchdir=new

LABEL asksession
MENU LABEL Run MiniOS (Choose session during startup)
APPEND ... perchdir=ask

LABEL live
MENU LABEL Run MiniOS (Fresh start)
APPEND ...

🔧 Commandes de gestion des sessions ​

Utilisation du gestionnaire de sessions MiniOS (GUI) ​

bash
# Launch graphical session manager
minios-session-manager

Fonctionnalités :

  • Afficher toutes les sessions disponibles avec leurs métadonnées
  • Créer de nouvelles sessions avec différents modes
  • Activer/basculer entre les sessions
  • Supprimer les anciennes sessions
  • Nettoyer les sessions plus anciennes qu'un nombre de jours spécifié

Utilisation de minios-session (CLI) ​

⚠️ Privilèges administrateur requis :

L'outil en ligne de commande nécessite les droits root et les vérifie automatiquement. Exécutez les commandes avec sudo ou via pkexec :

bash
sudo minios-session list
# or
pkexec minios-session activate 3

Commandes de base : ​

bash
# List all sessions
sudo minios-session list

# Show currently active session (will boot next)
sudo minios-session active

# Show currently running session (current boot)
sudo minios-session running

# Check filesystem compatibility and session directory status
sudo minios-session info
sudo minios-session status

# Create new sessions (using positional arguments)
sudo minios-session create native
sudo minios-session create dynfilefs 2000
sudo minios-session create raw 2000

# Activate specific session
sudo minios-session activate 3

# Delete session
sudo minios-session delete 2

# Resize session (dynfilefs/raw modes only)
sudo minios-session resize 1 8000

# Export session to archive
sudo minios-session export 1 /path/to/backup.tar.zst

# Import session from archive
sudo minios-session import /path/to/backup.tar.zst
sudo minios-session import /path/to/backup.tar.zst dynfilefs  # with mode conversion

# Copy session with optional mode conversion
sudo minios-session copy 1 2              # copy keeping same mode
sudo minios-session copy 1 3 raw          # copy and convert to raw mode
sudo minios-session copy 1 4 native 3000  # copy, convert to native, set size

# Cleanup old sessions (older than 30 days)
sudo minios-session cleanup --days 30

Options avancées : ​

bash
# JSON output for automation (available for all commands)
sudo minios-session --json list
sudo minios-session --json info
sudo minios-session --json active
sudo minios-session --json running
sudo minios-session --json status
sudo minios-session --json create native
sudo minios-session --json activate 2
sudo minios-session --json delete 3
sudo minios-session --json cleanup --days 30
sudo minios-session --json resize 1 8000
sudo minios-session --json export 1 backup.tar.zst
sudo minios-session --json import backup.tar.zst
sudo minios-session --json copy 1 2 native

# Custom sessions directory
sudo minios-session --sessions-dir /custom/path list
sudo minios-session --sessions-dir /mnt/usb/sessions create native

Principales différences de commandes : ​

  • active - Affiche la session qui sera utilisée au prochain démarrage
  • running - Affiche la session actuellement utilisée (le cas échéant)
  • resize - Modifier la taille de la session (seulement pour les modes dynfilefs/raw)
  • export - Exporter la session vers une archive .tar.zst pour sauvegarde
  • import - Importer une session depuis une archive avec conversion de mode optionnelle
  • copy - Copier une session avec conversion de mode optionnelle
  • info - Vérifier la compatibilité du système de fichiers et recommandations

📦 Sauvegarde et migration des sessions ​

Exporter des sessions ​

Exportez les sessions vers des archives compressées pour sauvegarde ou transfert :

bash
# Export session to archive
sudo minios-session export 1 /backup/session1.tar.zst

# Export with JSON output
sudo minios-session --json export 2 /backup/session2.tar.zst

Fonctionnalités :

  • Crée une archive compressée .tar.zst
  • Préserve toutes les données et métadonnées de session
  • Peut être importée sur n'importe quel système MiniOS
  • Compression automatique pour optimiser l'espace

Importer des sessions ​

Importez des sessions depuis des archives avec conversion de mode optionnelle :

bash
# Import session keeping original mode
sudo minios-session import /backup/session1.tar.zst

# Import and convert to different mode
sudo minios-session import /backup/session1.tar.zst dynfilefs
sudo minios-session import /backup/session2.tar.zst raw
sudo minios-session import /backup/session3.tar.zst native

# Import with JSON output
sudo minios-session --json import /backup/session.tar.zst

Fonctionnalités :

  • Restaure les données de session depuis une archive
  • Convertit automatiquement entre les modes de stockage si précisé
  • Ignore les fichiers existants pour éviter toute perte de données
  • Crée automatiquement un nouveau numéro de session

Copier et convertir des sessions ​

Copiez des sessions entre différents modes de stockage :

bash
# Copy session keeping same mode
sudo minios-session copy 1 2

# Copy and convert to different mode
sudo minios-session copy 1 3 raw           # convert to raw mode
sudo minios-session copy 1 4 dynfilefs     # convert to dynfilefs
sudo minios-session copy 1 5 native        # convert to native

# Copy with custom size (for raw/dynfilefs)
sudo minios-session copy 1 6 raw 4000      # 4GB raw image
sudo minios-session copy 2 7 dynfilefs 2000 # 2GB dynfilefs

Conversions prises en charge :

  • native ⇄ dynfilefs ⇄ raw
  • Toutes les combinaisons de modes sont supportées
  • Gestion automatique de la taille
  • Préserve les données de session lors de la conversion

Cas d'usage :

  • Migrer de FAT32 vers ext4 (dynfilefs → native)
  • Créer des sessions portables (native → dynfilefs/raw)
  • Optimiser pour différents systèmes de fichiers
  • Sauvegarder des sessions avec différents modes

🏗️ Détail des modes de stockage de session ​

Mode natif ​

Idéal pour : Systèmes sur des systèmes de fichiers POSIX (ext4, btrfs, xfs)

bash
# Enable native mode
perchmode=native

Caractéristiques :

  • Accès direct au système de fichiers sans conteneur
  • Conformité POSIX totale (liens physiques, permissions, attributs étendus)
  • Meilleures performances parmi tous les modes
  • Exigences : Système de fichiers compatible POSIX (ext4, btrfs, xfs)
  • Non compatible : FAT32, NTFS, exFAT

Mode DynFileFS ​

Idéal pour : Systèmes de fichiers non POSIX (FAT32, NTFS, exFAT)

bash
# Enable dynfilefs mode with initial size
perchmode=dynfilefs perchsize=2000

Caractéristiques :

  • Conteneur extensible avec un système de fichiers ext4 à l'intérieur
  • S'agrandit automatiquement selon l'espace disponible
  • Fonctionne sur tout type de système de fichiers
  • Légère surcharge de performance par rapport au natif
  • Taille par défaut : 1000 Mo, expansion dynamique
  • Recommandé pour : systèmes de fichiers FAT32, NTFS, exFAT

Mode Raw ​

Idéal pour : Besoins de taille fixe sur tout système de fichiers

bash
# Enable raw mode with fixed size
perchmode=raw perchsize=2000

Caractéristiques :

  • Image de taille fixe avec système de fichiers ext4 à l'intérieur
  • Utilisation disque prévisible et constante
  • Fonctionne sur tout type de système de fichiers
  • Taille à spécifier lors de la création
  • Taille par défaut : 1000 Mo si non spécifié
  • Cas d'usage : Sessions portables, quotas de stockage, allocation d'espace prévisible

🗂️ Métadonnées de session et compatibilité ​

Formats des métadonnées de session ​

Format par défaut (session.conf) :

bash
default=2
session_mode[1]=native
session_version[1]=5.0.0
session_edition[1]=standard
session_union[1]=overlayfs
session_mode[2]=dynfilefs
session_version[2]=5.0.0
session_edition[2]=standard
session_union[2]=overlayfs

Format JSON (si jq est disponible) :

json
{
  "default": "2",
  "sessions": {
    "1": {
      "mode": "native",
      "version": "5.0.0",
      "edition": "standard",
      "union": "overlayfs"
    },
    "2": {
      "mode": "dynfilefs", 
      "version": "5.0.0",
      "edition": "standard",
      "union": "overlayfs"
    }
  }
}

Remarque : MiniOS détecte automatiquement si jq est disponible et utilise le format JSON quand c'est possible, sinon il revient au format conf traditionnel.

Vérification de la compatibilité ​

MiniOS vérifie automatiquement la compatibilité des sessions :

  • Incompatibilité de version - Crée une nouvelle session si la version de MiniOS diffère
  • Incompatibilité d'édition - Crée une nouvelle session si l'édition diffère (standard/toolbox/ultra)
  • Incompatibilité Union FS - Crée une nouvelle session si le système de fichiers union diffère (aufs/overlayfs)
  • Changement de mode - Crée une nouvelle session si le mode de stockage change

Système d’avertissement ​

Lors de la sélection de sessions incompatibles, MiniOS affiche des avertissements :

  • Avertissements d’incompatibilité de version
  • Notifications de différence d’édition
  • Problèmes de compatibilité du système de fichiers union
  • Option de continuer à vos risques et périls

🎯 Configuration avancée des sessions ​

Emplacements personnalisés pour les sessions ​

bash
# Specify custom session directory
perchdir=/dev/sda2/my-sessions

# Use labeled partition  
perchdir=label:MYSESSIONS/work

# Interactive disk selection
perchdir=askdisk

Gestion de la taille des sessions ​

bash
# Auto-size for dynfilefs (uses 90% of available space)
perchmode=dynfilefs perchsize=0

# Fixed size for any mode
perchsize=8000  # 8GB

# Size limits per filesystem:
# - FAT32: Maximum 4095MB (4GB limit)
# - Others: Limited by available space

Gestion automatique des sessions ​

bash
# Resume last session (default behavior)
perchdir=resume

# Force new session creation
perchdir=new

# Interactive session management
perchdir=ask

🛠️ Dépannage des sessions ​

Problèmes courants ​

Session introuvable ​

bash
# Check session directory
ls -la /minios/changes/

# Verify session metadata  
cat /minios/changes/session.conf
# or if JSON format is used:
cat /minios/changes/session.json

Problèmes de permissions ​

bash
# Check directory permissions
ls -ld /minios/changes/

# Verify filesystem mount options
mount | grep changes

Échecs du mode de stockage ​

bash
# Native mode falls back to dynfilefs automatically
# Check system logs for details
sudo minios-session status
sudo minios-session info  # Show filesystem compatibility

Récupération de session ​

bash
# List all sessions and their status
sudo minios-session list

# Check session integrity and filesystem info
sudo minios-session status
sudo minios-session info

# Show active vs running session status
sudo minios-session active
sudo minios-session running

# Create new session if corrupted
sudo minios-session create native

Nettoyage des sessions ​

bash
# Remove sessions older than 30 days
sudo minios-session cleanup --days 30

# Delete specific session (safe method)
sudo minios-session delete 3

# Manual session removal (advanced users only)
sudo rm -rf /minios/changes/session_number/

📊 Bonnes pratiques pour les sessions ​

Choisir les modes de stockage ​

  • Mode natif : À utiliser lorsque MiniOS est sur un système de fichiers POSIX (ext4, btrfs, xfs) – meilleures performances
  • Mode DynFileFS : À privilégier pour les systèmes de fichiers FAT32, NTFS, exFAT – gestion automatique de l’espace
  • Mode brut : À utiliser lorsque vous avez besoin d’une taille fixe sur n’importe quel système de fichiers – occupation disque prévisible

Planification de la taille ​

  • Petites sessions : 1-2 Go pour des modifications de configuration basiques
  • Développement : 4-8 Go pour des environnements de développement
  • Charges lourdes : 8 Go+ pour des installations logicielles importantes

Gestion des sessions ​

  • Nettoyez régulièrement les anciennes sessions
  • Utilisez des noms de session explicites en gestion manuelle
  • Surveillez l’utilisation de l’espace disque
  • Conservez au moins une session stable connue pour la récupération

Optimisation des performances ​

  • Utilisez le mode natif lorsque possible pour de meilleures performances
  • Placez le stockage des sessions sur des supports rapides
  • Privilégiez un SSD pour les sessions fréquemment utilisées