
1. Objectifs du Projet
Ce projet vise à fournir un outil simple, robuste et pédagogique pour optimiser la gestion de la mémoire sur les systèmes Linux, en particulier pour les configurations type Raspberry Pi 5.

Fonctionnalités Clés
- Gestion du Swapfile : Création, redimensionnement et sécurisation d’un fichier d’échange.
- Support Zram : Installation et configuration transparente de la compression RAM (zram-tools).
- Réglage Swappiness : Ajustement de la priorité d’utilisation du swap.
- Sécurité : Sauvegardes automatiques des fichiers système, mode simulation (
--dry-run), et restauration facile. - Accessibilité :
- Interface en ligne de commande (CLI) pour l’automatisation.
- Interface graphique (GUI) en mode sombre avec explications pédagogiques pour les débutants.
2. Architecture et Fichiers
Le projet est composé de deux scripts principaux Python :
A. config_swap.py (Backend & CLI)
C’est le cœur du système. Il contient la classe SystemConfigurator qui gère toute la logique métier.
- Rôle : Exécuter les commandes système (
mkswap,swapon,apt,sysctl), gérer les fichiers de configuration (/etc/fstab,/etc/sysctl.conf) et assurer les sauvegardes. - Dépendances :
os,sys,argparse,subprocess,shutil,logging.
B. swap_gui.py (Frontend)
Interface graphique utilisateur basée sur Tkinter.
- Rôle : Offrir une interface visuelle, afficher le monitoring, et lancer les opérations du backend dans des threads séparés pour ne pas geler l’interface.
- Fonctionnalités :
- Thème sombre personnalisé.
- Persistance de la position de la fenêtre (
window_config.json). - Module d’aide intégré.
- Redirection des logs vers la fenêtre.
C. Fichiers Générés
window_config.json: Sauvegarde automatique de la géométrie de la fenêtre GUI.*.bak: Copies de sauvegarde des fichiers système modifiés (ex:/etc/fstab.bak).
3. Dépendances et Pré-requis
Système
- OS : Linux (Testé sur Debian/Raspberry Pi OS).
- Droits Root : Nécessaires pour appliquer les changements (
sudo).
Outils Système Requis
Le script vérifie la présence de ces outils au démarrage :
fallocate: Allocation d’espace disque.mkswap,swapon,swapoff: Gestion du swap.sysctl: Configuration du noyau.systemctl: Gestion des services.apt: Gestionnaire de paquets (pour installerzram-tools).
Bibliothèques Python
- Standard Library (Aucune installation pip requise) :
tkinter,argparse,logging,subprocess,json,shutil. - Note : Sur certains systèmes Linux minimaux, Tkinter doit être installé via
sudo apt install python3-tk.
4. Mode Opératoire
Utilisation via l’Interface Graphique (Recommandé)
Lancez l’interface avec les droits d’administration :
sudo python3 swap_gui.py
- Réglage : Utilisez les curseurs pour définir la taille du swap, le pourcentage de Zram et la Swappiness.
- Compréhension : Cliquez sur le bouton « ? » pour lire le guide pédagogique.
- Application : Cliquez sur « APPLIQUER LA CONFIGURATION ». Suivez le journal d’opérations en bas de la fenêtre.
- Annulation : Utilisez « Restaurer Défaut » pour revenir à la configuration précédente (via les backups) ou « Désinstaller Tout » pour nettoyer le système.
Utilisation via la Ligne de Commande (CLI)
Idéal pour les scripts de déploiement ou l’administration à distance.
Aide et Options :
python3 config_swap.py --help
Exemple d’installation automatique :
sudo python3 config_swap.py --swap-size 8 --zram-percent 50 --swappiness 10 --yes
Mode Simulation (Dry-Run) :
Visualiser les actions sans rien modifier :
python3 config_swap.py --dry-run
Maintenance et Nettoyage :
- Restaurer les fichiers de config :
sudo python3 config_swap.py --restore - Tout désinstaller :
sudo python3 config_swap.py --uninstall
5. Maintenance et Dépannage
Logs
Le script utilise le module logging.
- En CLI : Les logs sont affichés dans la console.
- En GUI : Les logs sont redirigés vers la zone de texte en bas de la fenêtre.
Gestion des Erreurs
- Fichiers Lock : Si
aptest verrouillé, le script échouera lors de l’installation de zram. Vérifiez qu’aucune mise à jour n’est en cours. - Permissions : Le script vérifie
geteuid() == 0. Sans sudo, il passe en mode lecture seule (ou échoue pour les actions critiques).
Procédure de Restauration Manuelle
En cas de problème grave empêchant le script de fonctionner :
- Les sauvegardes sont situées à côté des fichiers originaux avec l’extension
.bak. - Copiez
/etc/fstab.bakvers/etc/fstab. - Copiez
/etc/sysctl.conf.bakvers/etc/sysctl.conf(ou supprimez/etc/sysctl.d/99-swappiness.conf). - Redémarrez.
6. Améliorations Possibles
Pour faire évoluer le projet, voici quelques pistes :
- Compatibilité Multi-Distro : Remplacer
aptpar une abstraction supportantdnf,pacman, etc. pour Fedora/Arch. - Service Systemd : Créer un service one-shot qui vérifie et réapplique la configuration au démarrage (bien que fstab et sysctl soient persistants, cela assurerait l’intégrité).
- Packaging : Créer un paquet
.debpour une installation facile viadpkg -i. - Monitoring Avancé : Ajouter un graphique historique de l’utilisation RAM/Swap dans le GUI (avec
matplotlibpar exemple, mais cela ajouterait une dépendance lourde). - Internationalisation (i18n) : Sortir les textes (français) dans des fichiers de langue pour supporter l’anglais.