1.\" $NetBSD: makefs.8,v 1.33 2011/05/22 21:51:39 christos Exp $ 2.\" 3.\" Copyright (c) 2001-2003 Wasabi Systems, Inc. 4.\" All rights reserved. 5.\" 6.\" Written by Luke Mewburn for Wasabi Systems, Inc. 7.\" 8.\" Redistribution and use in source and binary forms, with or without 9.\" modification, are permitted provided that the following conditions 10.\" are met: 11.\" 1. Redistributions of source code must retain the above copyright 12.\" notice, this list of conditions and the following disclaimer. 13.\" 2. Redistributions in binary form must reproduce the above copyright 14.\" notice, this list of conditions and the following disclaimer in the 15.\" documentation and/or other materials provided with the distribution. 16.\" 3. All advertising materials mentioning features or use of this software 17.\" must display the following acknowledgement: 18.\" This product includes software developed for the NetBSD Project by 19.\" Wasabi Systems, Inc. 20.\" 4. The name of Wasabi Systems, Inc. may not be used to endorse 21.\" or promote products derived from this software without specific prior 22.\" written permission. 23.\" 24.\" THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND 25.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 26.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 27.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC 28.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34.\" POSSIBILITY OF SUCH DAMAGE. 35.\" 36.\" $FreeBSD$ 37.\" 38.Dd April 6, 2017 39.Dt MAKEFS 8 40.Os 41.Sh NAME 42.Nm makefs 43.Nd create a file system image from a directory tree or a mtree manifest 44.Sh SYNOPSIS 45.Nm 46.Op Fl DxZ 47.Op Fl B Ar endian 48.Op Fl b Ar free-blocks 49.Op Fl d Ar debug-mask 50.Op Fl F Ar mtree-specfile 51.Op Fl f Ar free-files 52.Op Fl M Ar minimum-size 53.Op Fl m Ar maximum-size 54.Op Fl N Ar userdb-dir 55.Op Fl o Ar fs-options 56.Op Fl R Ar roundup-size 57.Op Fl S Ar sector-size 58.Op Fl s Ar image-size 59.Op Fl T Ar timestamp 60.Op Fl t Ar fs-type 61.Ar image-file 62.Ar directory | manifest 63.Op Ar extra-directory ... 64.Sh DESCRIPTION 65The utility 66.Nm 67creates a file system image into 68.Ar image-file 69from the directory tree 70.Ar directory 71or from the mtree manifest 72.Ar manifest . 73If any optional directory trees are passed in the 74.Ar extra-directory 75arguments, then the directory tree of each argument will be merged 76into the 77.Ar directory 78or 79.Ar manifest 80first before creating 81.Ar image-file . 82No special devices or privileges are required to perform this task. 83.Pp 84The options are as follows: 85.Bl -tag -width flag 86.It Fl B Ar endian 87Set the byte order of the image to 88.Ar endian . 89Valid byte orders are 90.Ql 4321 , 91.Ql big , 92or 93.Ql be 94for big endian, and 95.Ql 1234 , 96.Ql little , 97or 98.Ql le 99for little endian. 100Some file systems may have a fixed byte order; in those cases this 101argument will be ignored. 102.It Fl b Ar free-blocks 103Ensure that a minimum of 104.Ar free-blocks 105free blocks exist in the image. 106An optional 107.Ql % 108suffix may be provided to indicate that 109.Ar free-blocks 110indicates a percentage of the calculated image size. 111.It Fl D 112Treat duplicate paths in an mtree manifest as warnings not error. 113.It Fl d Ar debug-mask 114Enable various levels of debugging, depending upon which bits are 115set in 116.Ar debug-mask . 117XXX: document these 118.It Fl F Ar mtree-specfile 119.Em This is almost certainly not the option you are looking for. 120To create an image from a list of files in an mtree format manifest, 121specify it as the last argument on the commandline, not as a the 122argument to 123.Fl F . 124.Pp 125Use 126.Ar mtree-specfile 127as an 128.Xr mtree 8 129.Sq specfile 130specification. 131This option has no effect when the image is created from a mtree manifest 132rather than a directory. 133.Pp 134If a specfile entry exists in the underlying file system, its 135permissions and modification time will be used unless specifically 136overridden by the specfile. 137An error will be raised if the type of entry in the specfile 138conflicts with that of an existing entry. 139.Pp 140In the opposite case (where a specfile entry does not have an entry 141in the underlying file system) the following occurs: 142If the specfile entry is marked 143.Sy optional , 144the specfile entry is ignored. 145Otherwise, the entry will be created in the image, and it is 146necessary to specify at least the following parameters in the 147specfile: 148.Sy type , 149.Sy mode , 150.Sy gname , 151or 152.Sy gid , 153and 154.Sy uname 155or 156.Sy uid , 157and 158.Sy link 159(in the case of symbolic links). 160If 161.Sy time 162isn't provided, the current time will be used. 163If 164.Sy flags 165isn't provided, the current file flags will be used. 166Missing regular file entries will be created as zero-length files. 167.It Fl f Ar free-files 168Ensure that a minimum of 169.Ar free-files 170free files (inodes) exist in the image. 171An optional 172.Ql % 173suffix may be provided to indicate that 174.Ar free-files 175indicates a percentage of the calculated image size. 176.It Fl M Ar minimum-size 177Set the minimum size of the file system image to 178.Ar minimum-size . 179.It Fl m Ar maximum-size 180Set the maximum size of the file system image to 181.Ar maximum-size . 182An error will be raised if the target file system needs to be larger 183than this to accommodate the provided directory tree. 184.It Fl N Ar userdb-dir 185Use the user database text file 186.Pa master.passwd 187and group database text file 188.Pa group 189from 190.Ar userdb-dir , 191rather than using the results from the system's 192.Xr getpwnam 3 193and 194.Xr getgrnam 3 195(and related) library calls. 196.It Fl o Ar fs-options 197Set file system specific options. 198.Ar fs-options 199is a comma separated list of options. 200Valid file system specific options are detailed below. 201.It Fl p 202Deprecated. 203See the 204.Fl Z 205flag. 206.It Fl R Ar roundup-size 207Round the image up to 208.Ar roundup-size . 209.Ar roundup-size 210should be a multiple of the file system block size. 211This option only applies to the 212.Sy ffs 213file system type. 214.It Fl S Ar sector-size 215Set the file system sector size to 216.Ar sector-size . 217.\" XXX: next line also true for cd9660? 218Defaults to 512. 219.It Fl s Ar image-size 220Set the size of the file system image to 221.Ar image-size . 222.It Fl T Ar timestamp 223Specify a timestamp to be set for all filesystem files and directories 224created so that repeatable builds are possible. 225The 226.Ar timestamp 227can be a 228.Pa pathname , 229where the timestamps are derived from that file, or an integer 230value interpreted as the number of seconds from the Epoch. 231Note that timestamps specified in an 232.Xr mtree 5 233spec file, override the default timestamp. 234.It Fl t Ar fs-type 235Create an 236.Ar fs-type 237file system image. 238The following file system types are supported: 239.Bl -tag -width cd9660 -offset indent 240.It Sy ffs 241BSD fast file system (default). 242.It Sy cd9660 243ISO 9660 file system. 244.El 245.It Fl x 246Exclude file system nodes not explicitly listed in the specfile. 247.It Fl Z 248Create a sparse file for 249.Sy ffs . 250This is useful for virtual machine images. 251.El 252.Pp 253Where sizes are specified, a decimal number of bytes is expected. 254Two or more numbers may be separated by an 255.Dq x 256to indicate a product. 257Each number may have one of the following optional suffixes: 258.Bl -tag -width 3n -offset indent -compact 259.It b 260Block; multiply by 512 261.It k 262Kibi; multiply by 1024 (1 KiB) 263.It m 264Mebi; multiply by 1048576 (1 MiB) 265.It g 266Gibi; multiply by 1073741824 (1 GiB) 267.It t 268Tebi; multiply by 1099511627776 (1 TiB) 269.It w 270Word; multiply by the number of bytes in an integer 271.El 272.\" 273.\" 274.Ss FFS-specific options 275.Sy ffs 276images have ffs-specific optional parameters that may be provided. 277Each of the options consists of a keyword, an equal sign 278.Pq Ql = , 279and a value. 280The following keywords are supported: 281.Pp 282.Bl -tag -width optimization -offset indent -compact 283.It Sy avgfilesize 284Expected average file size. 285.It Sy avgfpdir 286Expected number of files per directory. 287.It Sy bsize 288Block size. 289.It Sy density 290Bytes per inode. 291.It Sy fsize 292Fragment size. 293.It Sy label 294Label name of the image. 295.It Sy maxbpg 296Maximum blocks per file in a cylinder group. 297.It Sy minfree 298Minimum % free. 299.It Sy optimization 300Optimization preference; one of 301.Ql space 302or 303.Ql time . 304.It Sy extent 305Maximum extent size. 306.It Sy maxbpcg 307Maximum total number of blocks in a cylinder group. 308.It Sy version 309UFS version. 3101 for FFS (default), 2 for UFS2. 311.El 312.Ss CD9660-specific options 313.Sy cd9660 314images have ISO9660-specific optional parameters that may be 315provided. 316The arguments consist of a keyword and, optionally, an equal sign 317.Pq Ql = , 318and a value. 319The following keywords are supported: 320.Pp 321.Bl -tag -width omit-trailing-period -offset indent -compact 322.It Sy allow-deep-trees 323Allow the directory structure to exceed the maximum specified in 324the spec. 325.It Sy allow-illegal-chars 326Allow illegal characters in filenames. This option is not implemented. 327.It Sy allow-lowercase 328Allow lowercase characters in filenames. This option is not implemented. 329.It Sy allow-max-name 330Allow 37 instead of 33 characters for filenames by omitting the 331version id. 332.It Sy allow-multidot 333Allow multiple dots in a filename. 334.It Sy applicationid 335Application ID of the image. 336.It Sy archimedes 337Use the 338.Ql ARCHIMEDES 339extension to encode 340.Tn RISC OS 341metadata. 342.It Sy bootimagedir 343Boot image directory. This option is not implemented. 344.It Sy chrp-boot 345Write an MBR partition table to the image to allow older CHRP hardware to 346boot. 347.It Sy boot-load-segment 348Set load segment for the boot image. 349.It Sy bootimage 350Filename of a boot image in the format 351.Dq sysid;filename , 352where 353.Dq sysid 354is one of 355.Ql i386 , 356.Ql mac68k , 357.Ql macppc , 358or 359.Ql powerpc . 360.It Sy generic-bootimage 361Load a generic boot image into the first 32K of the cd9660 image. 362.It Sy hard-disk-boot 363Boot image is a hard disk image. 364.It Sy isolevel 365An integer representing the ISO 9660 interchange level where 366.Dq level 367is either 368.Ql 1 369or 370.Ql 2 . 371.Dq level 372.Ql 3 373is not implemented. 374.It Sy keep-bad-images 375Do not discard images whose write was aborted due to an error. 376For debugging purposes. 377.It Sy label 378Label name of the image. 379.It Sy no-boot 380Boot image is not bootable. 381.It Sy no-emul-boot 382Boot image is a 383.Dq no emulation 384ElTorito image. 385.It Sy no-trailing-padding 386Do not pad the image (apparently Linux needs the padding). 387.It Sy omit-trailing-period 388Omit trailing periods in filenames. 389.It Sy preparer 390Preparer ID of the image. 391.It Sy publisher 392Publisher ID of the image. 393.It Sy rockridge 394Use RockRidge extensions (for longer filenames, etc.). 395.It Sy verbose 396Turns on verbose output. 397.It Sy volumeid 398Volume set identifier of the image. 399.El 400.Sh SEE ALSO 401.Xr mtree 5 , 402.Xr mtree 8 , 403.Xr newfs 8 404.Sh HISTORY 405The 406.Nm 407utility appeared in 408.Nx 1.6 . 409.Sh AUTHORS 410.An Luke Mewburn 411.Aq Mt lukem@NetBSD.org 412(original program), 413.An Daniel Watt , 414.An Walter Deignan , 415.An Ryan Gabrys , 416.An Alan Perez-Rathke , 417.An Ram Vedam 418(cd9660 support) 419