xref: /freebsd/share/man/man4/geom_uzip.4 (revision e8643b01e6312a56d1e44a760fb4e95f0b10b54c)
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.\"
26272bf9a8SCeri Davies.\" $FreeBSD$
27272bf9a8SCeri Davies.\"
28e3643455SCeri Davies.Dd October 9, 2006
29272bf9a8SCeri Davies.Dt GEOM_UZIP 4
30aa12cea2SUlrich Spörlein.Os
31272bf9a8SCeri Davies.Sh NAME
32272bf9a8SCeri Davies.Nm geom_uzip
338f8cb840SMaxim Sobolev.Nd "GEOM based compressed disk images and partitions"
34272bf9a8SCeri Davies.Sh SYNOPSIS
35272bf9a8SCeri DaviesTo compile this driver into the kernel,
36272bf9a8SCeri Daviesplace the following line in your
37272bf9a8SCeri Davieskernel configuration file:
38272bf9a8SCeri Davies.Bd -ragged -offset indent
39*e8643b01SKonstantin Belousov.Cd "device xz"
40272bf9a8SCeri Davies.Cd "options GEOM_UZIP"
41272bf9a8SCeri Davies.Ed
42272bf9a8SCeri Davies.Pp
43272bf9a8SCeri DaviesAlternatively, to load the driver as a
44272bf9a8SCeri Daviesmodule at boot time, place the following line in
45272bf9a8SCeri Davies.Xr loader.conf 5 :
46272bf9a8SCeri Davies.Bd -literal -offset indent
47272bf9a8SCeri Daviesgeom_uzip_load="YES"
48272bf9a8SCeri Davies.Ed
49272bf9a8SCeri Davies.Sh DESCRIPTION
50272bf9a8SCeri DaviesThe
51272bf9a8SCeri Davies.Nm
5262cb31dcSWarner Loshframework provides support for compressed read-only
53272bf9a8SCeri Daviesdisk images.
54272bf9a8SCeri DaviesThis allows significant storage savings at the expense of
558f8cb840SMaxim Soboleva some CPU time on each read.
56272bf9a8SCeri DaviesData written in the GEOM label area allows
57272bf9a8SCeri Davies.Nm
58272bf9a8SCeri Daviesto detect compressed images which have been created with
59272bf9a8SCeri Davies.Xr mkuzip 8
60272bf9a8SCeri Daviesand presented to the kernel as a logical disk device via
61272bf9a8SCeri Davies.Xr md 4 .
62272bf9a8SCeri Davies.Nm
63272bf9a8SCeri Daviescreates a unique
64272bf9a8SCeri Davies.Pa md#.uzip
65272bf9a8SCeri Daviesdevice for each image.
66272bf9a8SCeri Davies.Pp
678f8cb840SMaxim Sobolev.Nm
688f8cb840SMaxim Sobolevis not limited to supporting only
698f8cb840SMaxim Sobolev.Xr md 4
708f8cb840SMaxim Sobolevimages.
718f8cb840SMaxim SobolevThe image can also reside on a block device.
728f8cb840SMaxim Sobolev.Pq For example, a disk, USB flash drive,  DVD-ROM, etc.
738f8cb840SMaxim SobolevThe appropriate device node will appear with the
748f8cb840SMaxim Sobolev.Pa .uzip
758f8cb840SMaxim Sobolevsuffix.
768f8cb840SMaxim Sobolev.Bd -literal -offset indent
778f8cb840SMaxim Sobolev# gpart show da0
788f8cb840SMaxim Sobolev=>      0  7833600  da0  BSD  (3.7G)
798f8cb840SMaxim Sobolev        0  2097152    1  freebsd-ufs  (1.0G)
808f8cb840SMaxim Sobolev  2097152  5736448       - free -  (2.7G)
818f8cb840SMaxim Sobolev# gpart add -t freebsd-ufs -s 1G da0
828f8cb840SMaxim Sobolevda0b added
838f8cb840SMaxim Sobolev# dd if=/tmp/20160217_dcomp_zcomp.uzip bs=256k of=/dev/da0b
848f8cb840SMaxim Sobolev3190+1 records in
858f8cb840SMaxim Sobolev3190+1 records out
868f8cb840SMaxim Sobolev836331008 bytes transferred in 111.021489 secs (7533055 bytes/sec)
878f8cb840SMaxim Sobolev# fsck -t ffs /dev/da0b.uzip
888f8cb840SMaxim Sobolev** /dev/da0b.uzip (NO WRITE)
898f8cb840SMaxim Sobolev** Last Mounted on /mnt
908f8cb840SMaxim Sobolev** Phase 1 - Check Blocks and Sizes
918f8cb840SMaxim Sobolev** Phase 2 - Check Pathnames
928f8cb840SMaxim Sobolev** Phase 3 - Check Connectivity
938f8cb840SMaxim Sobolev** Phase 4 - Check Reference Counts
948f8cb840SMaxim Sobolev** Phase 5 - Check Cyl groups
958f8cb840SMaxim Sobolev97455 files, 604242 used, 184741 free (2349 frags, 22799 blocks,
968f8cb840SMaxim Sobolev   0.3% fragmentation)
978f8cb840SMaxim Sobolev# mount -o ro /dev/da0b.uzip /mnt
988f8cb840SMaxim Sobolev# df /dev/da0b.uzip
998f8cb840SMaxim SobolevFilesystem     1K-blocks    Used  Avail Capacity  Mounted on
1008f8cb840SMaxim Sobolev/dev/da0b.uzip   3155932 2416968 738964    77%    /mnt
1018f8cb840SMaxim Sobolev.Ed
1028f8cb840SMaxim Sobolev.Pp
103272bf9a8SCeri DaviesThe
104272bf9a8SCeri Davies.Nm
1058f8cb840SMaxim Sobolevdevice is subsequently used by
106272bf9a8SCeri Davies.Fx
1078f8cb840SMaxim Sobolevkernel to access the uncompressed data.
108272bf9a8SCeri DaviesThe
109272bf9a8SCeri Davies.Nm
110272bf9a8SCeri Daviesdriver does not allow write operations to the underlying disk image.
111272bf9a8SCeri DaviesTo check which
1128f8cb840SMaxim Sobolev.Dq providers
1138f8cb840SMaxim Sobolevmatch a given
114272bf9a8SCeri Davies.Nm
115272bf9a8SCeri Daviesdevice:
116272bf9a8SCeri Davies.Bd -literal -offset indent
117272bf9a8SCeri Davies# geom uzip list
118272bf9a8SCeri DaviesGeom name: md1.uzip
119272bf9a8SCeri DaviesProviders:
120272bf9a8SCeri Davies1. Name: md1.uzip
121272bf9a8SCeri Davies   Mediasize: 22003712 (21M)
122272bf9a8SCeri Davies   Sectorsize: 512
123272bf9a8SCeri DaviesConsumers:
124272bf9a8SCeri Davies1. Name: md1
125272bf9a8SCeri Davies   Mediasize: 9563648 (9.1M)
126272bf9a8SCeri Davies   Sectorsize: 512
1278f8cb840SMaxim Sobolev
1288f8cb840SMaxim SobolevGeom name: da0b.uzip
1298f8cb840SMaxim SobolevProviders:
1308f8cb840SMaxim Sobolev1. Name: da0b.uzip
1318f8cb840SMaxim Sobolev   Mediasize: 3355443200 (3.1G)
1328f8cb840SMaxim Sobolev   Sectorsize: 512
1338f8cb840SMaxim SobolevConsumers:
1348f8cb840SMaxim Sobolev1. Name: da0b
1358f8cb840SMaxim Sobolev   Mediasize: 1073741824 (1.0G)
1368f8cb840SMaxim Sobolev   Sectorsize: 512
137272bf9a8SCeri Davies.Ed
1388f8cb840SMaxim Sobolev.Pp
1398f8cb840SMaxim Sobolev.Nm
1408f8cb840SMaxim Sobolevallows mounting the root file system from a compressed disk partition by
1418f8cb840SMaxim Sobolevsetting the
1428f8cb840SMaxim Sobolev.Dv vfs.root.mountfrom
1438f8cb840SMaxim Sobolevtunable.
1448f8cb840SMaxim SobolevSee
1458f8cb840SMaxim Sobolev.Xr loader.conf 5
1468f8cb840SMaxim Sobolevfor details.
1478f8cb840SMaxim Sobolev.Sh DIAGNOSTICS
1488f8cb840SMaxim SobolevSeveral flags are provided for tracing
1498f8cb840SMaxim Sobolev.Nm
1508f8cb840SMaxim SobolevI/O operations and TOC parsing via the following sysctls.
1518f8cb840SMaxim Sobolev.Bl -tag -width indent
1528f8cb840SMaxim Sobolev.It Va kern.geom.uzip.debug
1538f8cb840SMaxim SobolevLog level.
1548f8cb840SMaxim SobolevZero disables logging.
1558f8cb840SMaxim SobolevHigher values enable more verbose debug logging for
1568f8cb840SMaxim Sobolev.Nm .
1578f8cb840SMaxim SobolevSupported levels are from 0 (no logging) to 4 (maximum amount of logging).
1588f8cb840SMaxim Sobolev.It Va kern.geom.uzip.debug_block
1598f8cb840SMaxim SobolevLog operations involving compressed cluster number.
1608f8cb840SMaxim Sobolev.El
161272bf9a8SCeri Davies.Sh SEE ALSO
162272bf9a8SCeri Davies.Xr GEOM 4 ,
163e3643455SCeri Davies.Xr md 4 ,
164e3643455SCeri Davies.Xr geom 8 ,
165e3643455SCeri Davies.Xr mkuzip 8
166272bf9a8SCeri Davies.Sh AUTHORS
167272bf9a8SCeri Davies.An -nosplit
168272bf9a8SCeri DaviesThe
169272bf9a8SCeri Davies.Nm
170272bf9a8SCeri Daviesdriver was written by
1716c899950SBaptiste Daroussin.An Max Khon Aq Mt fjoe@FreeBSD.org .
1728f8cb840SMaxim SobolevThe block de-duplication code as well as some
1738f8cb840SMaxim Sobolev.Nm
1748f8cb840SMaxim Sobolevdriver optimizations have been contributed by
1758f8cb840SMaxim Sobolev.An Maxim Sobolev Aq Mt sobomax@FreeBSD.org .
1768f8cb840SMaxim SobolevThe LZMA decompression support and CLOOP 3.0 support have been added by
1778f8cb840SMaxim Sobolev.An Aleksandr Rybalko Aq Mt ray@FreeBSD.org .
1788f8cb840SMaxim Sobolev.Pp
179272bf9a8SCeri DaviesThis manual page was written by
1806c899950SBaptiste Daroussin.An Ceri Davies Aq Mt ceri@FreeBSD.org .
181