The FreeBSD installer bsdinstall can be easily modified to create block and file-backed “guest” hosts for jail, bhyve and Xen, but with the addition of ZFS, NFS and DHCPd, a highly flexible environment can be built that both supports booting FreeBSD as far back as 5.0 and booting boot environments on both virtual machines and real hardware machines on the network. These abilities are not only useful for decoupling hardware and software machines, but also tracking regressions down to the guilty commits that produced them.
The FreeBSD operating system includes the isolation and virtualization features chroot(8), jail(8), bhyve(8) and Xen, but offers limited abilities for creating and managing jail, bhyve or Xen “guest” hosts. The bsdinstall(8) jail, jail.conf(8), and vmrun.sh tools support rudimentary jail and bhyve guest host creation and management but are not designed for automation using in-base or external tools. This talk will describe how the bsdinstall(8), nfsd(8) and zfs(8) in-base resources can be leveraged to create authentic, file and block storage-backed FreeBSD root installations suitable for use with not only jail(8), bhyve(8) and Xen, but also network-booted hardware machines. Leveraging in-base tools in support of in-base isolation and virtualization features not only makes it easer to create guest hosts, but also enables the comprehensive testing of current and past versions FreeBSD in pursuit of regressions.
Of the leveraged components:
The methodologies described in this talk should apply in part or in full to other BSD operating systems.