ORG.FREEDESKTOP.PORTABLE1(5) org.freedesktop.portable1 (NAME) org.freedesktop.portable1 - (systemd-portabled) (DESCRIPTION) systemd-portabled.service(8) (attach) (detach) . D-Bus . MANAGER (THE MANAGER OBJECT) Manager : node /org/freedesktop/portable1 { interface org.freedesktop.portable1.Manager { methods: GetImage(in s image, out o object); ListImages(out a(ssbtttso) images); GetImageOSRelease(in s image, out a{ss} os_release); GetImageMetadata(in s image, in as matches, out s image, out ay os_release, out a{say} units); GetImageMetadataWithExtensions(in s image, in as extensions, in as matches, in t flags, out s image, out ay os_release, out a{say} extensions, out a{say} units); GetImageState(in s image, out s state); GetImageStateWithExtensions(in s image, in as extensions, in t flags, out s state); AttachImage(in s image, in as matches, in s profile, in b runtime, in s copy_mode, out a(sss) changes); AttachImageWithExtensions(in s image, in as extensions, in as matches, in s profile, in s copy_mode, in t flags, out a(sss) changes); DetachImage(in s image, in b runtime, out a(sss) changes); DetachImageWithExtensions(in s image, in as extensions, in t flags, out a(sss) changes); ReattachImage(in s image, in as matches, in s profile, in b runtime, in s copy_mode, out a(sss) changes_removed, out a(sss) changes_updated); ReattachImageWithExtensions(in s image, in as extensions, in as matches, in s profile, in s copy_mode, in t flags, out a(sss) changes_removed, out a(sss) changes_updated); RemoveImage(in s image); MarkImageReadOnly(in s image, in b read_only); SetImageLimit(in s image, in t limit); SetPoolLimit(in t limit); 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 = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly as Profiles = ['...', ...]; }; interface org.freedesktop.DBus.Peer { ... }; interface org.freedesktop.DBus.Introspectable { ... }; interface org.freedesktop.DBus.Properties { ... }; }; (Methods) GetImage() . ListImages() . : . GetImageOSRelease() (OS release) . - os-release(5) . GetImageMetadata() . os-release(5) ( ) ( ) . GetImageMetadataWithExtensions() . GetImageMetadata() () AttachImageWithExtensions() (overlay) . extension-release . GetImageState() : o detached o attached o attached-runtime o enabled o enabled-runtime o running o running-runtime GetImageStateWithExtensions() GetImageState() . flags . AttachImage() . (unit files) ( ) ( Profiles ) ( /symlink ) : o (empty) o copy o symlink o mixed drop-in (symlink) copy symlink ( : ) mixed ( /usr/ ) ( ) . ( ). : ( ). : o copy o symlink o write o mkdir . / (I/O) . ".v/" systemd.v(7) . ".v/" systemd.v(7) . AttachImageWithExtensions() . AttachImage() (overlay) . DetachImageWithExtensions() . MountImages= systemd.exec(5) systemd-sysext(8) . DetachImage() . . ( ). : ( ). : o unlink . / (I/O) . DetachImageWithExtensions() . DetachImage() AttachImageWithExtensions() . ReattachImage() AttachImage() DetachImage() . (reattach) . . AttachImage() DetachImage() ( ) AttachImage() ( ) . ReattachImageWithExtensions() . ReattachImage() . MountImages= systemd.exec(5) systemd-sysext(8) . RemoveImage() . MarkImageReadOnly() (/ ). SetPoolLimit() (quota limit) (pool) . SetImageLimit() . AttachImageWithExtensions() DetachImageWithExtensions() ReattachImageWithExtensions() . SD_SYSTEMD_PORTABLE_FORCE_ATTACH . SD_SYSTEMD_PORTABLE_FORCE_EXTENSION extension-release.NAME . : #define SD_SYSTEMD_PORTABLE_RUNTIME (UINT64_C(1) << 0) #define SD_SYSTEMD_PORTABLE_FORCE_ATTACH (UINT64_C(1) << 1) #define SD_SYSTEMD_PORTABLE_FORCE_EXTENSION (UINT64_C(1) << 2) (Properties) PoolPath . PoolUsage . PoolLimit . Profiles . IMAGE (THE IMAGE OBJECT) Image : node /org/freedesktop/portable1 { interface org.freedesktop.portable1.Image { methods: GetOSRelease(out a{ss} os_release); GetMetadata(in as matches, out s image, out ay os_release, out a{say} units); GetMetadataWithExtensions(in as extensions, in as matches, in t flags, out s image, out ay os_release, out a{say} extensions, out a{say} units); GetState(out s state); GetStateWithExtensions(in as extensions, in t flags, out s state); Attach(in as matches, in s profile, in b runtime, in s copy_mode, out a(sss) changes); AttachWithExtensions(in as extensions, in as matches, in s profile, in s copy_mode, in t flags, out a(sss) changes); Detach(in b runtime, out a(sss) changes); DetachWithExtensions(in as extensions, in t flags, out a(sss) changes); Reattach(in as matches, in s profile, in b runtime, in s copy_mode, out a(sss) changes_removed, out a(sss) changes_updated); ReattachWithExtensions(in as extensions, in as matches, in s profile, in s copy_mode, in t flags, out a(sss) changes_removed, out a(sss) changes_updated); Remove(); MarkReadOnly(in b read_only); SetLimit(in t limit); properties: @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly s Name = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly s Path = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly s Type = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly b ReadOnly = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly t CreationTimestamp = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly t ModificationTimestamp = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly t Usage = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly t Limit = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly t UsageExclusive = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly t LimitExclusive = ...; }; interface org.freedesktop.DBus.Peer { ... }; interface org.freedesktop.DBus.Introspectable { ... }; interface org.freedesktop.DBus.Properties { ... }; }; (Methods) Manager ( ). . Manager GetImage() . Manager (round trip) . : o GetOSRelease() o GetMetadata() o GetMetadataWithExtensions() o GetState() o Attach() o AttachWithExtensions() o Detach() o DetachWithExtensions() o Reattach() o ReattachWithExtensions() o Remove() o MarkReadOnly() o SetLimit() (Properties) Name . Path . Type . ReadOnly . CreationTimestamp . ModificationTimestamp . Usage . Limit . UsageExclusive . LimitExclusive . (VERSION COMPATIBILITY) D-Bus [1] . (HISTORY) Manager GetImageStateWithExtensions() . Image GetStateWithExtensions() . ReattachWithExtensions() . (SEE ALSO) systemd(1), systemd-portabled.service(8), portablectl(1) (NOTES) 1. https://0pointer.de/blog/projects/versioning-dbus.html systemd 261.2 ORG.FREEDESKTOP.PORTABLE1(5)