xref: /freebsd/share/man/man4/geom_uzip.4 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
1272bf9a8SCeri Davies.\"
2272bf9a8SCeri Davies.\" Copyright (c) 2006 Ceri Davies
3272bf9a8SCeri Davies.\" All rights reserved.
4272bf9a8SCeri Davies.\"
5272bf9a8SCeri Davies.\" Redistribution and use in source and binary forms, with or without
6272bf9a8SCeri Davies.\" modification, are permitted provided that the following conditions
7272bf9a8SCeri Davies.\" are met:
8272bf9a8SCeri Davies.\" 1. Redistributions of source code must retain the above copyright
9272bf9a8SCeri Davies.\"    notice, this list of conditions and the following disclaimer.
10272bf9a8SCeri Davies.\" 2. Redistributions in binary form must reproduce the above copyright
11272bf9a8SCeri Davies.\"    notice, this list of conditions and the following disclaimer in the
12272bf9a8SCeri Davies.\"    documentation and/or other materials provided with the distribution.
13272bf9a8SCeri Davies.\"
14272bf9a8SCeri Davies.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15272bf9a8SCeri Davies.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16272bf9a8SCeri Davies.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17272bf9a8SCeri Davies.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18272bf9a8SCeri Davies.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19272bf9a8SCeri Davies.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20272bf9a8SCeri Davies.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21272bf9a8SCeri Davies.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22272bf9a8SCeri Davies.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23272bf9a8SCeri Davies.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24272bf9a8SCeri Davies.\" SUCH DAMAGE.
25272bf9a8SCeri Davies.\"
26*f33f2365SCeri Davies.Dd April 28, 2021
27272bf9a8SCeri Davies.Dt GEOM_UZIP 4
28aa12cea2SUlrich Spörlein.Os
29272bf9a8SCeri Davies.Sh NAME
30272bf9a8SCeri Davies.Nm geom_uzip
318f8cb840SMaxim Sobolev.Nd "GEOM based compressed disk images and partitions"
32272bf9a8SCeri Davies.Sh SYNOPSIS
33272bf9a8SCeri DaviesTo compile this driver into the kernel,
34272bf9a8SCeri Daviesplace the following line in your
35272bf9a8SCeri Davieskernel configuration file:
36272bf9a8SCeri Davies.Bd -ragged -offset indent
37e8643b01SKonstantin Belousov.Cd "device xz"
38eefd8f96SConrad Meyer.Cd "options zstd"
39272bf9a8SCeri Davies.Cd "options GEOM_UZIP"
40272bf9a8SCeri Davies.Ed
41272bf9a8SCeri Davies.Pp
42272bf9a8SCeri DaviesAlternatively, to load the driver as a
43272bf9a8SCeri Daviesmodule at boot time, place the following line in
44272bf9a8SCeri Davies.Xr loader.conf 5 :
45272bf9a8SCeri Davies.Bd -literal -offset indent
46272bf9a8SCeri Daviesgeom_uzip_load="YES"
47272bf9a8SCeri Davies.Ed
48272bf9a8SCeri Davies.Sh DESCRIPTION
49272bf9a8SCeri DaviesThe
50272bf9a8SCeri Davies.Nm
5162cb31dcSWarner Loshframework provides support for compressed read-only
52272bf9a8SCeri Daviesdisk images.
53272bf9a8SCeri DaviesThis allows significant storage savings at the expense of
54*f33f2365SCeri Daviessome CPU time on each read.
55272bf9a8SCeri DaviesData written in the GEOM label area allows
56272bf9a8SCeri Davies.Nm
57272bf9a8SCeri Daviesto detect compressed images which have been created with
58272bf9a8SCeri Davies.Xr mkuzip 8
59272bf9a8SCeri Daviesand presented to the kernel as a logical disk device via
60272bf9a8SCeri Davies.Xr md 4 .
61272bf9a8SCeri Davies.Nm
62272bf9a8SCeri Daviescreates a unique
63272bf9a8SCeri Davies.Pa md#.uzip
64272bf9a8SCeri Daviesdevice for each image.
65272bf9a8SCeri Davies.Pp
668f8cb840SMaxim Sobolev.Nm
678f8cb840SMaxim Sobolevis not limited to supporting only
688f8cb840SMaxim Sobolev.Xr md 4
698f8cb840SMaxim Sobolevimages.
708f8cb840SMaxim SobolevThe image can also reside on a block device.
718f8cb840SMaxim Sobolev.Pq For example, a disk, USB flash drive, DVD-ROM, etc .
728f8cb840SMaxim SobolevThe appropriate device node will appear with the
738f8cb840SMaxim Sobolev.Pa .uzip
748f8cb840SMaxim Sobolevsuffix.
758f8cb840SMaxim Sobolev.Bd -literal -offset indent
768f8cb840SMaxim Sobolev# gpart show da0
778f8cb840SMaxim Sobolev=>      0  7833600  da0  BSD  (3.7G)
788f8cb840SMaxim Sobolev        0  2097152    1  freebsd-ufs  (1.0G)
798f8cb840SMaxim Sobolev  2097152  5736448       - free -  (2.7G)
808f8cb840SMaxim Sobolev# gpart add -t freebsd-ufs -s 1G da0
818f8cb840SMaxim Sobolevda0b added
828f8cb840SMaxim Sobolev# dd if=/tmp/20160217_dcomp_zcomp.uzip bs=256k of=/dev/da0b
838f8cb840SMaxim Sobolev3190+1 records in
848f8cb840SMaxim Sobolev3190+1 records out
858f8cb840SMaxim Sobolev836331008 bytes transferred in 111.021489 secs (7533055 bytes/sec)
868f8cb840SMaxim Sobolev# fsck -t ffs /dev/da0b.uzip
878f8cb840SMaxim Sobolev** /dev/da0b.uzip (NO WRITE)
888f8cb840SMaxim Sobolev** Last Mounted on /mnt
898f8cb840SMaxim Sobolev** Phase 1 - Check Blocks and Sizes
908f8cb840SMaxim Sobolev** Phase 2 - Check Pathnames
918f8cb840SMaxim Sobolev** Phase 3 - Check Connectivity
928f8cb840SMaxim Sobolev** Phase 4 - Check Reference Counts
938f8cb840SMaxim Sobolev** Phase 5 - Check Cyl groups
948f8cb840SMaxim Sobolev97455 files, 604242 used, 184741 free (2349 frags, 22799 blocks,
958f8cb840SMaxim Sobolev   0.3% fragmentation)
968f8cb840SMaxim Sobolev# mount -o ro /dev/da0b.uzip /mnt
978f8cb840SMaxim Sobolev# df /dev/da0b.uzip
988f8cb840SMaxim SobolevFilesystem     1K-blocks    Used  Avail Capacity  Mounted on
998f8cb840SMaxim Sobolev/dev/da0b.uzip   3155932 2416968 738964    77%    /mnt
1008f8cb840SMaxim Sobolev.Ed
1018f8cb840SMaxim Sobolev.Pp
102272bf9a8SCeri DaviesThe
103272bf9a8SCeri Davies.Nm
1048f8cb840SMaxim Sobolevdevice is subsequently used by
105272bf9a8SCeri Davies.Fx
1068f8cb840SMaxim Sobolevkernel to access the uncompressed data.
107272bf9a8SCeri DaviesThe
108272bf9a8SCeri Davies.Nm
109272bf9a8SCeri Daviesdriver does not allow write operations to the underlying disk image.
110272bf9a8SCeri DaviesTo check which
1118f8cb840SMaxim Sobolev.Dq providers
1128f8cb840SMaxim Sobolevmatch a given
113272bf9a8SCeri Davies.Nm
114272bf9a8SCeri Daviesdevice:
115272bf9a8SCeri Davies.Bd -literal -offset indent
116272bf9a8SCeri Davies# geom uzip list
117272bf9a8SCeri DaviesGeom name: md1.uzip
118272bf9a8SCeri DaviesProviders:
119272bf9a8SCeri Davies1. Name: md1.uzip
120272bf9a8SCeri Davies   Mediasize: 22003712 (21M)
121272bf9a8SCeri Davies   Sectorsize: 512
122272bf9a8SCeri DaviesConsumers:
123272bf9a8SCeri Davies1. Name: md1
124272bf9a8SCeri Davies   Mediasize: 9563648 (9.1M)
125272bf9a8SCeri Davies   Sectorsize: 512
1268f8cb840SMaxim Sobolev
1278f8cb840SMaxim SobolevGeom name: da0b.uzip
1288f8cb840SMaxim SobolevProviders:
1298f8cb840SMaxim Sobolev1. Name: da0b.uzip
1308f8cb840SMaxim Sobolev   Mediasize: 3355443200 (3.1G)
1318f8cb840SMaxim Sobolev   Sectorsize: 512
1328f8cb840SMaxim SobolevConsumers:
1338f8cb840SMaxim Sobolev1. Name: da0b
1348f8cb840SMaxim Sobolev   Mediasize: 1073741824 (1.0G)
1358f8cb840SMaxim Sobolev   Sectorsize: 512
136272bf9a8SCeri Davies.Ed
1378f8cb840SMaxim Sobolev.Pp
1388f8cb840SMaxim Sobolev.Nm
1398f8cb840SMaxim Sobolevallows mounting the root file system from a compressed disk partition by
1408f8cb840SMaxim Sobolevsetting the
1418f8cb840SMaxim Sobolev.Dv vfs.root.mountfrom
1428f8cb840SMaxim Sobolevtunable.
1438f8cb840SMaxim SobolevSee
1448f8cb840SMaxim Sobolev.Xr loader.conf 5
1458f8cb840SMaxim Sobolevfor details.
1468f8cb840SMaxim Sobolev.Sh DIAGNOSTICS
1478f8cb840SMaxim SobolevSeveral flags are provided for tracing
1488f8cb840SMaxim Sobolev.Nm
1498f8cb840SMaxim SobolevI/O operations and TOC parsing via the following sysctls.
1508f8cb840SMaxim Sobolev.Bl -tag -width indent
1518f8cb840SMaxim Sobolev.It Va kern.geom.uzip.debug
1528f8cb840SMaxim SobolevLog level.
1538f8cb840SMaxim SobolevZero disables logging.
1548f8cb840SMaxim SobolevHigher values enable more verbose debug logging for
1558f8cb840SMaxim Sobolev.Nm .
1568f8cb840SMaxim SobolevSupported levels are from 0 (no logging) to 4 (maximum amount of logging).
1578f8cb840SMaxim Sobolev.It Va kern.geom.uzip.debug_block
1588f8cb840SMaxim SobolevLog operations involving compressed cluster number.
1598f8cb840SMaxim Sobolev.El
160272bf9a8SCeri Davies.Sh SEE ALSO
161272bf9a8SCeri Davies.Xr GEOM 4 ,
162e3643455SCeri Davies.Xr md 4 ,
163e3643455SCeri Davies.Xr geom 8 ,
164e3643455SCeri Davies.Xr mkuzip 8
165eefd8f96SConrad Meyer.Sh HISTORY
166eefd8f96SConrad MeyerZstd support was added in
167eefd8f96SConrad Meyer.Fx 13.0 .
168272bf9a8SCeri Davies.Sh AUTHORS
169272bf9a8SCeri Davies.An -nosplit
170272bf9a8SCeri DaviesThe
171272bf9a8SCeri Davies.Nm
172272bf9a8SCeri Daviesdriver was written by
1736c899950SBaptiste Daroussin.An Max Khon Aq Mt fjoe@FreeBSD.org .
1748f8cb840SMaxim SobolevThe block de-duplication code as well as some
1758f8cb840SMaxim Sobolev.Nm
1768f8cb840SMaxim Sobolevdriver optimizations have been contributed by
1778f8cb840SMaxim Sobolev.An Maxim Sobolev Aq Mt sobomax@FreeBSD.org .
1788f8cb840SMaxim SobolevThe LZMA decompression support and CLOOP 3.0 support have been added by
1798f8cb840SMaxim Sobolev.An Aleksandr Rybalko Aq Mt ray@FreeBSD.org .
1808f8cb840SMaxim Sobolev.Pp
181272bf9a8SCeri DaviesThis manual page was written by
1826c899950SBaptiste Daroussin.An Ceri Davies Aq Mt ceri@FreeBSD.org .
183