Bestandssysteem – SquashFS Tools (Software)

linux folderWat is SquashFS?

 SquashFS is een bestandssysteem voor Linux. SquashFS comprimeert bestanden, inodes and mappen. SquashFS is ook de naam van de bijbehorende vrije en open software, beschikbaar onder de GPL licentie.

SquashFS is bedoeld voor algemene bestandstructuren waaruit enkel gelezen moet worden. Het bestandsysteem laat niet toe om de data te wijzigen. Er kan enkel een nieuwe squashFS-structuur gemaakt worden ter vervanging van de vorige. In die zin is het gebruik vergelijkbaar met een gecomprimeerd bestand zoals een zip-bestand.

De eerste versie van SquashFS gebruikte het gzip formaat. Stelselmatig worden andere compressiesystemen toegevoegd, zoals LZMA, LZO en LZMA2.

SquashFS Tools Informatie (ENG)

unsquashfs is the tool for extracting data from squashed file systems.
mksquashfs is the tool for creating new squashed file systems, and for appending new data to existing squashed file systems.

Download SquashFS @ Sourceforge.net

Installatie op Debian (Linux)

Commando:  sudo apt-get install squashfs-tools

Squashfs_install_debian

Installatie op Raspberry Pi (Linux)

Commando:  sudo apt-get install squashfs-tools

 Commandolijn parameters

Windows versie (Cygwin)

Download versie 3.1/3.1/3.4/4.0: SquashFS Tools @ Fragilematter.blogspot.nl

Let op: SquashFS partities die gecomprimeerd zijn met LZMA werken niet met Squashfs 4.0, daarvoor heb je SquashFS v4.2 of hoger nodig.

Foumelding wanneer je een LZMA squashfs wilt uitpakken op versie 4.0:

unsquashfs_geen_lzma

Zelf compileren op Windows Cygwin

SquashFS Tools v4.3:
Omdat ik graag LZMA wilde uitpakken heb ik mijn eigen versie op moment van schrijven 4.3 gecompileerd op Cygwin (bron)

1) Installeer Cygwin + alles tools en compilers (GCC) om te bouwen e.d.
2) Download SquashFS Tools v4.3 in de TAR.GZ formaat.
3) Pak de TAR.GZ uit in de [Cygwin folder]/home/[NAAM] folder.
bijvoorbeeld met:

Je kan nu SquashFS Tools v4.3 compileren met het commando:

of (ook gevonden)

make EXTRA_CFLAGS="-Dlinux -DFNM_EXTMATCH=0"

Infomatie over deze 2 commando’s (ENG):
1) This trick replaces “sigtimedwait” with “sigwaitinfo”. Those two functions does the same except that sigtimedwait has a timeout. So you may expect some lock up, in some conditions.
2) This simply compiles the same code on Cygwin as on Linux, except that Cygwin doesn’t (yet?) implement the GNU extension to fnmatch, FNM_EXTMATCH.

Ps. in Cygwin kun je niet plakken, maak in Windows een bestandje aan genaamd maak.sh met daarin de regel hierboven, en start deze met:

bash maak.sh

Patches om te compileren onder Cygwin
De patches om oudere versies op Cygwin te compileren zijn bijgevoegd onder aan deze pagina, je start een patch bestand met het commando:

patch < bestand.patch

Let wel op dat je deze “patch” software installeert in je Cygwin installatie.

Optionele ondersteuning voor diverse archiverings formaten

Standaard ondersteunt SquashFS Tools alleen GZIP, tegenwoordig worden de images beter ingepakt en met LZMA gecomprimeerd, dit moet je dus “aan” zetten in het bestand “makefile“, dat doe je door de comment voor de regel weg te halen voor het desbetreffende archiveringsformaat:

squashfstools enable lzma support in makefile

Haal de comment voor de regels weg van de optionele formaten zodat ook zij ondersteund worden, sla het bestand op!

Optioneel formaat GZIP

1) Standaard al ondersteund door Cywin!

Optioneel formaat LZMA2

