Sysext#
Portable system extension manager. Think systemd-sysext but without systemd
Configuration#
Sysext functions without any extra configuration, however an optional config can be set either through environment variable or through /etc/sysext.conf
export MOUNTCMD="mount" # Path to the mount command
export UMOUNTCMD="umount" # Path to the umount command
export VERSION_FIELDS="ID,VERSION_ID" # os-release fields to check for version compatibility
export EXTENSION_PATHS="/var/lib/extensions" # Space seperated paths to extensions
export USRPATH="/usr" # The path to /usr on which to act on
export SKIP_VERSION_CHECK # Wether to skip checking the version of extensions
Extension format#
An extension may either be a directory, or a filesystem image that can be mounted with $MOUNTCMD. Each extension must end with .ext. The root of the extension is mounted at /usr, and version information is expected at usr/lib/extension-release.d/extension-release.<extension name>.
Example extension file tree for an extension foo.extension:
.
├── lib
│ └── extension-release.d
│ └── extension-release.foo
└── usr
└── bin
└── somebinary
Contents of extension-release.foo:
ID=fooOS
VERSION_ID="1.0"
This will allow foo.ext to be used on fooOS version 1.0.
Note that extensions are NOT compatible with systemd-sysext extensions.
For image extensions there is no clear migration path, for directory extensions one just needs to move the contents of the usr directory in the extension to the root of the extension.