
La gestione della memoria virtuale rappresenta un aspetto importante nell’amministrazione di un sistema Linux. Quando la RAM disponibile non è sufficiente per sostenere tutte le applicazioni in esecuzione, il kernel può utilizzare lo spazio di swap per gestire temporaneamente i dati. In questo contesto, ZRAM e i tradizionali file o partizioni di swap offrono possibilità differenti per migliorare la gestione delle risorse disponibili.
XZram è un progetto open source pensato per semplificare queste operazioni attraverso un unico strumento dedicato alle distribuzioni Linux basate su systemd. Il software permette di creare, rimuovere e personalizzare diverse configurazioni di swap, offrendo un approccio centralizzato che combina strumenti da riga di comando, un’interfaccia grafica Qt6 e un servizio D-Bus opzionale.
L’obiettivo è mettere a disposizione degli amministratori di sistema e degli utenti Linux un sistema flessibile per controllare la memoria virtuale, senza dover intervenire manualmente su numerosi file di configurazione o utilizzare strumenti differenti per ogni operazione.
XZram: gestione completa di ZRAM, swap e parametri Sysctl
Uno degli aspetti più interessanti di XZram riguarda il supporto alle principali modalità di gestione della memoria virtuale. Il programma consente di configurare ZRAM attraverso systemd-zram-generator e supporta anche la migrazione dalle precedenti configurazioni basate su zram-tools.
Per quanto riguarda lo swap tradizionale, XZram permette di creare, ridimensionare e rimuovere file di swap presenti sul disco. Durante la gestione dei file su Btrfs viene applicata automaticamente la proprietà nodatacow, un accorgimento importante per garantire una configurazione compatibile con le caratteristiche di questo filesystem.
Il progetto include inoltre strumenti per individuare le partizioni di swap attive e quelle configurate in fstab, riunendo le informazioni in un’unica visualizzazione.
Tra le funzionalità disponibili troviamo:
- Diagnostica: i comandi status, detect e doctor permettono di controllare la configurazione senza privilegi amministrativi.
- Gestione ZRAM: configurazione attraverso systemd-zram-generator e migrazione dalle precedenti implementazioni.
- File di swap: creazione, ridimensionamento e rimozione delle aree di swap su disco.
- Partizioni swap: individuazione delle partizioni attive e di quelle presenti in fstab.
- Ottimizzazione Sysctl: regolazione di swappiness, watermark e page-cluster.
- Snapshot: creazione automatica di copie di sicurezza prima delle operazioni di applicazione delle modifiche.
Particolare attenzione è stata riservata alla sicurezza. Le operazioni che richiedono privilegi elevati vengono preparate attraverso un sistema di modifiche temporanee, salvate in /var/lib/xzram/pending.json. Il comando apply esegue successivamente le operazioni previste, seguendo un processo controllato.
L’integrazione con Polkit permette inoltre di gestire le autorizzazioni per le singole operazioni privilegiate, evitando di richiedere indiscriminatamente l’accesso completo tramite sudo.
Interfaccia Qt6, supporto alle distribuzioni Linux e installazione
XZram non è limitato al terminale. Il progetto mette a disposizione anche un’interfaccia grafica sviluppata utilizzando Qt6 Widgets, attraverso la quale è possibile controllare le principali impostazioni della memoria virtuale.
La GUI comprende una dashboard per visualizzare lo stato generale, sezioni dedicate a ZRAM, file di swap, parametri Sysctl, diagnostica, snapshot e impostazioni. Questa soluzione permette anche agli utenti meno abituati alla riga di comando di intervenire sulla configurazione del sistema attraverso un ambiente grafico.
Il progetto include inoltre un servizio D-Bus denominato xzramd, identificato dall’interfaccia io.github.XZram1. Il demone può essere utilizzato da applicazioni esterne e client che richiedono l’accesso alle funzionalità tramite D-Bus. L’attivazione può avvenire automaticamente su richiesta, mentre l’interfaccia grafica nativa può funzionare anche senza il servizio.
Un’altra caratteristica interessante riguarda l’integrazione con uQ. Sui sistemi che utilizzano questo ambiente è disponibile una pagina denominata Memory and swap, accessibile dalla sezione Apps. Questa schermata permette di consultare informazioni sull’utilizzo della memoria, sullo spazio ZRAM, sulla compressione, sul valore di swappiness e sulle aree di swap presenti.
Per quanto riguarda la compatibilità, XZram supporta pienamente diverse famiglie di distribuzioni:
- Fedora, RHEL e CentOS Stream.
- Debian, Ubuntu e distribuzioni derivate.
- Arch Linux, CachyOS e Manjaro.
- openSUSE, con rilevamento e supporto runtime.
Il supporto per Gentoo è invece parziale, mentre NixOS, Alpine Linux e le distribuzioni che non utilizzano systemd sono attualmente fuori dagli obiettivi della prima versione.
Per compilare il programma sono necessari Rust 1.87 o superiore, Cargo e un sistema Linux basato su systemd. Per installare anche l’interfaccia grafica occorrono CMake e le librerie di sviluppo Qt6.
Su Arch Linux e derivate sono richiesti i pacchetti qt6-base e cmake, mentre su Debian e Ubuntu servono qt6-base-dev, cmake e pkg-config. Fedora richiede invece qt6-qtbase-devel.
La disponibilità delle configurazioni di packaging comprende file dedicati a RPM, pacchetti Debian e PKGBUILD per Arch Linux. Per openSUSE il rilevamento è supportato, ma il packaging dedicato è ancora da definire.
XZram rappresenta quindi uno strumento interessante per chi desidera amministrare ZRAM e swap da un’unica applicazione, mantenendo la possibilità di scegliere tra terminale, interfaccia grafica e integrazione con altri programmi Linux. Abbiamo testato XZram su Arch Linux con ambiente desktop KDE Plasma 6.8.