1) Comment regel weghalen voor XZ_SUPPORT = 1

Optioneel formaat LZMA XZ

Comment regel weghalen voor LZMA_XZ_SUPPORT = 1

Optioneel formaat LZMA (voorbeeld van LZMA v4.65)

1) Download de LZMA v4.65 source bestanden.
2) Pak het BZ2 archief uit in [Cygwin folder]/home/[NAAM]/lzma-4.65 (zodat de de folder ‘C‘ daar in staat)
3) In makefile haal de comment weg bij:

4) Pas het pad aan als volgt:  LZMA_DIR = ~/lzma-4.65
Als je nu een compile maakt krijg je een foutmelding: ‘LzmaLib not found‘, daarvoor moet je het pad naar dat bestand handmatig instellen in lzma_wrapper.c.
5) Op het bestand lzma_wrapper.c, die staat in de root folder van squashfs en wijzig:

#include <LzmaLib.h>

in

#include <../lzma-4.65/C/LzmaLib.h>

Optioneel formaat LZO (voorbeeld van LZO v2.09)

1) Via Cywin setup alles installeren van “liblzo“.
2) Download de LZO source bestanden.
3) Pak het TAR.GZ archief uit in [Cygwin folder]/home/[NAAM]/lzo-2.09 (zodat de makefile.* daar in staat)
Je hebt dan ook de source folder (src) in ~/lzo-2.09/src
4) in de SquashFS Tools Makefile zet LZO support op 1 (uncomment de regel: LZO_SUPPORT = 1 )
5) in de SquashFS Tools Makefile zet het pad naar LZO: LZO_DIR = ~/lzo-2.09/src

Optioneel formaat LZ4 (voorbeeld van LZ4 r129)

Voor ondersteuning voor dit formaat moet je een library (.dll) compileren en diverse bestanden wegzetten voor deze ondersteuning, het heeft mij een boel tijd gekost, dit is mijn oplossing:

1) Via Cywin setup alles installeren van “patch“.
2) Download de LZ4 source bestanden.
3) Pak het TAR.GZ archief uit in [Cygwin folder]/home/[NAAM]/lz4-r129 (zodat de makefile daar in staat)
Je hebt dan ook de library folder (src) in ~/lz4-r129/lib
4) Om de DLL voor Cygwin te compileren moet eerst de Makefile aangepast worden, daar heb ik een patch voor gevonden.
Voor het gemak het patch bestand genoemd lz4-r129.patch, kopieer deze in de library folder ~/lz4-r129/lib
5) Voer nu het volgende commando uit om het bestand aan te passen: patch < lz4-r129.patch , de patch is eigenlijk bedoeld voor versie r124, maar weet toch het bestand goed aan te passen:

lz4-r129 makefile patch
6) Bouw nu de library met het commando: make

lz4-r129 make library

Nu hebben we de library gecompileerd en zijn er 3 bestanden aangemaakt in de lib folder:

7) Kopieer de 2 .a bestanden naar: [Cygwin folder]\lib
8) Het bestand cylz4-1.dll heb je nodig bij de .exe bestanden van de SquashFS Tools.

Omdat deze compilatie speciaal voor SquashFS Tools is, heb ik deze library’s en patches allemaal bijgesloten onderaan de pagina!

Benodigde Cygwin bestanden voor ondersteunende formaten:
G-ZIP: cygz.dll
LZMA2: cyglzma-5.dll
LZO: cyglzo2-2.dll
LZ4: cyglz4-1.dll

Zelf tekstuele toevoegingen maken aan de compilatie

Je kan zelf ook nog een eigen handtekening of watermerk toevoegen aan je compilatie, die kan je doet door deze bestanden te bewerken:

Zo kun je bijvoorbeeld tekst toevoegen aan hetgeen dat weergegeven wordt met de parameter -version , zoek dan naar: #define VERSION()

In de printblokken kun je je eigen teksten toevoegen:

squashfs compile add signature 01

Geeft weer:

squashfs compile add signature 02