Steps to build a FreeBSD VM image as a non-root user and boot it in QEMU:
export MAKEOBJDIRPREFIX=/tank/emaste/obj ROOTDIR=/tank/emaste/rootdir # Build make -j4 SRCCONF=/dev/null buildworld buildkernel # Install make -DNO_ROOT DESTDIR=$ROOTDIR SRCCONF=/dev/null installworld installkernel distribution # Create fstab, and add it to the METALOG echo '/dev/ufs/freebsd_root / ufs rw,noatime 1 1' > $ROOTDIR/etc/fstab s=$(($(cat $ROOTDIR/etc/fstab | wc -c))) echo "./etc/fstab type=file uname=root gname=wheel mode=0444 size=$s" >> $ROOTDIR/METALOG makefs -B little -o label=freebsd_root -F $ROOTDIR/METALOG ufs $ROOTDIR mkimg -s gpt -b $ROOTDIR/boot/pmbr -p efi:=$ROOTDIR/boot/boot1.efifat -p freebsd-boot:=$ROOTDIR/boot/gptboot -p freebsd-ufs:=ufs -p freebsd-swap::1M -o img # Boot in QEMU (add -bios OVMF.fd for UEFI boot) qemu-system-x86_64 -snapshot -hda img
(Note that the file system has no extra space and the system will complain about a full / after booting.)