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