#!/bin/sh DISKSIZE=$1 FREEBSD_VERSION=$2 VMNAME=$3 # Create the raw vmdkimage ./vmdkimage -h 64k -i${DISKSIZE}G -c $VMNAME-disk1.vmdk CAPACITY=$((DISKSIZE * 1024 * 1024 * 1024)) sudo mdconfig -a -t vnode -f ./${VMNAME}-disk1.vmdk sudo gnop create -o 65536 md0 sudo gpart create -s gpt md0.nop sudo gpart add -t freebsd-boot -s 64k md0.nop sudo gpart add -t freebsd-swap -s 512M md0.nop sudo gpart add -t freebsd-ufs md0.nop sudo newfs -U -L root /dev/md0.nopp3 sudo mount /dev/md0.nopp3 /mnt [ ! -f base.txz ] && fetch ftp://ftp.free.org/pub/FreeBSD/releases/i386/9.0-BETA1/base.txz [ ! -f kernel.txz ] && fetch ftp://ftp.free.org/pub/FreeBSD/releases/i386/9.0-BETA1/kernel.txz sudo tar xpf base.txz -C /mnt sudo tar xpf kernel.txz -C /mnt sudo gpart bootcode -b /mnt/boot/pmbr -p /mnt/boot/gptboot -i 1 md0.nop echo "/dev/ufs/root / ufs rw 1 1" > ./fstab echo "/dev/ada0p2 none swap sw 0 0" >> ./fstab sudo mv fstab /mnt/etc sudo umount /mnt sudo gnop destroy md0.nop sudo mdconfig -d -u 0 sed -e "s,%%CAPACITY%%,${CAPACITY},g" \ -e "s,%%FREEBSD_VERSION%%,${FREEBSD_VERSION},g" \ -e "s,%%VMNAME%%,${VMNAME},g" FreeBSD.ovf > ${VMNAME}.ovf sha1 ${VMNAME}.ovf ${VMNAME}-disk1.vmdk > ${VMNAME}.mf tar cJf ${VMNAME}.ova.xz ${VMNAME}.ovf ${VMNAME}-disk1.vmdk ${VMNAME}.mf echo "done"