The VM Interface

Also consult Writing Virtual Machine or Container Managers.

systemd has a number of interfaces for interacting with virtual machine managers, when systemd is used inside of a VM. If you work on a VM manager, please consider supporting the following interfaces.

  1. systemd supports passing immutable binary data blobs with limited size and restricted access to services via the ImportCredential=, LoadCredential= and SetCredential= settings. These credentials may be passed into a system via SMBIOS Type 11 vendor strings, see systemd(1) for details. This concept may be used to flexibly configure various facets ot the guest system. See systemd.system-credentials(7) for a list of system credentials implemented by various systemd components.

  2. Readiness, information about various system properties and functionality, as well as progress of boot may be reported by systemd to a machine manager via the sd_notify() protocol via AF_VSOCK sockets. The address of this socket may be configured via the vmm.notify_socket system credential. See systemd(1).

  3. The systemd-ssh-generator(8) functionality will automatically bind SSH login functionality to AF_VSOCK port 22, if the system runs in a VM.

  4. If not initialized yet the system’s machine-id(5) is automatically set to the SMBIOS product UUID if available and invocation in an VM environment is detected.

  5. The systemd-boot(7) and systemd-stub(7) components support two SMBIOS Type 11 vendor strings that may be used to extend the kernel command line of booted Linux environments: io.systemd.stub.kernel-cmdline-extra= and io.systemd.boot.kernel-cmdline-extra=.

Also see smbios-type-11(7) for a list of supported SMBIOS Type 11 vendor strings.