aboutsummaryrefslogtreecommitdiff
path: root/release
diff options
context:
space:
mode:
authorGlen Barber <gjb@FreeBSD.org>2015-03-25 22:35:08 +0000
committerGlen Barber <gjb@FreeBSD.org>2015-03-25 22:35:08 +0000
commite6e746bfb086d563bf0ad454a33ecbcab8836dbf (patch)
tree01bc43f0862c8b5e58d45ca2120582bc866babdc /release
parent6c787c8ff0be41657c0999aeaa9ff6befa5fceb0 (diff)
parent6fb3faab63f8e63e85abffaab6e59c81e49e2e2e (diff)
downloadsrc-e6e746bfb086d563bf0ad454a33ecbcab8836dbf.tar.gz
src-e6e746bfb086d563bf0ad454a33ecbcab8836dbf.zip
MFH: r278968-r280640
Sponsored by: The FreeBSD Foundation
Notes
Notes: svn path=/projects/release-arm-redux/; revision=280641
Diffstat (limited to 'release')
-rw-r--r--release/Makefile2
-rw-r--r--release/Makefile.vm41
-rw-r--r--release/arm/BEAGLEBONE.conf2
-rw-r--r--release/arm/PANDABOARD.conf2
-rw-r--r--release/arm/RPI-B.conf2
-rw-r--r--release/arm/WANDBOARD-QUAD.conf2
-rw-r--r--release/arm/ZEDBOARD.conf2
-rwxr-xr-xrelease/arm/release.sh7
-rw-r--r--release/doc/en_US.ISO8859-1/relnotes/article.xml104
-rw-r--r--release/doc/share/xml/sponsor.ent2
-rw-r--r--release/release.conf.sample3
-rwxr-xr-xrelease/release.sh3
-rwxr-xr-xrelease/scripts/mk-vmimage.sh1
-rwxr-xr-xrelease/tools/gce-package.sh47
-rw-r--r--release/tools/vmimage.subr29
15 files changed, 231 insertions, 18 deletions
diff --git a/release/Makefile b/release/Makefile
index c96ad8ccbea2..7b599409e51c 100644
--- a/release/Makefile
+++ b/release/Makefile
@@ -286,7 +286,7 @@ real-release:
${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} obj
${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${RELEASE_TARGETS}
-install: release-install vm-install
+install: release-install vm-install cloudware-install
release-install:
.if defined(DESTDIR) && !empty(DESTDIR)
diff --git a/release/Makefile.vm b/release/Makefile.vm
index 50365f579eb3..6ec7d6db7e1f 100644
--- a/release/Makefile.vm
+++ b/release/Makefile.vm
@@ -20,24 +20,30 @@ CLOUDWARE?= AZURE \
OPENSTACK
AZURE_FORMAT= vhdf
AZURE_DESC= Microsoft Azure platform image
+AZURE_DISK= ${OSRELEASE}.${AZURE_FORMAT}
GCE_FORMAT= raw
GCE_DESC= Google Compute Engine image
+GCE_DISK= disk.${GCE_FORMAT}
OPENSTACK_FORMAT=qcow2
OPENSTACK_DESC= OpenStack platform image
+OPENSTACK_DISK= ${OSRELEASE}.${OPENSTACK_FORMAT}
.if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE) && !empty(CLOUDWARE)
. for _CW in ${CLOUDWARE}
-CLOUDTARGETS+= vm-${_CW:tl}
-CLEANDIRS+= vm-${_CW:tl}
+CLOUDTARGETS+= cw-${_CW:tl}
+CLEANDIRS+= cw-${_CW:tl}
CLEANFILES+= ${_CW:tl}.img \
${_CW:tl}.${${_CW:tu}_FORMAT} \
- ${_CW:tl}.${${_CW:tu}_FORMAT}.raw
+ ${_CW:tl}.${${_CW:tu}_FORMAT}.raw \
+ cw${_CW:tl}-package
+CLOUDINSTALL+= cw${_CW:tl}-install
+CLOUDPACKAGE+= cw${_CW:tl}-package
${_CW:tu}IMAGE= ${_CW:tl}.${${_CW:tu}_FORMAT}
. if exists(${.CURDIR}/tools/${_CW:tl}.conf) && !defined(${_CW:tu}CONF)
${_CW:tu}CONF?= ${.CURDIR}/tools/${_CW:tl}.conf
. endif
-vm-${_CW:tl}:
+cw-${_CW:tl}:
mkdir -p ${.OBJDIR}/${.TARGET}
env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
${.CURDIR}/scripts/mk-vmimage.sh \
@@ -45,6 +51,26 @@ vm-${_CW:tl}:
-i ${.OBJDIR}/${_CW:tl}.img -s ${VMSIZE} -f ${${_CW}_FORMAT} \
-S ${WORLDDIR} -o ${.OBJDIR}/${${_CW}IMAGE} -c ${${_CW}CONF}
touch ${.TARGET}
+
+cw${_CW:tl}-install:
+ mkdir -p ${DESTDIR}/${_CW:tl}
+ cp -p ${${_CW}IMAGE} \
+ ${DESTDIR}/${_CW:tl}/${${_CW}_DISK}
+ cd ${DESTDIR}/${_CW:tl} && sha256 ${${_CW}_DISK}* > \
+ ${DESTDIR}/${_CW:tl}/CHECKSUM.SHA256
+ cd ${DESTDIR}/${_CW:tl} && md5 ${${_CW}_DISK}* > \
+ ${DESTDIR}/${_CW:tl}/CHECKSUM.MD5
+
+cw${_CW:tl}-package:
+ @# Special target to handle packaging cloud images in the formats
+ @# specific to each hosting provider.
+.if exists(${.CURDIR}/tools/${_CW:tl}-package.sh)
+ env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
+ ${.CURDIR}/tools/${_CW:tl}-package.sh \
+ -D ${DESTDIR} -I ${${_CW}_DISK} -S ${WORLDDIR}
+.endif
+ touch ${.TARGET}
+
. endfor
.endif
@@ -97,8 +123,6 @@ vm-install:
${DESTDIR}/vmimages/${OSRELEASE}.${FORMAT}
. endfor
. if defined(WITH_COMPRESSED_VMIMAGES) && !empty(WITH_COMPRESSED_VMIMAGES)
-# This is very time consuming, so defer it after the images are moved to
-# the DESTDIR.
. for FORMAT in ${VMFORMATS}
# Don't keep the originals. There is a copy in ${.OBJDIR} if needed.
${XZ_CMD} ${DESTDIR}/vmimages/${OSRELEASE}.${FORMAT}
@@ -119,3 +143,8 @@ cloudware-release:
.if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE) && !empty(CLOUDWARE)
${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${CLOUDTARGETS}
.endif
+
+cloudware-install:
+.if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE) && !empty(CLOUDWARE)
+ ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${CLOUDINSTALL}
+.endif
diff --git a/release/arm/BEAGLEBONE.conf b/release/arm/BEAGLEBONE.conf
index 28e084d808a7..546af5ca2715 100644
--- a/release/arm/BEAGLEBONE.conf
+++ b/release/arm/BEAGLEBONE.conf
@@ -32,6 +32,6 @@ load_target_env() {
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
export KERNEL="BEAGLEBONE"
- export CROCHETSRC="https://github.com/kientzle/crochet-freebsd"
+ export CROCHETSRC="https://github.com/freebsd/crochet"
export CROCHETBRANCH="trunk@r744"
}
diff --git a/release/arm/PANDABOARD.conf b/release/arm/PANDABOARD.conf
index a9fbb6f4f57f..9518914ef7bb 100644
--- a/release/arm/PANDABOARD.conf
+++ b/release/arm/PANDABOARD.conf
@@ -32,6 +32,6 @@ load_target_env() {
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
export KERNEL="PANDABOARD"
- export CROCHETSRC="https://github.com/kientzle/crochet-freebsd"
+ export CROCHETSRC="https://github.com/freebsd/crochet"
export CROCHETBRANCH="trunk@r744"
}
diff --git a/release/arm/RPI-B.conf b/release/arm/RPI-B.conf
index d9ab15638afe..19778f87536a 100644
--- a/release/arm/RPI-B.conf
+++ b/release/arm/RPI-B.conf
@@ -32,7 +32,7 @@ load_target_env() {
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
export KERNEL="RPI-B"
- export CROCHETSRC="https://github.com/kientzle/crochet-freebsd"
+ export CROCHETSRC="https://github.com/freebsd/crochet"
export CROCHETBRANCH="trunk@r744"
export UBOOTSRC="https://github.com/gonzoua/u-boot-pi"
export UBOOTBRANCH="trunk"
diff --git a/release/arm/WANDBOARD-QUAD.conf b/release/arm/WANDBOARD-QUAD.conf
index 4249bf65219e..48aa63165a50 100644
--- a/release/arm/WANDBOARD-QUAD.conf
+++ b/release/arm/WANDBOARD-QUAD.conf
@@ -32,6 +32,6 @@ load_target_env() {
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
export KERNEL="WANDBOARD-QUAD"
- export CROCHETSRC="https://github.com/kientzle/crochet-freebsd"
+ export CROCHETSRC="https://github.com/freebsd/crochet"
export CROCHETBRANCH="trunk@r744"
}
diff --git a/release/arm/ZEDBOARD.conf b/release/arm/ZEDBOARD.conf
index a6d1de0b4a4e..07c35ba21bad 100644
--- a/release/arm/ZEDBOARD.conf
+++ b/release/arm/ZEDBOARD.conf
@@ -31,6 +31,6 @@ load_target_env() {
export XDEV_FLAGS="WITH_GCC=1 WITH_GCC_BOOTSTRAP=1 WITHOUT_CLANG_IS_CC=1"
export XDEV_FLAGS="${XDEV_FLAGS} MK_TESTS=no"
export KERNEL="ZEDBOARD"
- export CROCHETSRC="https://github.com/kientzle/crochet-freebsd"
+ export CROCHETSRC="https://github.com/freebsd/crochet"
export CROCHETBRANCH="trunk@r744"
}
diff --git a/release/arm/release.sh b/release/arm/release.sh
index dbbdbf53202a..104edd8cb32d 100755
--- a/release/arm/release.sh
+++ b/release/arm/release.sh
@@ -99,6 +99,7 @@ main() {
BRANCH=$(chroot ${CHROOTDIR} make -C /usr/src/release -V BRANCH)
UNAME_r=${REVISION}-${BRANCH}
export UNAME_r
+ export XZ_CMD=$(chroot ${CHROOTDIR} make -C /usr/src/release -V XZ_CMD)
# Build the 'xdev' target for crochet.
eval chroot ${CHROOTDIR} make -C /usr/src \
@@ -146,9 +147,9 @@ main() {
-c /tmp/external/${XDEV}/crochet-${KERNEL}.conf
mkdir -p ${CHROOTDIR}/R/
cp -p ${CHROOTDIR}/usr/obj/*.img ${CHROOTDIR}/R/
- bzip2 ${CHROOTDIR}/R/FreeBSD*.img
- cd ${CHROOTDIR}/R/ && sha256 FreeBSD*.img.bz2 > CHECKSUM.SHA256
- cd ${CHROOTDIR}/R/ && md5 FreeBSD*.img.bz2 > CHECKSUM.MD5
+ ${XZ_CMD} ${CHROOTDIR}/R/FreeBSD*.img
+ cd ${CHROOTDIR}/R/ && sha256 FreeBSD*.img.xz > CHECKSUM.SHA256
+ cd ${CHROOTDIR}/R/ && md5 FreeBSD*.img.xz > CHECKSUM.MD5
}
main "$@"
diff --git a/release/doc/en_US.ISO8859-1/relnotes/article.xml b/release/doc/en_US.ISO8859-1/relnotes/article.xml
index 4fe344cf7e02..d3f82d78fed7 100644
--- a/release/doc/en_US.ISO8859-1/relnotes/article.xml
+++ b/release/doc/en_US.ISO8859-1/relnotes/article.xml
@@ -22,7 +22,7 @@
<pubdate>$FreeBSD$</pubdate>
- <!-- Last rev: 277458 -->
+ <!-- Last rev: 278934 -->
<copyright>
<year>2015</year>
@@ -302,6 +302,21 @@
<para revision="277166" arch="powerpc">The &man.ptrace.2; system
call has been updated include support for Altivec registers on
&os;/&arch.powerpc;.</para>
+
+ <para revision="278320">A new device control utility,
+ &man.devctl.8; has been added, which allows making
+ administrative changes to individual devices, such as
+ attaching and detaching drivers, and enabling and disabling
+ devices. The &man.devctl.8; utility uses the new
+ &man.devctl.3; library.</para>
+
+ <para revision="279315" contrib="sponsor" sponsor="&ff;">The
+ &man.uefisign.8; utility has been added.</para>
+
+ <para revision="279571" contrib="sponsor"
+ sponsor="&scaleengine;">The &man.freebsd-update.8; utility has
+ been updated to prevent fetching updated binary patches when
+ a previous upgrade has not been throughly completed.</para>
</sect2>
<sect2 xml:id="userland-contrib">
@@ -375,6 +390,15 @@
<para revision="277270"><application>OpenSSL</application> has
been updated to version 1.0.1l.</para>
+
+ <para revision="278433">The &man.xz.1; utility has been udpated
+ to version 5.2.0.</para>
+
+ <para revision="278433">The &man.xz.1; utility has been updated
+ to support multi-threaded compression.</para>
+
+ <para revision="278970">The &man.acpi.4; subsystem has been
+ updated to version 20150204.</para>
</sect2>
<sect2 xml:id="userland-installer">
@@ -420,6 +444,12 @@
&man.rc.8; script has been removed from the base system. An
equivalent script is available from the <filename
role="package">net/mrouted</filename> port.</para>
+
+ <para revision="279463" contrib="sponsor"
+ sponsor="&sandvine;">A new &man.rc.8; script,
+ <filename>iovctl</filename>, has been added, which allows
+ automatically starting the &man.iovctl.8; utility at
+ boot.</para>
</sect2>
<sect2 xml:id="userland-periodic">
@@ -460,6 +490,25 @@
<para revision="274987">The &man.gpio.3; library has been added,
providing a wrapper around the &man.gpio.4; kernel
interface.</para>
+
+ <para revision="277610">The <literal>futimens()</literal> and
+ <literal>utimensat()</literal> system calls have been
+ added. See &man.utimensat.2; for more information.</para>
+
+ <para revision="278934">The &man.elf.3; compile-time dependency
+ has been removed from <filename>dtri.o</filename>, which
+ allows adding <application>DTrace</application> probes to
+ userland applications and libraries without also linking
+ against &man.elf.3;.</para>
+
+ <para revision="279186">The &man.setmode.3; function has been
+ updated to consistently set <literal>errno</literal> on
+ failure.</para>
+
+ <para revision="279663">The &man.qsort.3; functions have been
+ updated to be able to handle 32-bit aligned data on 64-bit
+ platforms, also providing a significant improvement in 32-bit
+ workloads.</para>
</sect2>
<sect2 xml:id="userland-abi">
@@ -515,12 +564,46 @@
at the &man.loader.8; prompt during boot, or add
<literal>kern.vty=vt</literal> to &man.loader.conf.5; and
reboot the system.</para>
+
+ <para revision="277904">The &man.config.8; utility has been
+ updated to allow using a non-standard <filename
+ class="directory">src/</filename> tree, specified as an
+ argument to the <literal>-s</literal> flag.</para>
+
+ <para revision="277990" arch="powerpc64">The
+ &os;/&arch.powerpc64; kernel now builds as
+ a position-independent executable, allowing the kernel to be
+ loaded into and run from any physical or virtual
+ address.</para>
+
+ <important>
+ <para>This change requires an update to &man.loader.8;.
+ The userland and kernel must be updated before rebooting the
+ system.</para>
+ </important>
+
+ <para revision="279189" contrib="sponsor" sponsor="&ff;"
+ arch="powerpc">Kernel support for Vector-Scalar eXtension
+ (<acronym>VSX</acronym>) found on POWER7 and POWER8 hardware
+ has been added.</para>
+
+ <para revision="279252" contrib="sponsor" sponsor="&ff;"
+ arch="powerpc">The &man.pmap.9; implementation for 64-bit
+ &powerpc; processors has been overhaulded to improve
+ concurrency.</para>
</sect2>
<sect2 xml:id="kernel-sysctl">
<title>System Tuning and Controls</title>
- <para>&nbsp;</para>
+ <para revision="275140" contrib="sponsor" sponsor="&ff;">The
+ &man.hwpmc.4; default and maximum callchain depths have been
+ increased. The default has been increased from 16 to 32, and
+ the maximum increased from 32 to 128.</para>
+
+ <para revision="279361">The <literal>kern.osrelease</literal>
+ and <literal>kern.osreldate</literal> are now configurable
+ &man.jail.8; parameters.</para>
</sect2>
</sect1>
@@ -761,6 +844,18 @@
<para>This section covers changes and additions to file systems
and other storage subsystems, both local and networked.</para>
+ <sect2 xml:id="storage-general">
+ <title>General Storage</title>
+ <para revision="278037" contrib="sponsor" sponsor="&ix;">The
+ &man.ctl.4; <acronym>LUN</acronym> mapping has been rewritten,
+ replacing <acronym>iSCSI</acronym>-specific mapping mechanisms
+ with a new mechanism that works for any port.</para>
+
+ <para revision="278354" contrib="sponsor" sponsor="&ix;">The
+ &man.ctld.8; utility has been updated to allow controlling
+ non-<acronym>iSCSI</acronym> &man.ctl.4; ports.</para>
+ </sect2>
+
<sect2 xml:id="storage-net">
<title>Networked Storage</title>
@@ -962,6 +1057,11 @@
Release Engineering build tools have been updated to include
support for producing virtual machine disk images for various
cloud hosting providers.</para>
+
+ <para revision="278926">The Release Engineering build tools have
+ been updated to use multi-threaded &man.xz.1;. By default,
+ the number of &man.xz.1; threads is set to the number of cores
+ available.</para>
</sect2>
</sect1>
</article>
diff --git a/release/doc/share/xml/sponsor.ent b/release/doc/share/xml/sponsor.ent
index f664919ac216..6e77d0d0b4e9 100644
--- a/release/doc/share/xml/sponsor.ent
+++ b/release/doc/share/xml/sponsor.ent
@@ -30,6 +30,8 @@
<!ENTITY netgate "Netgate">
+<!ENTITY sandvine "Sandvine, Inc.">
+<!ENTITY scaleengine "ScaleEngine, Inc.">
<!ENTITY spectralogic "Spectra Logic">
<!ENTITY yandex "Yandex LLC">
diff --git a/release/release.conf.sample b/release/release.conf.sample
index f6cfadc6c85c..aecfc34a91c9 100644
--- a/release/release.conf.sample
+++ b/release/release.conf.sample
@@ -53,6 +53,9 @@ PORTBRANCH="ports/head@rHEAD"
#WITH_DVD=
#WITH_COMPRESSED_IMAGES=
+## Set to '1' to disable multi-threaded xz(1) compression.
+#XZ_THREADS=0
+
## Set when building embedded images.
#EMBEDDEDBUILD=
diff --git a/release/release.sh b/release/release.sh
index 6839e330f72a..8a9bad10b7c9 100755
--- a/release/release.sh
+++ b/release/release.sh
@@ -95,6 +95,7 @@ WITH_COMPRESSED_IMAGES=
# the release.
WITH_VMIMAGES=
WITH_COMPRESSED_VMIMAGES=
+XZ_THREADS=0
# Set to non-empty value to build virtual machine images for various
# cloud providers as part of the release.
@@ -181,7 +182,7 @@ RELEASE_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${ARCH_FLAGS} ${CONF_FILES}"
RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} KERNCONF=\"${KERNEL}\" ${ARCH_FLAGS} ${CONF_FILES}"
RELEASE_RMAKEFLAGS="${ARCH_FLAGS} KERNCONF=\"${KERNEL}\" ${CONF_FILES} \
${DOCPORTS} WITH_DVD=${WITH_DVD} WITH_VMIMAGES=${WITH_VMIMAGES} \
- WITH_CLOUDWARE=${WITH_CLOUDWARE}"
+ WITH_CLOUDWARE=${WITH_CLOUDWARE} XZ_THREADS=${XZ_THREADS}"
# Force src checkout if configured
FORCE_SRC_KEY=
diff --git a/release/scripts/mk-vmimage.sh b/release/scripts/mk-vmimage.sh
index 16c33c8febd6..d5985ceb0d25 100755
--- a/release/scripts/mk-vmimage.sh
+++ b/release/scripts/mk-vmimage.sh
@@ -102,6 +102,7 @@ main() {
vm_extra_pre_umount
vm_extra_pkg_rmcache
cleanup
+ vm_copy_base
vm_create_disk || return 0
vm_extra_create_disk
diff --git a/release/tools/gce-package.sh b/release/tools/gce-package.sh
new file mode 100755
index 000000000000..5d8ec3311303
--- /dev/null
+++ b/release/tools/gce-package.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# Script to handle packaging cloud images for GCE.
+#
+# XXX:
+# This script only exists to help in automating image creation,
+# and reimplementing this is intended (in other words, this is
+# temporary).
+
+usage() {
+ echo "Usage:"
+ echo "$(basename ${0}) -D <destdir> -I <input_file> -S <src_tree>"
+ exit 1
+}
+
+main() {
+ while getopts "D:I:W:" opt; do
+ case ${opt} in
+ D)
+ DESTDIR="${OPTARG}"
+ ;;
+ I)
+ INFILE="${OPTARG}"
+ ;;
+ S)
+ WORLDDIR="${OPTARG}"
+ ;;
+ *)
+ usage
+ ;;
+ esac
+ done
+ shift $(( ${OPTIND} - 1 ))
+
+ if [ -z "${DESTDIR}" -o -z "${INFILE}" -o -z "${WORLDDIR}" ]; then
+ usage
+ fi
+
+ OUTFILE="$(make -C ${WORLDDIR}/release -V OSRELEASE).tar.gz"
+
+ cd ${DESTDIR} && tar --format=gnutar -zcf ${OUTFILE} ${INFILE}
+}
+
+main "$@"
diff --git a/release/tools/vmimage.subr b/release/tools/vmimage.subr
index 6207440149b4..828db355aedf 100644
--- a/release/tools/vmimage.subr
+++ b/release/tools/vmimage.subr
@@ -67,6 +67,35 @@ vm_create_base() {
return 0
}
+vm_copy_base() {
+ # Creates a new UFS root filesystem and copies the contents of the
+ # current root filesystem into it. This produces a "clean" disk
+ # image without any remnants of files which were created temporarily
+ # during image-creation and have since been deleted (e.g., downloaded
+ # package archives).
+
+ mkdir -p ${DESTDIR}/old
+ mdold=$(mdconfig -f ${VMBASE})
+ mount /dev/${mdold} ${DESTDIR}/old
+
+ truncate -s ${VMSIZE} ${VMBASE}.tmp
+ mkdir -p ${DESTDIR}/new
+ mdnew=$(mdconfig -f ${VMBASE}.tmp)
+ newfs -j /dev/${mdnew}
+ mount /dev/${mdnew} ${DESTDIR}/new
+
+ tar -cf- -C ${DESTDIR}/old . | tar -xf- -C ${DESTDIR}/new
+
+ umount /dev/${mdold}
+ rmdir ${DESTDIR}/old
+ mdconfig -d -u ${mdold}
+
+ umount /dev/${mdnew}
+ rmdir ${DESTDIR}/new
+ mdconfig -d -u ${mdnew}
+ mv ${VMBASE}.tmp ${VMBASE}
+}
+
vm_install_base() {
# Installs the FreeBSD userland/kernel to the virtual machine disk.