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