summaryrefslogtreecommitdiff
path: root/pages/projects/squashfs-tools-ng/index.md
blob: 0eef5e5c084a98dacdfa6a056393005fd187c8c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# SquashFS Tools NG

SquashFS is a highly compressed, read only file system often used as a root fs
on embedded devices, live systems or simply as a compressed archive format.

Think of it as a .tar.gz that you can mount (or XZ, LZO, LZ4, ZSTD).

This project originally started out as a fork
of [squashfs-tools](https://github.com/plougher/squashfs-tools) 4.3, after
encountering some short comings and realizing that there have been no updates
on the SourceForge site or mailing list for _years_.

Even before the first public release, the fork was replaced with a complete
re-write after growing frustrated with the existing code base. For lack of a
better name, and because the original appeared to be unmaintained at the time,
the name squashfs-tools-ng was kept, although the published code base
technically never had any connection to squashfs-tools.

Maintenance of the original squashfs-tools has since resumed, squashfs-tools
version 4.4 was released and continues to be maintained in parallel. The
utilities provided by squashfs-tools-ng offer alternative tooling and are
intentionally named differently, so both packages can be installed side by
side.

**The actual guts of squashfs-tools-ng are encapsulated in a library
with a generic API** designed to make SquashFS available to other applications
as an embeddable, extensible archive format (or to simply read, write or
manipulate SquashFS file systems).

The utility programs are largely command line wrappers around the library. The
following tools are provided:

 - `gensquashfs` can be used to produce SquashFS images from `gen_init_cpio`
   like file listings or simply pack an input directory. Can use an SELinux
   contexts file (see selabel_file(5)) to generate SELinux labels.
 - `rdsquashfs` can be used to inspect and unpack SquashFS images.
 - `sqfs2tar` can turn a SquashFS image into a tarball, written to stdout.
 - `tar2sqfs` can turn a tarball (read from stdin) into a SquashFS image.
 - `sqfsdiff` can compare the contents of two SquashFS images.

The library and the tools that produce SquashFS images are designed to operate
deterministically. Same input will produce byte-for-byte identical output.
Failure to do so is treated as a critical bug.

## Version history

| Date       | Release                                                                                                 |
| ---------- | ------------------------------------------------------------------------------------------------------- |
| 2020-11-05 | [squashfs-tools-ng 1.0.3 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.3.tar.xz) |
| 2020-09-03 | [squashfs-tools-ng 1.0.2 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.2.tar.xz) |
| 2020-08-03 | [squashfs-tools-ng 1.0.1 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.1.tar.xz) |
| 2020-06-13 | [squashfs-tools-ng 1.0.0 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-1.0.0.tar.xz) |
| 2020-05-03 | [squashfs-tools-ng 0.9.1 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.9.1.tar.xz) |
| 2020-03-30 | [squashfs-tools-ng 0.9.0 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.9.tar.xz)   |
| 2019-12-30 | [squashfs-tools-ng 0.8.0 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.8.tar.xz)   |
| 2019-10-08 | [squashfs-tools-ng 0.7.0 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.7.tar.xz)   |
| 2019-08-27 | [squashfs-tools-ng 0.6.1 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.6.1.tar.xz) |
| 2019-08-22 | [squashfs-tools-ng 0.6.0 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.6.tar.xz)   |
| 2019-07-28 | [squashfs-tools-ng 0.5.0 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.5.tar.xz)   |
| 2019-07-17 | [squashfs-tools-ng 0.4.2 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.4.2.tar.xz) |
| 2019-07-07 | [squashfs-tools-ng 0.4.1 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.4.1.tar.xz) |
| 2019-07-04 | [squashfs-tools-ng 0.4.0 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.4.tar.xz)   |
| 2019-06-30 | [squashfs-tools-ng 0.3.0 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.3.tar.xz)   |
| 2019-06-13 | [squashfs-tools-ng 0.2.0 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.2.tar.xz)   |
| 2019-06-09 | [squashfs-tools-ng 0.1.0 is released](https://infraroot.at/pub/squashfs/squashfs-tools-ng-0.1.tar.xz)   |

## Documentation

The doxygen reference for the current release of libsquashfs is available
here: [libsquashfs API reference](doxydoc/index.html).

A writeup on the [SquashFS on-disk format](https://git.infraroot.at/squashfs-tools-ng.git/tree/doc/format.txt)
is also available.

Man pages are provided for the individual tools.

## Getting the Source Code

[Release tar balls](https://infraroot.at/pub/squashfs/) are published in the
pub directory.

The Git tree is hosted on [git.infraroot.at](https://git.infraroot.at/squashfs-tools-ng.git/)
as well as on [GitHub](https://github.com/AgentD/squashfs-tools-ng).

Those two Git trees are kept in sync and issues & pull-requests on the GitHub
pages are accepted.

## Installing

A number of Linux distributions already offer squashfs-tools-ng through
their package management system. Replogy maintains an up to date list:

[![Packaging status](https://repology.org/badge/vertical-allrepos/squashfs-tools-ng.svg)](https://repology.org/project/squashfs-tools-ng/versions)

Pre-compiled binary packages for Windows are
available [here](https://infraroot.at/pub/squashfs/windows).

Those packages contain the binaries for the tools, the SquashFS library and
pre-compiled dependency libraries (zstd, lzo, lzma; others are built in).

The binary package does not contain any source code. The corresponding source
code from which the 3rd party libraries have been built is also available for
download at the above location.

The headers and import libraries to build applications that use libsquashfs
are included. For convenience, the pre-compiled, 3rd party dependency libraries
also come with headers and import libraries.

## Contact

Besides the issue tracker on GitHub, you can reach me via e-mail as *goliath*
on *infraroot.at*.

There is currently no official mailing list. For the time being I'll use
the existing [squashfs-tools mailing list](https://sourceforge.net/p/squashfs/mailman/)
for announcments, until I'm booted off.