ORG.FREEDESKTOP.MACHINE1(5) org.freedesktop.machine1 (NAME) org.freedesktop.machine1 - D-Bus (systemd-machined) (DESCRIPTION) systemd-machined.service(8) . D-Bus . D-BUS (THE D-BUS INTERFACE) MANAGER (THE MANAGER OBJECT) Manager : node /org/freedesktop/machine1 { interface org.freedesktop.machine1.Manager { methods: GetMachine(in s name, out o machine); GetImage(in s name, out o image); GetMachineByPID(in u pid, out o machine); ListMachines(out a(ssso) machines); ListImages(out a(ssbttto) images); CreateMachine(in s name, in ay id, in s service, in s class, in u leader, in s root_directory, in a(sv) scope_properties, out o path); CreateMachineWithNetwork(in s name, in ay id, in s service, in s class, in u leader, in s root_directory, in ai ifindices, in a(sv) scope_properties, out o path); CreateMachineEx(in s name, in a(sv) properties, in a(sv) scope_properties, out o path); RegisterMachine(in s name, in ay id, in s service, in s class, in u leader, in s root_directory, out o path); RegisterMachineWithNetwork(in s name, in ay id, in s service, in s class, in u leader, in s root_directory, in ai ifindices, out o path); RegisterMachineEx(in s name, in a(sv) properties, out o path); UnregisterMachine(in s name); TerminateMachine(in s id); KillMachine(in s name, in s whom, in i signal); GetMachineAddresses(in s name, out a(iay) addresses); GetMachineSSHInfo(in s name, out s ssh_address, out s ssh_private_key_path); GetMachineOSRelease(in s name, out a{ss} fields); OpenMachinePTY(in s name, out h pty, out s pty_path); OpenMachineLogin(in s name, out h pty, out s pty_path); OpenMachineShell(in s name, in s user, in s path, in as args, in as environment, out h pty, out s pty_path); BindMountMachine(in s name, in s source, in s destination, in b read_only, in b mkdir); CopyFromMachine(in s name, in s source, in s destination); CopyToMachine(in s name, in s source, in s destination); CopyFromMachineWithFlags(in s name, in s source, in s destination, in t flags); CopyToMachineWithFlags(in s name, in s source, in s destination, in t flags); OpenMachineRootDirectory(in s name, out h fd); GetMachineUIDShift(in s name, out u shift); RemoveImage(in s name); RenameImage(in s name, in s new_name); CloneImage(in s name, in s new_name, in b read_only); MarkImageReadOnly(in s name, in b read_only); GetImageHostname(in s name, out s hostname); GetImageMachineID(in s name, out ay id); GetImageMachineInfo(in s name, out a{ss} machine_info); GetImageOSRelease(in s name, out a{ss} os_release); SetPoolLimit(in t size); SetImageLimit(in s name, in t size); CleanPool(in s mode, out a(st) images); MapFromMachineUser(in s name, in u uid_inner, out u uid_outer); MapToMachineUser(in u uid_outer, out s machine_name, out o machine_path, out u uid_inner); MapFromMachineGroup(in s name, in u gid_inner, out u gid_outer); MapToMachineGroup(in u gid_outer, out s machine_name, out o machine_path, out u gid_inner); signals: MachineNew(s machine, o path); MachineRemoved(s machine, o path); properties: @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly s PoolPath = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly t PoolUsage = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly t PoolLimit = ...; }; interface org.freedesktop.DBus.Peer { ... }; interface org.freedesktop.DBus.Introspectable { ... }; interface org.freedesktop.DBus.Properties { ... }; }; (Methods) GetMachine() . GetMachineByPID() (PID) ( ) . GetImage() . ListMachines() . : . ListImages() . : . CreateMachine() systemd-machined (scope unit) . : UUID (PID) (leader) . (hostname) DNS . "a-zA-Z0-9-_." . . nss-mymachines(8) (resolve) . (escaping) "_" . ( ) IDNA . UUID UUID ( ) . UUID / UUID /etc/machine-id / . "systemd-nspawn" "libvirt-lxc" . "container" "vm" . PID PID init . ( ). . StartTransientUnit() PID1 . (transient scope unit) ( scope_properties ) PID . org.freedesktop.machine1.Machine ( ). (Control Group)[1] . RegisterMachine() CreateMachine() . . . / . RegisterMachineEx() CreateMachineEx() / PID PIDFD leader . : o "Id" ("ay"): UUID . o "Service" ("s"): . o "Class" ("s"): . o "LeaderPIDFD" ("h"): PIDFD . . "LeaderPID" "LeaderPIDFDID" . o "LeaderPID" ("u"): (PID) . . "LeaderPIDFDID" . o "LeaderPIDFDID" ("t"): PIDFDID . . "LeaderPID" . o "RootDirectory" ("s"): . . o "NetworkInterfaces" ("ai"): CreateMachineWithNetwork(). . CreateMachineWithNetwork() RegisterMachineWithNetwork() CreateMachine() RegisterMachine() : . . "veth" ( ) "tun"/"tap" ( ) (bridge) / . IPv6 - (link-local IPv6) sockaddr_in6 ifindex . nss-mymachines(8) . KillMachine() . ( CreateMachine() ListMachines() ) ( "leader" "all") . TerminateMachine() . . GetMachineAddresses() IP . (AF_INET AF_INET6) . (network namespacing) . GetMachineSSHInfo() SSH . : SSH SSH SSH . GetMachineOSRelease() (OS release) . / os-release(5) . OpenMachinePTY() (pseudo TTY) . posix_openpt(3) . OpenMachineLogin() getty . PTY PTY . pty . OpenMachineShell() ( argv[0] ) . PTY PTY . BindMountMachine() (bind mount) . . CopyFromMachine() . . CopyToMachine() . CopyFromMachineWithFlags() CopyToMachineWithFlags() . OpenMachineRootDirectory() . GetMachineUIDShift() UID . RemoveImage() . RenameImage() . CloneImage() (clone) . . MarkImageReadOnly() (/ ). GetImageHostname() . GetImageMachineID() machine ID . GetImageMachineInfo() machine-info . GetImageOSRelease() (os-release) . SetPoolLimit() (quota limit) . SetImageLimit() . CleanPool() . MapFromMachineUser() MapToMachineUser() MapFromMachineGroup() MapToMachineGroup() UID/GID . (Signals) MachineNew() MachineRemoved() . org.freedesktop.machine1.Machine ( ). (Properties) PoolPath . PoolUsage . PoolLimit . MACHINE (MACHINE OBJECTS) node /org/freedesktop/machine1/machine/rawhide { interface org.freedesktop.machine1.Machine { methods: Terminate(); Kill(in s whom, in i signal); GetAddresses(out a(iay) addresses); GetSSHInfo(out s ssh_address, out s ssh_private_key_path); GetOSRelease(out a{ss} fields); GetUIDShift(out u shift); OpenPTY(out h pty, out s pty_path); OpenLogin(out h pty, out s pty_path); OpenShell(in s user, in s path, in as args, in as environment, out h pty, out s pty_path); BindMount(in s source, in s destination, in b read_only, in b mkdir); CopyFrom(in s source, in s destination); CopyTo(in s source, in s destination); CopyFromWithFlags(in s source, in s destination, in t flags); CopyToWithFlags(in s source, in s destination, in t flags); OpenRootDirectory(out h fd); properties: @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s Name = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly ay Id = [...]; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly t Timestamp = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly t TimestampMonotonic = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s Service = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s Unit = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s Subgroup = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly u Leader = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly t LeaderPIDFDId = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly u Supervisor = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly t SupervisorPIDFDId = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s Class = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s RootDirectory = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly ai NetworkInterfaces = [...]; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly u VSockCID = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s SSHAddress = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s SSHPrivateKeyPath = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly s State = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly u UID = ...; }; interface org.freedesktop.DBus.Peer { ... }; interface org.freedesktop.DBus.Introspectable { ... }; interface org.freedesktop.DBus.Properties { ... }; }; (Methods) Terminate() Kill() / . TerminateMachine() KillMachine() Manager . GetAddresses() GetSSHInfo() GetOSRelease() IP SSH . GetMachineAddresses() GetMachineSSHInfo() GetMachineOSRelease() Manager . (Properties) Name CreateMachine() Manager . Id UUID . Timestamp TimestampMonotonic (realtime) (monotonic) (epoch) . Service . Unit (scope) systemd . Leader (PID) . ( PID 1 . .) LeaderPIDFDId pidfd . Supervisor (PID) . ( . .) SupervisorPIDFDId pidfd . Class "vm" ( ) "container" ( ) . RootDirectory . NetworkInterfaces . CreateMachineWithNetwork() . VSockCID VSOCK CID VMADDR_CID_ANY . SSHAddress ssh ( ) . SSHPrivateKeyPath SSH . State "opening" "running" "closing" . API API . Subgroup (sub-cgroup) . UID (UID) . (EXAMPLES) . org.freedesktop.machine1.Manager $ gdbus introspect --system \ --dest org.freedesktop.machine1 \ --object-path /org/freedesktop/machine1 . org.freedesktop.machine1.Machine $ gdbus introspect --system \ --dest org.freedesktop.machine1 \ --object-path /org/freedesktop/machine1/machine/rawhide (VERSION COMPATIBILITY) D-Bus [2] . (HISTORY) Manager CopyFromMachineWithFlags() CopyToMachineWithFlags() . GetMachineSSHInfo() . Machine CopyFromWithFlags() CopyToWithFlags() . GetSSHInfo() VSockCID SSHAddress SSHPrivateKeyPath . LeaderPIDFDId Supervisor SupervisorPIDFDId Subgroup UID . CreateMachineEx() RegisterMachineEx() . (SEE ALSO) systemd(1), systemd-machined.service(8), machinectl(1) (NOTES) 1. (Control Group) https://systemd.io/CONTROL_GROUP_INTERFACE 2. https://0pointer.de/blog/projects/versioning-dbus.html systemd 261.2 ORG.FREEDESKTOP.MACHINE1(5)