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.
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.
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).
The
systemd-ssh-generator(8)
functionality will automatically bind SSH login functionality to AF_VSOCK
port 22, if the system runs in a VM.
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.
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.