Salta al contenuto principale

Bcachefs: dalla promessa al modulo DKMS. Cronaca di un’esclusione annunciata

Bcachefs: dalla promessa al modulo DKMS. Cronaca di un'esclusione annunciata

Bcachefs, il file system avanzato nato dalla mente di Kent Overstreet, ha vissuto una parabola tanto ambiziosa quanto turbolenta. Dopo anni di sviluppo e una breve permanenza nel ramo ufficiale del kernel Linux, oggi si ritrova escluso e mantenuto esternamente tramite DKMS (Dynamic Kernel Module Support) il sistema per compilare e installare moduli del kernel Linux fuori dall’albero principale di sviluppo del kernel Linux. Ma cosa è successo davvero?

Origini e ambizioni di Bcachefs

Bcachefs nasce come evoluzione del progetto Bcache, con l’obiettivo di offrire un file system moderno, robusto e performante per GNU/Linux. Le sue caratteristiche principali includono:

  • Copy-on-write (CoW): ogni modifica ai dati genera una nuova copia invece di sovrascrivere l’originale. Questo approccio aumenta l’affidabilità, semplifica la gestione degli snapshot e riduce il rischio di corruzione in caso di crash.
  • Snapshot e compressione trasparente: consente di creare istantanee del file system in qualsiasi momento, utili per backup o rollback. La compressione avviene in modo automatico e invisibile all’utente, riducendo lo spazio occupato senza impatto sulle prestazioni.
  • Checksum e crittografia nativa: ogni blocco di dati è verificato tramite checksum per rilevare errori o corruzioni. Inoltre, la crittografia è integrata direttamente nel file system, garantendo protezione dei dati senza dipendere da soluzioni esterne.
  • Prestazioni elevate: Bcachefs offre velocità comparabili a ext4, ma con funzionalità avanzate simili a quelle di Btrfs e ZFS, come gestione dei volumi, CoW, e snapshot. Questo lo rende adatto sia a sistemi desktop che server.

Dopo oltre un decennio di sviluppo, Bcachefs viene finalmente integrato nel kernel Linux 6.7, rilasciato a gennaio 2024.

La rottura con Linus Torvalds

L’integrazione di Bcachefs nel kernel Linux dura poco. Già durante lo sviluppo del kernel Linux 6.13, emergono tensioni tra Kent Overstreet e la comunità del kernel Linux, in particolare con Linus Torvalds. Quest’ultimo lamenta una gestione del codice poco collaborativa, con modifiche frequenti, non coordinate e talvolta instabili, che complicano il mantenimento del file system.

Il punto di rottura definitivo tra Kent Overstreet e la comunità del kernel Linux si verifica durante la fase di test del kernel Linux 6.16-rc4 (release candidate 4). In quel momento, Overstreet invia una pull request contenente nuove funzionalità, nonostante fosse già iniziato il periodo di code freeze, una fase critica in cui lo sviluppo del kernel Linux si concentra esclusivamente su correzioni di bug e stabilizzazione, e non si accettano più modifiche strutturali o nuove funzionalità.

Questa violazione delle regole consolidate del ciclo di sviluppo, in particolare della merge window (la finestra temporale iniziale in cui è consentito introdurre nuove funzionalità), viene vista da Linus Torvalds come un segnale di mancata collaborazione e di scarsa comprensione delle dinamiche del progetto.

Torvalds, pur accettando temporaneamente il codice per evitare rotture tecniche nel ramo di sviluppo, coglie l’occasione per annunciare pubblicamente la fine della collaborazione con parole inequivocabili:

Questa dichiarazione segna la fine del supporto ufficiale a Bcachefs nel kernel Linux. La comunicazione tra i 2 diventa, secondo Torvalds, “tossica e irrispettosa”, al punto da decidere la rimozione completa di Bcachefs dal kernel Linux a partire dalla versione del kernel Linux 6.17 attualmente in sviluppo e atteso per questo fine mese, settembre 2025.

La rinascita via DKMS

Con l’esclusione dall’albero principale dello sviluppo del kernel Linux, Kent Overstreet annuncia un cambio di rotta: Bcachefs sarà distribuito come modulo del kernel Linux esterno via DKMS. Questo approccio, già usato da driver come NVIDIA, consente:

  • Maggiore indipendenza dagli aggiornamenti del kernel Linux
  • Aggiornamenti più rapidi e flessibili
  • Possibilità di mantenere Bcachefs come file system disponibile, sopratutto per chi ha già deciso di adottarlo.

