240afd8c1f
This allows one to take a staged directory tree and create a file consisting of a ZFS pool with one or more datasets that contain the contents of the directory tree. This is useful for creating virtual machine images without using the kernel to create a pool; "zpool create" requires root privileges and currently is not permitted in jails. makefs -t zfs also provides reproducible images by using a fixed seed for pseudo-random number generation, used for generating GUIDs and hash salts. makefs -t zfs requires relatively little by way of machine resources. The "zpool_reguid" rc.conf setting can be used to ask a FreeBSD guest to generate a unique pool GUID upon first boot. A small number of pool and dataset properties are supported. The pool is backed by a single disk vdev. Data is always checksummed using Fletcher-4, no redundant copies are made, and no compression is used. The manual page documents supported pool and filesystem properties. The implementation uses a few pieces of ZFS support from with the boot loader, especially definitions for various on-disk structures, but is otherwise standalone and in particular doesn't depend on OpenZFS. This feature should be treated as experimental for now, i.e., important data shouldn't be trusted to a makefs-created pool, and the command-line interface is subject to change. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D35248
54 lines
852 B
Makefile
54 lines
852 B
Makefile
# $FreeBSD$
|
|
|
|
SRCDIR:=${.PARSEDIR:tA}
|
|
|
|
.include <src.opts.mk>
|
|
|
|
PROG= makefs
|
|
|
|
CFLAGS+=-I${SRCDIR}
|
|
|
|
SRCS= cd9660.c \
|
|
ffs.c \
|
|
makefs.c \
|
|
msdos.c \
|
|
mtree.c \
|
|
walk.c
|
|
MAN= makefs.8
|
|
|
|
NO_WCAST_ALIGN=
|
|
CSTD= c11
|
|
|
|
.if ${MK_ZFS} != "no"
|
|
SRCS+= zfs.c
|
|
CFLAGS+=-I${SRCDIR}/zfs \
|
|
-I${SRCTOP}/stand/libsa \
|
|
-I${SRCTOP}/sys/cddl/boot
|
|
|
|
CFLAGS+= -DHAVE_ZFS
|
|
|
|
.include "${SRCDIR}/zfs/Makefile.inc"
|
|
.endif
|
|
|
|
.include "${SRCDIR}/cd9660/Makefile.inc"
|
|
.include "${SRCDIR}/ffs/Makefile.inc"
|
|
.include "${SRCDIR}/msdos/Makefile.inc"
|
|
|
|
CFLAGS+=-DHAVE_STRUCT_STAT_ST_FLAGS=1
|
|
|
|
.PATH: ${SRCTOP}/contrib/mtree
|
|
CFLAGS+=-I${SRCTOP}/contrib/mtree
|
|
SRCS+= getid.c misc.c spec.c
|
|
|
|
.PATH: ${SRCTOP}/contrib/mknod
|
|
CFLAGS+=-I${SRCTOP}/contrib/mknod
|
|
SRCS+= pack_dev.c
|
|
|
|
CFLAGS+= -I${SRCTOP}/lib/libnetbsd
|
|
LIBADD= netbsd util sbuf
|
|
|
|
HAS_TESTS=
|
|
SUBDIR.${MK_TESTS}+= tests
|
|
|
|
.include <bsd.prog.mk>
|