BSD Multiplicity
Channel: Andrea Ross
Date: 2012-05-17

An applied survey of BSD multiplicity and virtualization strategies from chroot to BHyVe

Ever since the University of California, Berkeley CSRG implemented the chroot(8) command and system call in its BSD operating system in 1982, the community-developed BSD Unix derivatives have set the standard for the introduction of plurality to the conventionally-singular Unix computing model. Today's system operators and developers have an array of BSD-licensed multiplicity strategies at their disposal that offer various degrees of both isolation and virtualization when introducing plurality. This paper will survey current and experimental BSD multiplicity strategies including chroot, FreeBSD jail, NetBSD/Xen, Amazon EC2, compatlinux, GXemul and SIMH, plus experimental strategies such as FreeBSD BHyVe, compatmach, Usermode NetBSD, Dragonfly BSD vkernel, OpenBSD sysjail and NetBSD mult. As an applied survey, this paper will both categorize each multiplicity strategy by the Unix environment to which it introduces plurality and demonstrate the usage of the utilities relating to each solution.

The survey criteria consist of five distinct Unix environments to which plurality is introduced:

• Machine Multiplicity, as distinguished by the introduction of native and foreign hardware system and their distinct Instruction Set Architectures defined by distinct physical hardware systems, virtualized instances of them, or software emulattions of them (NetBSD-Xen/EC2, GXemul, SIMH and BHyVe)

• Kernel Multiplicity, as distinguished by a plurality of executing kernels (Usermode NetBSD, Dragonfly BSD vkernel)

• Init Multiplicity, as distinguished by distinct kernel-spawned init processes and their descendant processes (mult)

• Userland Multiplicity, as distinguished by distinct userlands with optional process tables and their descendant processes (chroot, FreeBSD jail and sysjail)

• API Multiplicity, as distinguished by distinct foreign Application Programming Interface compatibility layers (compatlinux, compatmach)

The reader will thus come away with a set of working examples for each solution that they can implement on their own.

In addition, this survey addresses key host and guest administrative considerations applicable to each multiplicity solution:

• Storage Device considerations: Are they hardware or software-based? What image and file system formats are supported?

• Network Device considerations: Are they configured by the host? From within the guest?

• Console Device considerations: Does the guest appear on the host console? Is it redirected to a network-aware solution such as VNC or X11 over SSH?

• Kernel considerations: Is the native or foreign guest kernel modified? Does it reside within or outside the guest userland?

• Userland considerations: Is the guest userland modified? Does it lend itself to customization through additive or subtractive techniques?