Distribuzioni GNU/Linux come openSUSE (in rete si legge anche di Debian e Ubuntu ma non ho trovato riscontri ufficiali in merito) ha disabilitato il supporto nativo a Bcachefs, rimuovendolo dai moduli integrati nel kernel Linux. Questo significa che non sarà più possibile utilizzare Bcachefs direttamente come file system precompilato e incluso nel kernel Linux fornito dalla distribuzione.

Tuttavia, il progetto continua a vivere grazie al supporto esterno tramite DKMS. Questo approccio consente:

  • A chi già utilizza Bcachefs di continuare ad accedervi e gestirlo senza dover migrare i dati, semplicemente installando il modulo DKMS compatibile con il proprio kernel Linux
  • A chi desidera provarlo, di installarlo manualmente compilando il modulo tramite DKMS e utilizzando il pacchetto bcachefs-tools, che resta disponibile nei repository software o compilabile da sorgente.

Il pacchetto bcachefs-tools permette la gestione in user-space del file system: operazioni come formattazione, montaggio, verifica dell’integrità, snapshot, e compressione possono essere eseguite anche senza supporto diretto nel kernel Linux, purché il modulo sia correttamente installato.

In sintesi, Bcachefs non è stato abbandonato: è passato da file system “ufficiale” del kernel Linux a modulo indipendente, mantenuto esternamente ma perfettamente funzionante per chi lo vuole adottare.

Il metodo DKMS: come funziona e perché è utile

DKMS (Dynamic Kernel Module Support) è un sistema pensato per gestire in modo flessibile i moduli kernel Linux esterni, cioè quei moduli che non fanno parte del sorgente ufficiale del kernel Linux. Il suo scopo è garantire che tali moduli restino compatibili con il kernel Linux anche dopo aggiornamenti, evitando rotture e ricompilazioni manuali.

Quando un modulo come Bcachefs viene distribuito tramite DKMS, il sistema si occupa di compilarlo automaticamente per la versione del kernel Linux attiva e di ricompilarlo ogni volta che il kernel Linux viene aggiornato. Questo avviene grazie a una struttura di script e regole che DKMS applica in fase di installazione e aggiornamento.

In pratica, l’utente può installare il modulo tramite il gestore di pacchetti (apt install bcachefs-dkms su Debian/Ubuntu), e DKMS provvederà automaticamente a compilarlo e integrarlo nel kernel Linux attivo, mantenendolo aggiornato anche dopo futuri upgrade. In pratica DKMS provvede a:

  • Compilare il modulo per il kernel Linux corrente usando i relativi header
  • Installarlo nella cartelle dei moduli caricabili (/lib/modules/...)
  • Registrarlo nel proprio database interno per monitorarne lo stato
  • Ricompilarlo automaticamente ogni volta che viene installato un nuovo kernel Linux

Questo meccanismo consente di mantenere il modulo funzionante e aggiornato, anche se non è incluso nel kernel Linux ufficiale. È una soluzione ideale per progetti come Bcachefs, che proseguono lo sviluppo in modo indipendente.

Va precisato che DKMS non richiede compilazione manuale da parte dell’utente, a meno che si voglia usare una versione non pacchettizzata o modificata. In tal caso, è comunque possibile intervenire con comandi come dkms build e dkms install.

In sintesi, DKMS offre un modo efficiente e automatizzato per gestire moduli kernel Linux esterni, riducendo la complessità tecnica e mantenendo la compatibilità anche in ambienti in continuo aggiornamento.

Considerazioni finali

La vicenda di Bcachefs è significativa: evidenzia quanto sia delicato l’equilibrio tra innovazione tecnica e collaborazione comunitaria all’interno del progetto kernel Linux Linux. Il file system non è stato abbandonato, ma è stato rimosso dall’albero principale del kernel Linux e ora prosegue come modulo esterno, mantenuto indipendentemente.

Per gli utenti, questo comporta maggiore libertà con la possibilità di installare e aggiornare il modulo in modo autonomo ma anche maggiore responsabilità, poiché la gestione richiede consapevolezza tecnica.

Questo approccio consente di mantenere compatibilità dinamica con versioni diverse del kernel Linux, senza dover intervenire manualmente, a meno che si voglia usare una versione non ancora pacchettizzata, nel qual caso si può procedere con la compilazione da sorgente.

Chi sceglie oggi di adottare Bcachefs lo fa in modo consapevole, puntando su un file system potente, ricco di funzionalità avanzate, ma non più integrato ufficialmente nel kernel Linux. E forse, proprio questa indipendenza, svincolata dalle regole e dai ritmi della linea principale, potrebbe rivelarsi la sua vera forza.

Fonte
https://www.laseroffice.it/blog/feed/