SquashFS HOWTO

Diario delle Revisioni
Revisione 1.806/01/2008Revisionato da:
Cambiamenti per la versione 3.3 di squashfs. Aggiunta di alcune parti.
Revisione 1.725/03/2005Revisionato da:
Cambiamenti per la versione 2.1 di squashfs.
Revisione 1.610/11/2004Revisionato da:
Cambiamenti per la versione 2.0 di squashfs. Correzioni nel testo.
Revisione 1.507/06/2004Revisionato da:
Cambiamenti per la versione 2.0 alpha di squashfs. Chiarimenti e molte descrizioni migliorate. Instruzioni separate per le serie 2.6 (nuove) e 2.4 del kernel Linux.
Revisione 1.122/05/2004Revisionato da:
Cambiamenti per la versione 1.3r3 di squashfs.
Revisione 1.019/02/2004Revisionato da:
Rilascio iniziale, revisionato da LDP.
Revisione 0.208/12/2003Revisionato da:
Correzioni nel testo. Aggiunta la Licenza
Revisione 0.124/11/2003Revisionato da:
Versione iniziale. Instruzioni per la versione 1.3r2 di squashfs.

Abstract

Questo HOWTO descrive l'uso di SquashFS, un file system ad alta compressione in sola lettura per Linux, utile per sistemi operativi minimimali ed integrati e in ogni situazione in cui si voglia utilizzare un file system compresso. Con questo documento si apprenderà come preparare un kernel Linux che gestisca SquashFS, creare un file system di tipo SquashFS ed utilizzarlo senza intoppi.

Home page di questo HOWTO

L'howto [in inglese] di SquashFS è disponibile all'indirizzo: http://artemio.net/projects/linuxdoc/squashfs. dove è possibile trovare l'ultima versione del documento ed inviare il proprio feedback.

Traduzione a cura di Marco Cecchetti. Revisione di Antonio Colombo.


Sommario
1. Cos'è SquashFS
1.1. Introduzione
1.2. Panoramica su SquashFS
1.3. Per fare chiarezza
2. Preparativi per SquashFS
2.1. Ottenere SquashFS
2.2. Preparazione di un kernel che supporta SquashFS
2.2.1. Applicare la patch ai sorgenti del kernel
2.2.2. Compilazione per un kernel 2.6.x
2.2.3. Compilazione per un kernel 2.4.x
2.2.4. Installazione e test del kernel
2.3. Compilare gli strumenti di SquashFS
2.4. Installare SquashFS su Debian
3. Spiegazione degli strumenti di SquashFS
3.1. Utilizzo di mksquashfs
3.2. Opzioni per la riga di comando
3.3. Utilizzo di unsquashfs
4. Creare ed utilizzare file system compressi
4.1. Passi base
4.2. Compressione dei file system
4.2.1. Esempio 1
4.2.2. Esempio 2
4.3. Creazione di sistemi mininimali/integrati
4.3.1. File system SquashFS su floppy/flash/hard disk
4.3.2. File system compressi su CD-ROM
4.4. Rendere il file system scrivibile
5. Ringraziamenti
6. Licenza

1. Cos'è SquashFS

1.1. Introduzione

Nella preparazione di sistemi operativi Linux minimali ed integrati ogni byte del dispositivo di memorizzazione (floppy, flash disk, ecc.) è molto importante, quindi la compressione viene usata ovunque possibile. Inoltre, file system compressi sono di solito necessari ai fini dell'archiviazione. Ciò è essenziale per i grandi archivi pubblici o anche per archivi personali.

Il file system SquashFS porta tutto ciò ad un nuovo livello. Si tratta di un file system in sola lettura che consente la compressione di interi file system o singole directory, la loro scrittura su altri dispositivi/partizioni o su normali file ed il mount diretto (se si tratta di una partizione) o mediante l'utilizzo del dispositivo di loopback (se si tratta di un file). La struttura modulare e compatta di SquashFS è davvero brillante. Ai fini dell'archiviazione, SquashFS è molto più flessibile e veloce di un archivio tarball.

Il software di SquashFS distribuito comprende una patch per i sorgenti del kernel Linux (che abilita nel kernel il supporto in lettura del file system SquashFS), lo strumento mksquashfs, che serve per creare file system compressi e lo strumento unsquashfs, che permette di estrarre file multipli da un file system SquashFS esistente.

L'ultima versione rilasciata di SquashFS è la 3.x, la precedente era la versione 2.x. Questo documento descrive entrambe le versioni, con relative note. Ad esempio, se qualche caratteristica o parametro è diversa per queste versioni, verrà indicato come segue: nuovo valore (3.x) oppure vecchio valore (2.x).

1.2. Panoramica su SquashFS

  • Dati, inode e directory vengono compressi

  • SquashFS memorizza per intero uid/gid (32 bit) e la data di creazione dei file

  • Sono supportati file di dimensioni fino a 2^64 byte; i file system possono essere estesi fino a 2^64 byte

  • Inode e directory sono altamente compressi e memorizzati con la granularità di un byte. Ogni inode compresso ha una dimensione media di 8 byte (la dimensione esatta varia in funzione del tipo di file; cioè inode di file semplice, directory, collegamento simbolico, dispostivo a blocchi ed a caratteri hanno dimensioni differenti).

  • Il file system SquashFS supporta dimensioni di blocco fino a 64 kb (2.x) o 1MB (3.x). La dimensione di default dei blocchi è 128 kb (3.x), che consente di ottenere rapporti di compressione maggiori della normale dimensione di blocco di 4kb.

  • Dalla versione 2.x è stato introdotto il concetto di frammento di blocco, che implementa la possibilità di unire più file di dimensioni inferiori alla dimensione di blocco in un singolo blocco, ottenendo rapporti di compressione più alti.

  • File duplicati sono individuati e rimossi

  • Entrambe le architetture big e little endian sono supportate; SquashFS può montare file system creati su macchine con diverso ordine di byte.

1.3. Per fare chiarezza

Ora ci si assicurerà che ogni ulteriore discussione risulti più chiara da comprendere. La procedura per rendere disponibile SquashFS fondamentalmente consiste nei seguenti passaggi:

  1. Applicare la patch e ricompilare il kernel per attivare il supporto di squashfs

  2. Compilare lo strumento mksquashfs e unsquashfs

  3. Creare un file system compresso con mksquashfs

  4. Test: montare il file system squashfs sotto un punto di mount temporaneo.

  5. Modificare il file /etc/fstab o gli script di avvio del sistema Linux per montare il nuovo file system SquashFS quando necessario.