```
This has the effect that the huge memory page API FS is not mounted by default, starting with the next boot.
-See [Three Levels of Off](http://0pointer.de/blog/projects/three-levels-of-off.html) for more information on masking.
+See [Three Levels of Off](https://0pointer.de/blog/projects/three-levels-of-off.html) for more information on masking.
-The systemd service [systemd-remount-fs.service](http://www.freedesktop.org/software/systemd/man/systemd-remount-fs.service.html)
+The systemd service [systemd-remount-fs.service](https://www.freedesktop.org/software/systemd/man/latest/systemd-remount-fs.service.html)
is responsible for applying mount parameters from `/etc/fstab` to the actual mounts.
## Why are you telling me all this? I just want to get rid of the tmpfs backed /tmp!
Here's a brief overview of the complete set of components:
* The
- [`kernel-install(8)`](https://www.freedesktop.org/software/systemd/man/kernel-install.html)
+ [`kernel-install(8)`](https://www.freedesktop.org/software/systemd/man/latest/kernel-install.html)
script can optionally create boot loader entries that carry an initial boot
counter (the initial counter is configurable in `/etc/kernel/tries`).
* The
- [`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/systemd-boot.html)
+ [`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot.html)
boot loader optionally maintains a per-boot-loader-entry counter described by
the [UAPI.1 Boot Loader Specification](https://uapi-group.org/specifications/specs/boot_loader_specification/#boot-counting)
that is decreased by one on each attempt to boot the entry, prioritizing
counter of zero when choosing the entry to boot.
* The `boot-complete.target` target unit (see
- [`systemd.special(7)`](https://www.freedesktop.org/software/systemd/man/systemd.special.html))
+ [`systemd.special(7)`](https://www.freedesktop.org/software/systemd/man/latest/systemd.special.html))
serves as a generic extension point both for units that are necessary to
consider a boot successful (e.g. `systemd-boot-check-no-failures.service`
described below), and units that want to act only if the boot is
successful (e.g. `systemd-bless-boot.service` described below).
* The
- [`systemd-boot-check-no-failures.service(8)`](https://www.freedesktop.org/software/systemd/man/systemd-boot-check-no-failures.service.html)
+ [`systemd-boot-check-no-failures.service(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot-check-no-failures.service.html)
service is a simple service health check tool. When enabled it becomes an
indirect dependency of `systemd-bless-boot.service` (by means of
`boot-complete.target`, see below), ensuring that the boot will not be
considered successful if there are any failed services.
* The
- [`systemd-bless-boot.service(8)`](https://www.freedesktop.org/software/systemd/man/systemd-bless-boot.service.html)
+ [`systemd-bless-boot.service(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-bless-boot.service.html)
service automatically marks a boot loader entry, for which boot counting as
mentioned above is enabled, as "good" when a boot has been determined to be
successful, thus turning off boot counting for it.
* The
- [`systemd-bless-boot-generator(8)`](https://www.freedesktop.org/software/systemd/man/systemd-bless-boot-generator.html)
+ [`systemd-bless-boot-generator(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-bless-boot-generator.html)
generator automatically pulls in `systemd-bless-boot.service` when use of
`systemd-boot` with boot counting enabled is detected.
Depending on the setup, it may be most convenient to pull in such units
through normal enablement symlinks, or during early boot using a
- [`generator`](https://www.freedesktop.org/software/systemd/man/systemd.generator.html),
+ [`generator`](https://www.freedesktop.org/software/systemd/man/latest/systemd.generator.html),
or even during later boot. In the last case, care must be taken to ensure
that the start job is created before `boot-complete.target` has been
reached.
in.
Such unit would be typically wanted (or required) by one of the
- [`bootup`](https://www.freedesktop.org/software/systemd/man/bootup.html) targets,
+ [`bootup`](https://www.freedesktop.org/software/systemd/man/latest/bootup.html) targets,
for example, `multi-user.target`. To avoid potential loops due to conflicting
- [default dependencies](https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Default%20Dependencies)
+ [default dependencies](https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#Default%20Dependencies)
ordering, it is recommended to also add an explicit dependency (e.g.
`After=multi-user.target`) to the unit. This overrides the implicit ordering
and allows `boot-complete.target` to start after the given bootup target.
application use.
The [`udevadm
-lock`](https://www.freedesktop.org/software/systemd/man/udevadm.html) command
+lock`](https://www.freedesktop.org/software/systemd/man/latest/udevadm.html) command
is provided to lock block devices following this scheme from the command line,
for the use in scripts and similar. (Note though that it's typically preferable
to use native support for block device locking in tools where that's
* `1 << 5` → The boot loader supports looking for boot menu entries in the Extended Boot Loader Partition.
* `1 << 6` → The boot loader supports passing a random seed to the OS.
* `1 << 7` → The boot loader supports loading of drop-in drivers from the `/EFI/systemd/drivers/` directory on the ESP,
- see [`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/systemd-boot.html).
+ see [`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot.html).
* `1 << 8` → The boot loader supports the `sort-key` field defined by the
[Boot Loader Specification](https://uapi-group.org/specifications/specs/boot_loader_specification).
* `1 << 9` → The boot loader supports the `@saved` pseudo-entry
* `1 << 10` → The boot loader supports the `devicetree` field defined by the
[Boot Loader Specification](https://uapi-group.org/specifications/specs/boot_loader_specification).
* `1 << 11` → The boot loader support automatic enrollment of SecureBoot keys,
- see [`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/systemd-boot.html).
+ see [`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot.html).
* `1 << 12` → The boot loader will set EFI variable `ShimRetainProtocol-605dab50-e046-4300-abb6-3dd810dd8b23`
for `shim` to make its protocol available to the booted binary.
* `1 << 13` → The boot loader honours `menu-disabled` option when set.
[UAPI.1 Boot Loader Specification](https://uapi-group.org/specifications/specs/boot_loader_specification)<br>
[UAPI.2 Discoverable Partitions Specification](https://uapi-group.org/specifications/specs/discoverable_partitions_specification)<br>
-[`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/systemd-boot.html)<br>
-[`bootctl(1)`](https://www.freedesktop.org/software/systemd/man/bootctl.html)<br>
-[`systemd-gpt-auto-generator(8)`](https://www.freedesktop.org/software/systemd/man/systemd-gpt-auto-generator.html)
+[`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot.html)<br>
+[`bootctl(1)`](https://www.freedesktop.org/software/systemd/man/latest/bootctl.html)<br>
+[`systemd-gpt-auto-generator(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-gpt-auto-generator.html)
instance should automatically acquire its own identifying credentials on first
boot. For that it's essential to:
-1. Remove the [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/machine-id.html)
+1. Remove the [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html)
file or write the string `uninitialized\n` into it.
This file is supposed to carry a 128-bit identifier unique to the system.
Only when it is reset it will be auto-generated on first boot and thus be truly unique.
for example, IPv6 addresses or transient MAC addresses.
2. Remove the `/var/lib/systemd/random-seed` file(see
- [`systemd-random-seed(8)`](https://www.freedesktop.org/software/systemd/man/systemd-random-seed.service.html)),
+ [`systemd-random-seed(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-random-seed.service.html)),
which is used to seed the kernel's random pool on boot.
If this file is shipped pre-initialized, every instance will seed its random pool with the
same random data that is included in the image, and thus possibly generate
random data that is more similar to other instances booted off the same image than advisable.
3. Remove the `/loader/random-seed` file (see
- [`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/systemd-boot.html))
+ [`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot.html))
from the UEFI System Partition (ESP), in case the `systemd-boot` boot loader is used in the image.
4. It might also make sense to remove
- [`/etc/hostname`](https://www.freedesktop.org/software/systemd/man/hostname.html)
+ [`/etc/hostname`](https://www.freedesktop.org/software/systemd/man/latest/hostname.html)
and
- [`/etc/machine-info`](https://www.freedesktop.org/software/systemd/man/machine-info.html)
+ [`/etc/machine-info`](https://www.freedesktop.org/software/systemd/man/latest/machine-info.html)
which carry additional identifying information about the OS image.
5. Remove `/var/lib/systemd/credential.secret` which is used for protecting
service credentials, see
- [`systemd.exec(5)`](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Credentials)
+ [`systemd.exec(5)`](https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html#Credentials)
and
- [`systemd-creds(1)`](https://www.freedesktop.org/software/systemd/man/systemd-creds.html)
+ [`systemd-creds(1)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-creds.html)
for details. Note that by removing this file access to previously encrypted
credentials from this image is lost. The file is automatically generated if
a new credential is encrypted and the file does not exist yet.
## Boot Menu Entry Identifiers
The
-[`kernel-install(8)`](https://www.freedesktop.org/software/systemd/man/kernel-install.html)
+[`kernel-install(8)`](https://www.freedesktop.org/software/systemd/man/latest/kernel-install.html)
logic used to generate
[UAPI.1 Boot Loader Specification Type #1](https://uapi-group.org/specifications/specs/boot_loader_specification/#type-1-boot-loader-specification-entries)
entries by default uses the machine ID as stored in `/etc/machine-id` for
The file `/etc/kernel/entry-token` may be used to configure this string explicitly.
Thus, golden image builders should write a suitable identifier into
this file, for example, the `IMAGE_ID=` or `ID=` field from
-[`/etc/os-release`](https://www.freedesktop.org/software/systemd/man/os-release.html)
+[`/etc/os-release`](https://www.freedesktop.org/software/systemd/man/latest/os-release.html)
(also see below).
It is recommended to do this before the `kernel-install` functionality is invoked (i.e. before the package manager is used to install
packages into the OS tree being prepared), so that the selected string is
(see above).
3. The
- [`nss-systemd(8)`](https://www.freedesktop.org/software/systemd/man/nss-systemd.html)
+ [`nss-systemd(8)`](https://www.freedesktop.org/software/systemd/man/latest/nss-systemd.html)
glibc NSS module ensures the `root` and `nobody` users and groups remain
resolvable, even without `/etc/passwd` and `/etc/group` around.
4. The
- [`systemd-sysusers(8)`](https://www.freedesktop.org/software/systemd/man/systemd-sysusers.service.html)
+ [`systemd-sysusers(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-sysusers.service.html)
component will automatically populate `/etc/passwd` and `/etc/group` on
first boot with further necessary system users.
5. The
- [`systemd-tmpfiles(8)`](https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles-setup.service.html)
+ [`systemd-tmpfiles(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-tmpfiles-setup.service.html)
component ensures that various files and directories below `/etc/`, `/var/`
and other places are created automatically at boot if missing. Unlike the
directories/symlinks created by the `switch-root` logic above this logic is
unconditionally accessible through `/etc/os-release`.
6. The
- [`nss-myhostname(8)`](https://www.freedesktop.org/software/systemd/man/nss-myhostname.html)
+ [`nss-myhostname(8)`](https://www.freedesktop.org/software/systemd/man/latest/nss-myhostname.html)
glibc NSS module will ensure the local host name as well as `localhost`
remains resolvable, even without `/etc/hosts` around.
`systemd` provides multiple tools to implement the above logic:
1. The
- [`systemd-repart(8)`](https://www.freedesktop.org/software/systemd/man/systemd-repart.service.html)
+ [`systemd-repart(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-repart.service.html)
component may manipulate GPT partition tables automatically on boot, growing
partitions or adding in partitions taking the backing storage size into account.
It can also encrypt partitions automatically it creates (even bind
incompletely set up partitions around.
2. The
- [`systemd-growfs@(8).service`](https://www.freedesktop.org/software/systemd/man/systemd-growfs.html)
+ [`systemd-growfs@(8).service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-growfs.html)
tool can automatically grow a file system to the partition it is contained
in. The `x-systemd.growfs` mount option in `/etc/fstab` is sufficient to
enable this logic for specific mounts. Alternatively appropriately set up
with unpopulated `/etc/` trees, it sometimes is desirable to set a couple of
basic settings *after* `dd`-ing the image to disk, but *before* first boot.
For this the tool
-[`systemd-firstboot(1)`](https://www.freedesktop.org/software/systemd/man/systemd-firstboot.html)
+[`systemd-firstboot(1)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-firstboot.html)
can be useful, with its `--image=` switch. It may be used to set very basic
settings, such as the root password or hostname on an OS disk image or
installed block device.
the system from later boot-ups (for example, to set up TPM hardware specifically, or register a system somewhere).
`systemd` provides mechanisms to implement that.
Specifically, the `ConditionFirstBoot=` and `AssertFirstBoot=` settings may be used to conditionalize units to only run on first boot.
-See [`systemd.unit(5)`](https://www.freedesktop.org/software/systemd/man/systemd.unit.html#ConditionFirstBoot=)
+See [`systemd.unit(5)`](https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#ConditionFirstBoot=)
for details.
A special target unit `first-boot-complete.target` may be used as milestone to
initialization status of `/etc/machine-id`:
if the file already carries a valid ID the system is already past the first boot.
If it is not initialized yet it is still considered in the first boot state.
-For details see [`machine-id(5)`](https://www.freedesktop.org/software/systemd/man/machine-id.html).
+For details see [`machine-id(5)`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html).
## Image Metadata
Typically, when operating with golden disk images it is useful to be able to
identify them and their version.
For this the two fields `IMAGE_ID=` and `IMAGE_VERSION=` have been defined in
-[`os-release(5)`](https://www.freedesktop.org/software/systemd/man/os-release.html).
+[`os-release(5)`](https://www.freedesktop.org/software/systemd/man/latest/os-release.html).
These fields may be accessed from unit files and similar via the `%M` and `%A` specifiers.
Depending on how the images are put together it might make sense to leave the
## Links
-[`machine-id(5)`](https://www.freedesktop.org/software/systemd/man/machine-id.html)<br>
-[`systemd-random-seed(8)`](https://www.freedesktop.org/software/systemd/man/systemd-random-seed.service.html)<br>
-[`os-release(5)`](https://www.freedesktop.org/software/systemd/man/os-release.html)<br>
+[`machine-id(5)`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html)<br>
+[`systemd-random-seed(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-random-seed.service.html)<br>
+[`os-release(5)`](https://www.freedesktop.org/software/systemd/man/latest/os-release.html)<br>
[UAPI.1 Boot Loader Specification](https://uapi-group.org/specifications/specs/boot_loader_specification)<br>
[UAPI.2 Discoverable Partitions Specification](https://uapi-group.org/specifications/specs/discoverable_partitions_specification)<br>
[`mkosi`](https://github.com/systemd/mkosi)<br>
-[`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/systemd-boot.html)<br>
-[`systemd-repart(8)`](https://www.freedesktop.org/software/systemd/man/systemd-repart.service.html)<br>
-[`systemd-growfs@(8).service`](https://www.freedesktop.org/software/systemd/man/systemd-growfs.html)<br>
+[`systemd-boot(7)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot.html)<br>
+[`systemd-repart(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-repart.service.html)<br>
+[`systemd-growfs@(8).service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-growfs.html)<br>
## Format
Message catalog source files are simple text files that follow an RFC822 inspired format.
-To get an understanding of the format [here's an example file](http://cgit.freedesktop.org/systemd/systemd/plain/catalog/systemd.catalog), which includes entries for many important messages systemd itself generates.
+To get an understanding of the format [here's an example file](https://github.com/systemd/systemd/blob/main/catalog/systemd.catalog.in), which includes entries for many important messages systemd itself generates.
On installation of a package that includes message catalogs all installed message catalog source files get compiled into a binary index, which is then used to look up catalog data.
journalctl's `-x` command line parameter may be used to augment on display journal log messages with message catalog data when browsing.
-- fc2e22bc6ee647b6b90729ab34a250b1
Subject: Process @COREDUMP_PID@ (@COREDUMP_COMM@) dumped core
Defined-By: systemd
-Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
Documentation: man:core(5)
-Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
Process @COREDUMP_PID@ (@COREDUMP_COMM@) crashed and dumped core.
* When a catalog entry is printed on screen for a specific log entry simple variable replacements are applied.
Journal field names enclosed in @ will be replaced by their values, if such a field is available in an entry.
If such a field is not defined in an entry the enclosing @ will be dropped but the variable name is kept.
-See [systemd's own message catalog](http://cgit.freedesktop.org/systemd/systemd/plain/catalog/systemd.catalog) for a complete example for a catalog file.
+See [systemd's own message catalog](https://github.com/systemd/systemd/blob/main/catalog/systemd.catalog.in) for a complete example for a catalog file.
## Adding Message Catalog Support to Your Program
Note that the message catalog is only available for messages generated with the MESSAGE\_ID= journal meta data field, as this is need to find the right entry for a message.
-For more information on the MESSAGE\_ID= journal entry field see [systemd.journal-fields(7)](http://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html).
+For more information on the MESSAGE\_ID= journal entry field see [systemd.journal-fields(7)](https://www.freedesktop.org/software/systemd/man/latest/systemd.journal-fields.html).
To add message catalog entries for log messages your application generates, please follow these guidelines:
-* Use the [native Journal logging APIs](http://0pointer.de/blog/projects/journal-submit.html)
+* Use the [native Journal logging APIs](https://0pointer.de/blog/projects/journal-submit.html)
to generate your messages, and define message IDs for all messages you want to add catalog entries for.
You may use `journalctl --new-id128` to allocate new message IDs.
* Write a catalog entry file for your messages and ship them in your package and install them to `/usr/lib/systemd/catalog/`
using `systemd-nspawn` and `qemu`. Requires root.
3. Use `./coccinelle/run-coccinelle.sh` to run all
- [Coccinelle](http://coccinelle.lip6.fr/) semantic patch scripts we ship. The
+ [Coccinelle](https://coccinelle.gitlabpages.inria.fr/website/) semantic patch scripts we ship. The
output will show false positives, hence take it with a pinch of salt.
4. Use `./tools/find-double-newline.sh recdiff` to find double newlines. Use
Systemd provides three unit types that are useful for the purpose of resource control:
-- [_Services_](http://www.freedesktop.org/software/systemd/man/systemd.service.html) encapsulate a number of processes that are started and stopped by systemd based on configuration. Services are named in the style of `quux.service`.
-- [_Scopes_](http://www.freedesktop.org/software/systemd/man/systemd.scope.html) encapsulate a number of processes that are started and stopped by arbitrary processes via fork(), and then registered at runtime with PID1. Scopes are named in the style of `wuff.scope`.
-- [_Slices_](http://www.freedesktop.org/software/systemd/man/systemd.slice.html) may be used to group a number of services and scopes together in a hierarchial tree. Slices do not contain processes themselves, but the services and scopes contained in them do. Slices are named in the style of `foobar-waldo.slice`, where the path to the location of the slice in the tree is encoded in the name with "-" as separator for the path components (`foobar-waldo.slice` is hence a subslice of `foobar.slice`). There's one special slices defined, `-.slice`, which is the root slice of all slices (`foobar.slice` is hence subslice of `-.slice`). This is similar how in regular file paths, "/" denotes the root directory.
+- [_Services_](https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html) encapsulate a number of processes that are started and stopped by systemd based on configuration. Services are named in the style of `quux.service`.
+- [_Scopes_](https://www.freedesktop.org/software/systemd/man/latest/systemd.scope.html) encapsulate a number of processes that are started and stopped by arbitrary processes via fork(), and then registered at runtime with PID1. Scopes are named in the style of `wuff.scope`.
+- [_Slices_](https://www.freedesktop.org/software/systemd/man/latest/systemd.slice.html) may be used to group a number of services and scopes together in a hierarchial tree. Slices do not contain processes themselves, but the services and scopes contained in them do. Slices are named in the style of `foobar-waldo.slice`, where the path to the location of the slice in the tree is encoded in the name with "-" as separator for the path components (`foobar-waldo.slice` is hence a subslice of `foobar.slice`). There's one special slices defined, `-.slice`, which is the root slice of all slices (`foobar.slice` is hence subslice of `-.slice`). This is similar how in regular file paths, "/" denotes the root directory.
Service, scope and slice units directly map to objects in the cgroup tree. When these units are activated they each map to directly (modulo some character escaping) to cgroup paths built from the unit names. For example, a service `quux.service` in a slice `foobar-waldo.slice` is found in the cgroup `foobar.slice/foobar-waldo.slice/quux.service/`.
Service and slice units may be configured via unit files on disk, or alternatively be created dynamically at runtime via API calls to PID 1. Scope units may only be created at runtime via API calls to PID 1, but not from unit files on disk. Units that are created dynamically at runtime via API calls are called _transient_ units. Transient units exist only during runtime and are released automatically as soon as they finished/got deactivated or the system is rebooted.
-If a service/slice is configured via unit files on disk the resource controls may be configured with the settings documented in [systemd.resource-control(5)](http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html). While the unit is started it may be reconfigured for services/slices/scopes (with changes applying instantly) with a command line such as:
+If a service/slice is configured via unit files on disk the resource controls may be configured with the settings documented in [systemd.resource-control(5)](https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html). While the unit is started it may be reconfigured for services/slices/scopes (with changes applying instantly) with a command line such as:
```
# systemctl set-property httpd.service CPUShares=500 MemoryLimit=500M
To alter resource control properties at runtime use the `SetUnitProperty()` call on the `Manager` object or `SetProperty()` on the individual Unit objects. This also takes an array of properties to set, in the same format as `StartTransientUnit()` takes. Note again that this is not a dictionary, and allows properties to be set multiple times with a single invocation. THis is useful for array properties: if a property is assigned the empty array it will be reset to the empty array itself, however if it is assigned a non-empty array then this array is appended to the previous array. This mimics behaviour of array settings in unit files. Note that most settings may only be set during creation of units with `StartTransientUnit()`, and may not be altered later on. The exception here are the resource control settings, more specifically `CPUAccounting`, `CPUShares`, `BlockIOAccounting`, `BlockIOWeight`, `BlockIOReadBandwidth`, `BlockIOWriteBandwidth`, `BlockIODeviceWeight`, `MemoryAccounting`, `MemoryLimit`, `DevicePolicy`, `DeviceAllow` for services/scopes/slices. Note that the standard D-Bus `org.freedesktop.DBus.Properties.Set()` call is currently not supported by any of the unit objects to set these properties, but might eventually (note however, that it is substantially less useful as it only allows setting a single property at a time, resulting in races).
-The [`systemctl set-property`](http://www.freedesktop.org/software/systemd/man/systemctl.html) command internally is little more than a wrapper around `SetUnitProperty()`. The [`systemd-run`](http://www.freedesktop.org/software/systemd/man/systemd-run.html) tool is a wrapper around `StartTransientUnit()`. It may be used to either run a process as a transient service in the background, where it is invoked from PID 1, or alternatively as a scope unit in the foreground, where it is run from the `systemd-run` process itself.
+The [`systemctl set-property`](https://www.freedesktop.org/software/systemd/man/latest/systemctl.html) command internally is little more than a wrapper around `SetUnitProperty()`. The [`systemd-run`](https://www.freedesktop.org/software/systemd/man/latest/systemd-run.html) tool is a wrapper around `StartTransientUnit()`. It may be used to either run a process as a transient service in the background, where it is invoked from PID 1, or alternatively as a scope unit in the foreground, where it is run from the `systemd-run` process itself.
### Enumeration
-To acquire a list of currently running units, use the `ListUnits()` call on the Manager bus object. To determine the scope/service unit and slice unit a process is running in use [`sd_pid_get_unit()`](http://www.freedesktop.org/software/systemd/man/sd_pid_get_unit.html) and `sd_pid_get_slice()`. These two calls are implemented in `libsystemd-login.so`. These call bypass the system bus (which they can because they are passive and do not require privileges) and are hence very efficient to invoke.
+To acquire a list of currently running units, use the `ListUnits()` call on the Manager bus object. To determine the scope/service unit and slice unit a process is running in use [`sd_pid_get_unit()`](https://www.freedesktop.org/software/systemd/man/latest/sd_pid_get_unit.html) and `sd_pid_get_slice()`. These two calls are implemented in `libsystemd-login.so`. These call bypass the system bus (which they can because they are passive and do not require privileges) and are hence very efficient to invoke.
### VM and Container Managers
Traditionally on most Linux distributions, regular (human) users are managed
via entries in `/etc/passwd`, `/etc/shadow`, `/etc/group` and `/etc/gshadow`.
With the advent of
-[`systemd-homed`](https://www.freedesktop.org/software/systemd/man/systemd-homed.service.html)
+[`systemd-homed`](https://www.freedesktop.org/software/systemd/man/latest/systemd-homed.service.html)
it might be desirable to convert an existing, traditional user account to a
`systemd-homed` managed one.
Below is a brief guide how to do that.
group as new primary group, but will have it as auxiliary group.
Consider reading through the
- [homectl(1)](https://www.freedesktop.org/software/systemd/man/homectl.html)
+ [homectl(1)](https://www.freedesktop.org/software/systemd/man/latest/homectl.html)
manual page at this point, maybe there are a couple of other settings you want to set for your new account.
In particular, look at `--storage=` and `--disk-size=`, in order to change how your home directory shall be stored
(the default `luks` storage is recommended).
## `systemd-coredump` Handler
The systemd suite provides a coredump handler
-[`systemd-coredump`](https://www.freedesktop.org/software/systemd/man/systemd-coredump.html)
+[`systemd-coredump`](https://www.freedesktop.org/software/systemd/man/latest/systemd-coredump.html)
which can be enabled at build-time. It is activated during boot via the
`/usr/lib/sysctl.d/50-coredump.conf` drop-in file for
`systemd-sysctl.service`. It registers the `systemd-coredump` tool as
[ELF packaging metadata](/PACKAGE_METADATA_FOR_EXECUTABLE_FILES)
from any coredumps it receives and log both.
The information about coredumps stored in the journal can be enumerated and queried with the
-[`coredumpctl`](https://www.freedesktop.org/software/systemd/man/coredumpctl.html)
+[`coredumpctl`](https://www.freedesktop.org/software/systemd/man/latest/coredumpctl.html)
tool, for example for directly invoking a debugger such as `gdb` on a collected
coredump.
The handler writes coredump files to `/var/lib/systemd/coredump/`.
Old files are cleaned up periodically by
-[`systemd-tmpfiles(8)`](https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html).
+[`systemd-tmpfiles(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-tmpfiles.html).
## User Experience
code can then retrieve it. Each name should only be specified once.
For details about these settings [see the man
-page](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Credentials).
+page](https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html#Credentials).
It is a good idea to also enable mount namespacing for services that process
credentials configured this way. If so, the runtime credential directory of the
## Programming Interface from Generator Code
-[Generators](https://www.freedesktop.org/software/systemd/man/systemd.generator.html)
+[Generators](https://www.freedesktop.org/software/systemd/man/latest/systemd.generator.html)
may generate native unit files from external configuration or system
parameters, such as system credentials. Note that they run outside of service
context, and hence will not receive encrypted credentials in plaintext
plaintext form will be placed in `$CREDENTIALS_DIRECTORY`. Use a command such
as `systemd-creds --system cat …` to access both forms of credentials, and
decrypt them if needed (see
-[systemd-creds(1)](https://www.freedesktop.org/software/systemd/man/systemd-creds.html)
+[systemd-creds(1)](https://www.freedesktop.org/software/systemd/man/latest/systemd-creds.html)
for details.
Note that generators typically run very early during boot (similar to initrd
## Tools
The
-[`systemd-creds`](https://www.freedesktop.org/software/systemd/man/systemd-creds.html)
+[`systemd-creds`](https://www.freedesktop.org/software/systemd/man/latest/systemd-creds.html)
tool is provided to work with system and service credentials. It may be used to
access and enumerate system and service credentials, or to encrypt/decrypt credentials
(for details about the latter, see below).
1. A container manager may set the `$CREDENTIALS_DIRECTORY` environment
variable for systemd running as PID 1 in the container, the same way as
systemd would set it for a service it invokes.
- [`systemd-nspawn(1)`](https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#Credentials)'s
+ [`systemd-nspawn(1)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-nspawn.html#Credentials)'s
`--set-credential=` and `--load-credential=` switches implement this, in
order to pass arbitrary credentials from host to container payload. Also see
the [Container Interface](/CONTAINER_INTERFACE) documentation.
4. Credentials may also be passed from the UEFI environment to userspace, if
the
- [`systemd-stub`](https://www.freedesktop.org/software/systemd/man/systemd-stub.html)
+ [`systemd-stub`](https://www.freedesktop.org/software/systemd/man/latest/systemd-stub.html)
UEFI kernel stub is used.
This allows placing encrypted credentials in the EFI System Partition, which are then picked up by `systemd-stub` and passed to the kernel and ultimately userspace where systemd receives them.
This is useful to implement secure parameterization of vendor-built and signed
Various services shipped with `systemd` consume credentials for tweaking behaviour:
-* [`systemd(1)`](https://www.freedesktop.org/software/systemd/man/systemd.html)
+* [`systemd(1)`](https://www.freedesktop.org/software/systemd/man/latest/systemd.html)
(I.E.: PID1, the system manager) will look for the credential `vmm.notify_socket`
and will use it to send a `READY=1` datagram when the system has finished
booting.
The credential payload should be in the form: `vsock:<CID>:<PORT>`.
Also note that this requires support for VSOCK to be built in both the guest and the host kernels, and the kernel modules to be loaded.
-* [`systemd-sysusers(8)`](https://www.freedesktop.org/software/systemd/man/systemd-sysusers.html)
+* [`systemd-sysusers(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-sysusers.html)
will look for the credentials `passwd.hashed-password.<username>`,
`passwd.plaintext-password.<username>` and `passwd.shell.<username>` to
configure the password (either in UNIX hashed form, or plaintext) or shell of
system users created.
Replace `<username>` with the system user of your choice, for example, `root`.
-* [`systemd-firstboot(1)`](https://www.freedesktop.org/software/systemd/man/systemd-firstboot.html)
+* [`systemd-firstboot(1)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-firstboot.html)
will look for the credentials `firstboot.locale`, `firstboot.locale-messages`,
`firstboot.keymap`, `firstboot.timezone`, that configure locale, keymap or
timezone settings in case the data is not yet set in `/etc/`.
-* [`tmpfiles.d(5)`](https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html)
+* [`tmpfiles.d(5)`](https://www.freedesktop.org/software/systemd/man/latest/tmpfiles.d.html)
will look for the credentials `tmpfiles.extra` with arbitrary tmpfiles.d lines.
Can be encoded in base64 to allow easily passing it on the command line.
* Further well-known credentials are documented in
- [`systemd.system-credentials(7)`](https://www.freedesktop.org/software/systemd/man/systemd.system-credentials.html).
+ [`systemd.system-credentials(7)`](https://www.freedesktop.org/software/systemd/man/latest/systemd.system-credentials.html).
In future more services are likely to gain support for consuming credentials.
* Try CTRL+ALT+DEL to reboot.
* If it does not reboot, mention it in your bugreport. Meanwhile force the reboot with
- [SysRq](http://fedoraproject.org/wiki/QA/Sysrq)
+ [SysRq](https://fedoraproject.org/wiki/QA/Sysrq)
or hard reset.
* When booting the next time, you will have to add some kernel command line arguments depending on which of the debugging strategies you choose from the following options.
## Pre-defined systemd units
-[`systemd.special(7)`](https://www.freedesktop.org/software/systemd/man/systemd.special.html)
+[`systemd.special(7)`](https://www.freedesktop.org/software/systemd/man/latest/systemd.special.html)
defines the `graphical-session.target` and `graphical-session-pre.target` to
allow cross-desktop integration. Furthermore, systemd defines the three base
slices `background`, `app` and `session`.
vendor pool at ntp.org and make it the built-in default by
passing `-Dntp-servers=` to meson.
Registering vendor pools is
-[free](http://www.pool.ntp.org/en/vendors.html).
+[free](https://www.pool.ntp.org/en/vendors.html).
Use `-Dntp-servers=` to direct systemd-timesyncd to different fallback
NTP servers.
# systemctl start serial-getty@ttyS2.service
```
-Note that gettys on the virtual console are started on demand. You can control how many you get via the NAutoVTs= setting in [logind.conf(7)](http://www.freedesktop.org/software/systemd/man/systemd-logind.service).
-Also see [this blog story](http://0pointer.de/blog/projects/serial-console.html).
+Note that gettys on the virtual console are started on demand. You can control how many you get via the NAutoVTs= setting in [logind.conf(7)](https://www.freedesktop.org/software/systemd/man/latest/systemd-logind.service.html).
+Also see [this blog story](https://0pointer.de/blog/projects/serial-console.html).
**Q: How to I figure out which service a process belongs to?**
...
```
-Or you can even check /proc/$PID/cgroup directly. Also see [this blog story](http://0pointer.de/blog/projects/systemd-for-admins-2.html).
+Or you can even check /proc/$PID/cgroup directly. Also see [this blog story](https://0pointer.de/blog/projects/systemd-for-admins-2.html).
**Q: Why don't you use inotify to reload the unit files automatically on change?**
UNIX file descriptors) on behalf of a service, and then passes them to the
service during activation of the service via UNIX file descriptor (short: *fd*)
passing over `execve()`. This is primarily exposed in the
-[.socket](https://www.freedesktop.org/software/systemd/man/systemd.socket.html)
+[.socket](https://www.freedesktop.org/software/systemd/man/latest/systemd.socket.html)
unit type.
The *file* *descriptor* *store* (short: *fdstore*) extends this concept, and
## Basic Mechanism
The fdstore is enabled per-service via the
-[`FileDescriptorStoreMax=`](https://www.freedesktop.org/software/systemd/man/systemd.service.html#FileDescriptorStoreMax=)
+[`FileDescriptorStoreMax=`](https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html#FileDescriptorStoreMax=)
service setting. It defaults to zero (which means the fdstore logic is turned
off), but can take an unsigned integer value that controls how many fds to
permit the service to upload to the service manager to keep simultaneously.
If set to values > 0, the fdstore is enabled. When invoked the service may now
(asynchronously) upload file descriptors to the fdstore via the
-[`sd_pid_notify_with_fds()`](https://www.freedesktop.org/software/systemd/man/sd_pid_notify_with_fds.html)
+[`sd_pid_notify_with_fds()`](https://www.freedesktop.org/software/systemd/man/latest/sd_pid_notify_with_fds.html)
API call (or an equivalent re-implementation). When uploading the fds it is
necessary to set the `FDSTORE=1` field in the message, to indicate what the fd
is intended for. It's recommended to also set the `FDNAME=…` field to any
`$LISTEN_FDS`, `$LISTEN_PID`, `$LISTEN_PIDFDID`, and `$LISTEN_FDNAMES`
environment variables will be set (the latter will be populated from the
`FDNAME=…` field mentioned above). See
-[`sd_listen_fds()`](https://www.freedesktop.org/software/systemd/man/sd_listen_fds.html)
+[`sd_listen_fds()`](https://www.freedesktop.org/software/systemd/man/latest/sd_listen_fds.html)
for details on receiving such fds in a service. (Note that the name set in
`FDNAME=…` does not need to be unique, which is useful when operating with
multiple fully equivalent sockets or similar, for example for a service that
it — executed synchronously one after the other — will likely not.
This behavior can be modified via the
-[`FileDescriptorStorePreserve=`](https://www.freedesktop.org/software/systemd/man/systemd.service.html#FileDescriptorStorePreserve=)
+[`FileDescriptorStorePreserve=`](https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html#FileDescriptorStorePreserve=)
setting in service unit files. If set to `yes` the fdstore will be kept as long
as the service definition is loaded into memory by the service manager, i.e. as
long as at least one other loaded unit has a reference to it.
service code itself. Pushing fds into or removing fds from the fdstore is
subject to the access control restrictions of any other `sd_notify()` message,
which is controlled via
-[`NotifyAccess=`](https://www.freedesktop.org/software/systemd/man/systemd.service.html#NotifyAccess=).
+[`NotifyAccess=`](https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html#NotifyAccess=).
By default only the main service process hence can push/remove fds, but by
setting `NotifyAccess=all` this may be relaxed to allow arbitrary service
## Soft Reboot
The fdstore is particularly interesting in [soft
-reboot](https://www.freedesktop.org/software/systemd/man/systemd-soft-reboot.service.html)
+reboot](https://www.freedesktop.org/software/systemd/man/latest/systemd-soft-reboot.service.html)
scenarios, as per `systemctl soft-reboot` (which restarts userspace like in a
real reboot, but leaves the kernel running). File descriptor stores that remain
loaded at the very end of the system cycle — just before the soft-reboot – are
continuously).
For further details see [Resource
-Pass-Through](https://www.freedesktop.org/software/systemd/man/systemd-soft-reboot.service.html#Resource%20Pass-Through).
+Pass-Through](https://www.freedesktop.org/software/systemd/man/latest/systemd-soft-reboot.service.html#Resource%20Pass-Through).
## Initrd Transitions
## Debugging
The
-[`systemd-analyze`](https://www.freedesktop.org/software/systemd/man/systemd-analyze.html#systemd-analyze%20fdstore%20%5BUNIT...%5D)
+[`systemd-analyze`](https://www.freedesktop.org/software/systemd/man/latest/systemd-analyze.html#systemd-analyze%20fdstore%20%5BUNIT...%5D)
tool may be used to list the current contents of the fdstore of any running
service.
The
-[`systemd-run`](https://www.freedesktop.org/software/systemd/man/systemd-run.html)
+[`systemd-run`](https://www.freedesktop.org/software/systemd/man/latest/systemd-run.html)
tool may be used to quickly start a testing binary or similar as a service. Use
`-p FileDescriptorStoreMax=4711` to enable the fdstore from `systemd-run`'s
command line. By using the `-t` switch you can even interactively communicate
# Home Directories
-[`systemd-homed.service(8)`](https://www.freedesktop.org/software/systemd/man/systemd-homed.service.html)
+[`systemd-homed.service(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-homed.service.html)
manages home directories of regular ("human") users.
Each directory it manages encapsulates both the data store and the user record of the user,
so that it comprehensively describes the user account, and is thus naturally portable
If the plain directory or `btrfs` subvolume storage mechanism of
`systemd-homed` is used (i.e. `--storage=directory` or `--storage=subvolume` on
the
-[`homectl(1)`](https://www.freedesktop.org/software/systemd/man/homectl.html)
+[`homectl(1)`](https://www.freedesktop.org/software/systemd/man/latest/homectl.html)
command line) the home directory requires no special setup besides including
the user record in the `~/.identity` file.
* LSB header dependency information matters. The SysV implementations on many distributions did not use the dependency information encoded in LSB init script headers, or used them only in very limited ways. Due to that they are often incorrect or incomplete. systemd however fully interprets these headers and follows them closely at runtime (and not at installation time like some implementations).
* Timeouts apply to all init script operations in systemd. While on SysV systems a hanging init script could freeze the system on systemd all init script operations are subject to a timeout of 5min.
* Services are executed in completely clean execution contexts, no context of the invoking user session is inherited. Not even $HOME or similar are set. Init scripts depending on these will not work correctly.
-* Services cannot read from stdin, as this will be connected to /dev/null. That means interactive init scripts are not supported (i.e. Debian's X-Interactive in the LSB header is not supported either.) Thankfully most distributions do not support interaction in init scripts anyway. If you need interaction to ask disk or SSL passphrases please consider using the minimal password querying framework systemd supports. ([details](/PASSWORD_AGENTS), [manual page](http://0pointer.de/public/systemd-man/systemd-ask-password.html))
+* Services cannot read from stdin, as this will be connected to /dev/null. That means interactive init scripts are not supported (i.e. Debian's X-Interactive in the LSB header is not supported either.) Thankfully most distributions do not support interaction in init scripts anyway. If you need interaction to ask disk or SSL passphrases please consider using the minimal password querying framework systemd supports. ([details](/PASSWORD_AGENTS), [manual page](https://0pointer.de/public/systemd-man/systemd-ask-password.html))
* Additional verbs for init scripts are not supported. If your init script traditionally supported additional verbs for your init script simply move them to an auxiliary script.
* Additional parameters to the standard verbs (i.e. to "start", "stop" and "status") are not supported. This was an extension of SysV that never was standardized officially, and is not supported in systemd.
* Overriding the "restart" verb is not supported. This verb is always implemented by systemd itself, and consists of a "stop" followed by a "start".
# Inhibitor Locks
-systemd 183 and newer include a logic to inhibit system shutdowns and sleep states. This is implemented as part of [systemd-logind.daemon(8)](http://www.freedesktop.org/software/systemd/man/systemd-logind.service.html) There are a couple of different use cases for this:
+systemd 183 and newer include a logic to inhibit system shutdowns and sleep states. This is implemented as part of [systemd-logind.daemon(8)](https://www.freedesktop.org/software/systemd/man/latest/systemd-logind.service.html) There are a couple of different use cases for this:
- A CD burning application wants to ensure that the system is not turned off or suspended while the burn process is in progress.
If such a lock is taken the operation will fail (but still may be overridden if the user possesses the necessary privileges).
2. _delay_ inhibits operations only temporarily, either until the lock is released or up to a certain amount of time.
-The InhibitDelayMaxSec= setting in [logind.conf(5)](http://www.freedesktop.org/software/systemd/man/logind.conf.html) controls the timeout for this. This is intended to be used by applications which need a synchronous way to execute actions before system suspend but shall not be allowed to block suspend indefinitely.
+The InhibitDelayMaxSec= setting in [logind.conf(5)](https://www.freedesktop.org/software/systemd/man/latest/logind.conf.html) controls the timeout for this. This is intended to be used by applications which need a synchronous way to execute actions before system suspend but shall not be allowed to block suspend indefinitely.
This mode is only available for _sleep_ and _shutdown_ locks.
3. _block-weak_ is identical to _block_, but has no effect on operations
The **BlockInhibited** and **DelayInhibited** properties encode what types of locks are currently taken. These fields are a colon separated list of `shutdown`, `sleep`, `idle`, `handle-power-key`, `handle-suspend-key`, `handle-hibernate-key`, `handle-lid-switch`. The list is basically the union of the What fields of all currently active locks of the specific mode.
-**InhibitDelayMaxUSec** contains the delay timeout value as configured in [logind.conf(5)](http://www.freedesktop.org/software/systemd/man/logind.conf.html).
+**InhibitDelayMaxUSec** contains the delay timeout value as configured in [logind.conf(5)](https://www.freedesktop.org/software/systemd/man/latest/logind.conf.html).
The **PreparingForShutdown** and **PreparingForSleep** boolean properties are true between the two PrepareForShutdown() resp PrepareForSleep() signals that are sent out.
Note that these properties do not trigger PropertyChanged signals.
If an application finds a lock denied it should not consider this much of an error and just continue its operation without the protecting lock.
-The tool [systemd-inhibit(1)](http://www.freedesktop.org/software/systemd/man/systemd-inhibit.html) may be used to take locks or list active locks from the command line.
+The tool [systemd-inhibit(1)](https://www.freedesktop.org/software/systemd/man/latest/systemd-inhibit.html) may be used to take locks or list active locks from the command line.
-Note that gnome-session also provides an [inhibitor API](http://people.gnome.org/~mccann/gnome-session/docs/gnome-session.html#org.gnome.SessionManager.Inhibit), which is very similar to the one of systemd.
+Note that gnome-session also provides an [inhibitor API](https://gnome.pages.gitlab.gnome.org/gnome-session/re06.html), which is very similar to the one of systemd.
Internally, locks taken on gnome-session's interface will be forwarded to logind, hence both APIs are supported.
While both offer similar functionality they do differ in some regards.
For interfacing with web technologies there's the Journal JSON Format, described below.
The binary format on disk is documented as the [Journal File Format](/JOURNAL_FILE_FORMAT)._
-_Before reading on, please make sure you are aware of the [basic properties of journal entries](https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html), in particular realize that they may include binary non-text data (though usually don't), and the same field might have multiple values assigned within the same entry (though usually hasn't)._
+_Before reading on, please make sure you are aware of the [basic properties of journal entries](https://www.freedesktop.org/software/systemd/man/latest/systemd.journal-fields.html), in particular realize that they may include binary non-text data (though usually don't), and the same field might have multiple values assigned within the same entry (though usually hasn't)._
When exporting journal data for other uses or transferring it via the network/local IPC the _journal export format_ is used.
It's a simple serialization of journal entries, that is easy to read without any special tools, but still binary safe where necessary.
For binary transfer of journal data across the network there's the Journal Export Format described above.
The binary format on disk is documented as [Journal File Format](/JOURNAL_FILE_FORMAT)._
-_Before reading on, please make sure you are aware of the [basic properties of journal entries](https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html), in particular realize that they may include binary non-text data (though usually don't), and the same field might have multiple values assigned within the same entry (though usually hasn't)._
+_Before reading on, please make sure you are aware of the [basic properties of journal entries](https://www.freedesktop.org/software/systemd/man/latest/systemd.journal-fields.html), in particular realize that they may include binary non-text data (though usually don't), and the same field might have multiple values assigned within the same entry (though usually hasn't)._
In most cases the Journal JSON serialization is the obvious mapping of the entry field names (as JSON strings) to the entry field values (also as JSON strings) encapsulated in one JSON object. However, there are a few special cases to handle:
That said we'll of course try hard to keep this document up-to-date and accurate.
Instead of implementing your own reader or writer for journal files we ask you to use the
-[Journal's native CAPI](https://www.freedesktop.org/software/systemd/man/sd-journal.html)
+[Journal's native CAPI](https://www.freedesktop.org/software/systemd/man/latest/sd-journal.html)
to access these files.
It provides you with full access to the files, and will not withhold any data.
If you find a limitation, please ping us and we might add some additional interfaces for you.
Due to its stream-based nature it is not indexed.
_Or, to put this in other words: this low-level document is probably not what you want to use as base of your project.
-You want our [C API](https://www.freedesktop.org/software/systemd/man/sd-journal.html) instead!
+You want our [C API](https://www.freedesktop.org/software/systemd/man/latest/sd-journal.html) instead!
And if you really don't want the C API, then you want the
[Journal Export Format or Journal JSON Format](/JOURNAL_EXPORT_FORMATS) instead!
This document is primarily for your entertainment and education.
This document assumes you have a basic understanding of the journal concepts, the properties of a journal entry and so on.
If not, please go and read up, then come back!
This is a good opportunity to read about the
-[basic properties of journal entries](https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html),
+[basic properties of journal entries](https://www.freedesktop.org/software/systemd/man/latest/systemd.journal-fields.html),
in particular realize that they may include binary non-text data (though usually don't),
and the same field might have multiple values assigned within the same entry.
The latter is what this document is about: if you are developing a program and
want to pass structured log data to `journald`, it's the Journal's native
protocol that you want to use. The systemd project provides the
-[`sd_journal_print(3)`](https://www.freedesktop.org/software/systemd/man/sd_journal_print.html)
+[`sd_journal_print(3)`](https://www.freedesktop.org/software/systemd/man/latest/sd_journal_print.html)
API that implements the client side of this protocol. This document explains
what this interface does behind the scenes, in case you'd like to implement a
client for it yourself, without linking to `libsystemd` — for example because
are `PRIORITY=`, `CODE_FILE=`, `CODE_LINE=`, `CODE_FUNC=`, `ERRNO=`. It's
recommended to generate these fields implicitly on the client side. For further
information see the [relevant documentation of these
-fields](https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html).
+fields](https://www.freedesktop.org/software/systemd/man/latest/systemd.journal-fields.html).
The order in which the fields are serialized within one datagram is undefined
and may be freely chosen by the client. The server side might or might not
pressure handling:
* The
- [`MemoryPressureWatch=`](https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#MemoryPressureWatch=)
+ [`MemoryPressureWatch=`](https://www.freedesktop.org/software/systemd/man/latest/systemd.resource-control.html#MemoryPressureWatch=)
setting controls whether to enable the memory pressure protocol for the
service in question.
## Memory Pressure Events in `sd-event`
The
-[`sd-event`](https://www.freedesktop.org/software/systemd/man/sd-event.html)
+[`sd-event`](https://www.freedesktop.org/software/systemd/man/latest/sd-event.html)
event loop library provides two API calls that encapsulate the
functionality described above:
* The
- [`sd_event_add_memory_pressure()`](https://www.freedesktop.org/software/systemd/man/sd_event_add_memory_pressure.html)
+ [`sd_event_add_memory_pressure()`](https://www.freedesktop.org/software/systemd/man/latest/sd_event_add_memory_pressure.html)
call implements the service-side of the memory pressure protocol and
integrates it with an `sd-event` event loop. It reads the two environment
variables, connects/opens the specified file, writes the specified data to it,
and places all its processes back in the root cgroup of the "cpu" hierarchy, which has the full RT budget assigned.
* A third option is to simply assign your service a realtime budget.
For that use `ControlGroupAttribute=cpu.rt_runtime_us 500000` in its `[Service]` or suchlike.
-See [the kernel documentation](http://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt) for details.
+See [the kernel documentation](https://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt) for details.
The latter two options are not available for System V services.
A possible solution is to write a small wrapper service file that simply calls the SysV script's start verb in `ExecStart=` and the stop verb in `ExecStop=`.
(It also needs to set `RemainAfterExit=1` and `Type=forking`!)
client software that cannot operate without network.
For more details about those targets, see the
-[systemd.special(7)](https://www.freedesktop.org/software/systemd/man/systemd.special.html)
+[systemd.special(7)](https://www.freedesktop.org/software/systemd/man/latest/systemd.special.html)
man page.
# Discussion
LSB defines a `$network` dependency for legacy init scripts.
However, it is defined [only very
-unprecisely](http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/facilname.html)
+unprecisely](https://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/facilname.html)
and people tend to have different ideas what it is supposed to mean. Here are a
couple of ideas people came up with so far:
actually (yet or ever) configured locally. This also makes your code robust
towards network configuration changes. This is provided as `FreeBind=`
for systemd services, see
- [systemd.socket(5)](https://www.freedesktop.org/software/systemd/man/systemd.socket.html).
+ [systemd.socket(5)](https://www.freedesktop.org/software/systemd/man/latest/systemd.socket.html).
An exception to the above recommendations is services which require network
connectivity, but do not delay system startup. An example may be a service
For example, `systemd-networkd-wait-online.service` will wait until all
interfaces that are present and managed by
-[systemd-networkd.service(8)](https://www.freedesktop.org/software/systemd/man/systemd-networkd.service.html).
+[systemd-networkd.service(8)](https://www.freedesktop.org/software/systemd/man/latest/systemd-networkd.service.html).
are fully configured or failed and at least one link is online; see
-[systemd-networkd-wait-online.service(8)](https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online.service.html)
+[systemd-networkd-wait-online.service(8)](https://www.freedesktop.org/software/systemd/man/latest/systemd-networkd-wait-online.service.html)
for details. Those conditions are affected by the presence of configuration
that matches various links, but also by settings like
`Unmanaged=`, `RequiredForOnline=`, `RequiredFamilyForOnline=`; see
-[systemd.network(5)](https://www.freedesktop.org/software/systemd/man/systemd.network.html).
+[systemd.network(5)](https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html).
It is also possible to plug in additional checks for network state. For
example, to delay `network-online.target` until a specific host is
19. Make use of EXT4_IOC_MOVE_EXT in systemd's readahead implementation.
This allows reordering/defragmentation of the files needed for boot.
-According to the data from [http://e4rat.sourceforge.net/](http://e4rat.sourceforge.net/) this might shorten the boot time to 40%.
+According to the data from [https://e4rat.sourceforge.net/](https://e4rat.sourceforge.net/) this might shorten the boot time to 40%.
Implementation is not trivial, but given that we already support btrfs defragmentation and example code for this exists (e4rat as linked) should be fairly straightforward.
20. Compress readahead pack files with XZ or so.Since boot these days tends to be clearly IO bound (and not CPU bound) it might make sense to reduce the IO load for the pack file by compressing it. Since we already have a dependency on XZ we'd recommend using XZ for this.
Example: the output of `systemctl status` is not stable, but that of `systemctl show` is, because the former is intended to be human-readable and the latter computer readable, and this is documented in the man page.
* **The protocol spoken on the socket referred to by `$NOTIFY_SOCKET`**, as documented in
- [sd_notify(3)](https://www.freedesktop.org/software/systemd/man/sd_notify.html). Note that, although using
+ [sd_notify(3)](https://www.freedesktop.org/software/systemd/man/latest/sd_notify.html). Note that, although using
libsystemd is a good choice, this protocol can also be reimplemented without external dependencies, as
demonstrated in the example listed in
- [sd_notify(3)](https://www.freedesktop.org/software/systemd/man/devel/sd_notify.html#Notes)
+ [sd_notify(3)](https://www.freedesktop.org/software/systemd/man/latest/sd_notify.html#Notes)
* Some of the **"special" unit names** and their semantics.
To be precise the ones that are necessary for normal services, and not those required only for early boot and late shutdown, with very few exceptions.
| API | Type | Covered by Interface Stability Promise | Fully documented | Known External Consumers | Reimplementable Independently | Known Other Implementations | systemd Implementation portable to other OSes or non-systemd distributions |
| --- | ---- | ----------------------------------------------------------------------------------------- | ---------------- | ------------------------ | ----------------------------- | --------------------------- | -------------------------------------------------------------------------- |
-| [hostnamed](https://www.freedesktop.org/software/systemd/man/org.freedesktop.hostname1.html) | D-Bus | yes | yes | GNOME | yes | [Ubuntu](https://launchpad.net/ubuntu/+source/ubuntu-system-service), [Gentoo](http://www.gentoo.org/proj/en/desktop/gnome/openrc-settingsd.xml), [BSD](http://uglyman.kremlin.cc/gitweb/gitweb.cgi?p=systembsd.git;a=summary) | partially |
-| [localed](https://www.freedesktop.org/software/systemd/man/org.freedesktop.locale1.html) | D-Bus | yes | yes | GNOME | yes | [Ubuntu](https://launchpad.net/ubuntu/+source/ubuntu-system-service), [Gentoo](http://www.gentoo.org/proj/en/desktop/gnome/openrc-settingsd.xml), [BSD](http://uglyman.kremlin.cc/gitweb/gitweb.cgi?p=systembsd.git;a=summary) | partially |
-| [timedated](https://www.freedesktop.org/software/systemd/man/org.freedesktop.timedate1.html) | D-Bus | yes | yes | GNOME | yes | [Gentoo](http://www.gentoo.org/proj/en/desktop/gnome/openrc-settingsd.xml), [BSD](http://uglyman.kremlin.cc/gitweb/gitweb.cgi?p=systembsd.git;a=summary) | partially |
+| [hostnamed](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.hostname1.html) | D-Bus | yes | yes | GNOME | yes | [Ubuntu](https://launchpad.net/ubuntu/+source/ubuntu-system-service), [Gentoo](https://www.gentoo.org/proj/en/desktop/gnome/openrc-settingsd.xml), [BSD](http://uglyman.kremlin.cc/gitweb/gitweb.cgi?p=systembsd.git;a=summary) | partially |
+| [localed](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.locale1.html) | D-Bus | yes | yes | GNOME | yes | [Ubuntu](https://launchpad.net/ubuntu/+source/ubuntu-system-service), [Gentoo](https://www.gentoo.org/proj/en/desktop/gnome/openrc-settingsd.xml), [BSD](http://uglyman.kremlin.cc/gitweb/gitweb.cgi?p=systembsd.git;a=summary) | partially |
+| [timedated](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.timedate1.html) | D-Bus | yes | yes | GNOME | yes | [Gentoo](https://www.gentoo.org/proj/en/desktop/gnome/openrc-settingsd.xml), [BSD](http://uglyman.kremlin.cc/gitweb/gitweb.cgi?p=systembsd.git;a=summary) | partially |
| [initrd interface](/INITRD_INTERFACE) | Environment, flag files | yes | yes | mkosi, dracut, ArchLinux | yes | ArchLinux | no |
| [Container interface](/CONTAINER_INTERFACE) | Environment, Mounts | yes | yes | libvirt/LXC | yes | - | no |
| [Boot Loader interface](/BOOT_LOADER_INTERFACE) | EFI variables | yes | yes | gummiboot | yes | - | no |
-| [Service bus API](https://www.freedesktop.org/software/systemd/man/org.freedesktop.systemd1.html) | D-Bus | yes | yes | system-config-services | no | - | no |
-| [logind](https://www.freedesktop.org/software/systemd/man/org.freedesktop.login1.html) | D-Bus | yes | yes | GNOME | no | - | no |
-| [sd-bus.h API](https://www.freedesktop.org/software/systemd/man/sd-bus.html) | C Library | yes | yes | - | maybe | - | maybe |
-| [sd-daemon.h API](https://www.freedesktop.org/software/systemd/man/sd-daemon.html) | C Library or Drop-in | yes | yes | numerous | yes | - | yes |
-| [sd-device.h API](https://www.freedesktop.org/software/systemd/man/sd-device.html) | C Library | yes | no | numerous | yes | - | yes |
-| [sd-event.h API](https://www.freedesktop.org/software/systemd/man/sd-event.html) | C Library | yes | yes | - | maybe | - | maybe |
-| [sd-gpt.h API](https://www.freedesktop.org/software/systemd/man/sd-gpt.html) | Header Library | yes | no | - | yes | - | yes |
-| [sd-hwdb.h API](https://www.freedesktop.org/software/systemd/man/sd-hwdb.html) | C Library | yes | yes | - | maybe | - | yes |
-| [sd-id128.h API](https://www.freedesktop.org/software/systemd/man/sd-id128.html) | C Library | yes | yes | - | yes | - | yes |
-| [sd-journal.h API](https://www.freedesktop.org/software/systemd/man/sd-journal.html) | C Library | yes | yes | - | maybe | - | no |
-| [sd-login.h API](https://www.freedesktop.org/software/systemd/man/sd-login.html) | C Library | yes | yes | GNOME, polkit, ... | no | - | no |
-| [sd-messages.h API](https://www.freedesktop.org/software/systemd/man/sd-messages.html) | Header Library | yes | yes | - | yes | python-systemd | yes |
-| [sd-path.h API](https://www.freedesktop.org/software/systemd/man/sd-path.html) | C Library | yes | no | - | maybe | - | maybe |
+| [Service bus API](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.systemd1.html) | D-Bus | yes | yes | system-config-services | no | - | no |
+| [logind](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html) | D-Bus | yes | yes | GNOME | no | - | no |
+| [sd-bus.h API](https://www.freedesktop.org/software/systemd/man/latest/sd-bus.html) | C Library | yes | yes | - | maybe | - | maybe |
+| [sd-daemon.h API](https://www.freedesktop.org/software/systemd/man/latest/sd-daemon.html) | C Library or Drop-in | yes | yes | numerous | yes | - | yes |
+| [sd-device.h API](https://www.freedesktop.org/software/systemd/man/latest/sd-device.html) | C Library | yes | no | numerous | yes | - | yes |
+| [sd-event.h API](https://www.freedesktop.org/software/systemd/man/latest/sd-event.html) | C Library | yes | yes | - | maybe | - | maybe |
+| [sd-gpt.h API](https://www.freedesktop.org/software/systemd/man/latest/libsystemd.html) | Header Library | yes | no | - | yes | - | yes |
+| [sd-hwdb.h API](https://www.freedesktop.org/software/systemd/man/latest/sd-hwdb.html) | C Library | yes | yes | - | maybe | - | yes |
+| [sd-id128.h API](https://www.freedesktop.org/software/systemd/man/latest/sd-id128.html) | C Library | yes | yes | - | yes | - | yes |
+| [sd-journal.h API](https://www.freedesktop.org/software/systemd/man/latest/sd-journal.html) | C Library | yes | yes | - | maybe | - | no |
+| [sd-login.h API](https://www.freedesktop.org/software/systemd/man/latest/sd-login.html) | C Library | yes | yes | GNOME, polkit, ... | no | - | no |
+| [sd-messages.h API](https://www.freedesktop.org/software/systemd/man/latest/libsystemd.html) | Header Library | yes | yes | - | yes | python-systemd | yes |
+| [sd-path.h API](https://www.freedesktop.org/software/systemd/man/latest/sd-path.html) | C Library | yes | no | - | maybe | - | maybe |
| [$XDG_RUNTIME_DIR](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) | Environment | yes | yes | glib, GNOME | yes | - | no |
-| [$LISTEN_FDS $LISTEN_PID FD Passing](https://www.freedesktop.org/software/systemd/man/sd_listen_fds.html) | Environment | yes | yes | numerous (via sd-daemon.h) | yes | - | no |
-| [$NOTIFY_SOCKET Daemon Notifications](https://www.freedesktop.org/software/systemd/man/sd_notify.html) | Environment | yes | yes | a few, including udev | yes | - | no |
+| [$LISTEN_FDS $LISTEN_PID FD Passing](https://www.freedesktop.org/software/systemd/man/latest/sd_listen_fds.html) | Environment | yes | yes | numerous (via sd-daemon.h) | yes | - | no |
+| [$NOTIFY_SOCKET Daemon Notifications](https://www.freedesktop.org/software/systemd/man/latest/sd_notify.html) | Environment | yes | yes | a few, including udev | yes | - | no |
| [argv[0][0]='@' Logic](/ROOT_STORAGE_DAEMONS) | `/proc` marking | yes | yes | mdadm | yes | - | no |
-| [Unit file format](https://www.freedesktop.org/software/systemd/man/systemd.unit.html) | File format | yes | yes | numerous | no | - | no |
-| [Network](https://www.freedesktop.org/software/systemd/man/systemd.network.html) & [Netdev file format](https://www.freedesktop.org/software/systemd/man/systemd.netdev.html) | File format | yes | yes | no | no | - | no |
-| [Link file format](https://www.freedesktop.org/software/systemd/man/systemd.link.html) | File format | yes | yes | no | no | - | no |
+| [Unit file format](https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html) | File format | yes | yes | numerous | no | - | no |
+| [Network](https://www.freedesktop.org/software/systemd/man/latest/systemd.network.html) & [Netdev file format](https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html) | File format | yes | yes | no | no | - | no |
+| [Link file format](https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html) | File format | yes | yes | no | no | - | no |
| [Journal File Format](/JOURNAL_FILE_FORMAT) | File format | yes | yes | - | maybe | - | no |
| [Journal Export Format](JOURNAL_EXPORT_FORMATS#journal-export-format) | File format | yes | yes | - | yes | - | no |
| [Journal JSON Format](JOURNAL_EXPORT_FORMATS#journal-json-format) | File format | yes | yes | - | yes | - | no |
| [Password Agents](/PASSWORD_AGENTS) | Socket+Files | yes | yes | - | yes | - | no |
-| [udev multi-seat properties](https://www.freedesktop.org/software/systemd/man/sd-login.html) | udev Property | yes | yes | X11, gdm | no | - | no |
+| [udev multi-seat properties](https://www.freedesktop.org/software/systemd/man/latest/sd-login.html) | udev Property | yes | yes | X11, gdm | no | - | no |
| udev session switch ACL properties | udev Property | no | no | - | no | - | no |
-| [CLI of systemctl,...](https://www.freedesktop.org/software/systemd/man/systemctl.html) | CLI | yes | yes | numerous | no | - | no |
-| [tmpfiles.d](https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html) | File format | yes | yes | numerous | yes | ArchLinux | partially |
-| [sysusers.d](https://www.freedesktop.org/software/systemd/man/sysusers.d.html) | File format | yes | yes | unknown | yes | | partially |
-| [/etc/machine-id](https://www.freedesktop.org/software/systemd/man/machine-id.html) | File format | yes | yes | D-Bus | yes | - | no |
-| [binfmt.d](https://www.freedesktop.org/software/systemd/man/binfmt.d.html) | File format | yes | yes | numerous | yes | - | partially |
-| [/etc/hostname](https://www.freedesktop.org/software/systemd/man/hostname.html) | File format | yes | yes | numerous (it's a Debian thing) | yes | Debian, ArchLinux | no |
-| [/etc/locale.conf](https://www.freedesktop.org/software/systemd/man/locale.conf.html) | File format | yes | yes | - | yes | ArchLinux | partially |
-| [/etc/machine-info](https://www.freedesktop.org/software/systemd/man/machine-info.html) | File format | yes | yes | - | yes | - | partially |
-| [modules-load.d](https://www.freedesktop.org/software/systemd/man/modules-load.d.html) | File format | yes | yes | numerous | yes | - | partially |
-| [/usr/lib/os-release](https://www.freedesktop.org/software/systemd/man/os-release.html) | File format | yes | yes | some | yes | Fedora, OpenSUSE, ArchLinux, Angstrom, Frugalware, others... | no |
-| [sysctl.d](https://www.freedesktop.org/software/systemd/man/sysctl.d.html) | File format | yes | yes | some (it's a Debian thing) | yes | procps/Debian, ArchLinux | partially |
-| [/etc/timezone](https://www.freedesktop.org/software/systemd/man/timezone.html) | File format | yes | yes | numerous (it's a Debian thing) | yes | Debian | partially |
-| [/etc/vconsole.conf](https://www.freedesktop.org/software/systemd/man/vconsole.conf.html) | File format | yes | yes | - | yes | ArchLinux | partially |
+| [CLI of systemctl,...](https://www.freedesktop.org/software/systemd/man/latest/systemctl.html) | CLI | yes | yes | numerous | no | - | no |
+| [tmpfiles.d](https://www.freedesktop.org/software/systemd/man/latest/tmpfiles.d.html) | File format | yes | yes | numerous | yes | ArchLinux | partially |
+| [sysusers.d](https://www.freedesktop.org/software/systemd/man/latest/sysusers.d.html) | File format | yes | yes | unknown | yes | | partially |
+| [/etc/machine-id](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) | File format | yes | yes | D-Bus | yes | - | no |
+| [binfmt.d](https://www.freedesktop.org/software/systemd/man/latest/binfmt.d.html) | File format | yes | yes | numerous | yes | - | partially |
+| [/etc/hostname](https://www.freedesktop.org/software/systemd/man/latest/hostname.html) | File format | yes | yes | numerous (it's a Debian thing) | yes | Debian, ArchLinux | no |
+| [/etc/locale.conf](https://www.freedesktop.org/software/systemd/man/latest/locale.conf.html) | File format | yes | yes | - | yes | ArchLinux | partially |
+| [/etc/machine-info](https://www.freedesktop.org/software/systemd/man/latest/machine-info.html) | File format | yes | yes | - | yes | - | partially |
+| [modules-load.d](https://www.freedesktop.org/software/systemd/man/latest/modules-load.d.html) | File format | yes | yes | numerous | yes | - | partially |
+| [/usr/lib/os-release](https://www.freedesktop.org/software/systemd/man/latest/os-release.html) | File format | yes | yes | some | yes | Fedora, OpenSUSE, ArchLinux, Angstrom, Frugalware, others... | no |
+| [sysctl.d](https://www.freedesktop.org/software/systemd/man/latest/sysctl.d.html) | File format | yes | yes | some (it's a Debian thing) | yes | procps/Debian, ArchLinux | partially |
+| [/etc/vconsole.conf](https://www.freedesktop.org/software/systemd/man/latest/vconsole.conf.html) | File format | yes | yes | - | yes | ArchLinux | partially |
| `/run` | File hierarchy change | yes | yes | numerous | yes | OpenSUSE, Debian, ArchLinux | no |
-| [Generators](https://www.freedesktop.org/software/systemd/man/systemd.generator.html) | Subprocess | yes | yes | - | no | - | no |
-| [System Updates](https://www.freedesktop.org/software/systemd/man/systemd.offline-updates.html) | System Mode | yes | yes | - | no | - | no |
-| [Presets](https://www.freedesktop.org/software/systemd/man/systemd.preset.html) | File format | yes | yes | - | no | - | no |
+| [Generators](https://www.freedesktop.org/software/systemd/man/latest/systemd.generator.html) | Subprocess | yes | yes | - | no | - | no |
+| [System Updates](https://www.freedesktop.org/software/systemd/man/latest/systemd.offline-updates.html) | System Mode | yes | yes | - | no | - | no |
+| [Presets](https://www.freedesktop.org/software/systemd/man/latest/systemd.preset.html) | File format | yes | yes | - | no | - | no |
| Udev rules | File format | yes | yes | numerous | no | no | partially |
As mentioned, `mkosi -b` takes care of all of that for you, but any other image generator should work too.
The
-[os-release(5)](https://www.freedesktop.org/software/systemd/man/os-release.html)
+[os-release(5)](https://www.freedesktop.org/software/systemd/man/latest/os-release.html)
file may optionally be extended with a `PORTABLE_PREFIXES=` field listing all
supported portable service prefixes for the image (see above).
This is useful for informational purposes (as it allows recognizing portable service images
If the field is not specified the image will work fine, but is not necessarily recognizable as
portable service image, and any set of units included in the image may be attached, there are no restrictions enforced.
-The [os-release(5)](https://www.freedesktop.org/software/systemd/man/os-release.html) may
+The [os-release(5)](https://www.freedesktop.org/software/systemd/man/latest/os-release.html) may
optionally be extended with a `PORTABLE_SCOPE=` field listing the scope in which the portable
service may be used. This field may be set to either `system`, in which case the portable service
can only be attached to the system instance of `systemd-portabled`, `user` in which case the portable
## Links
-[`portablectl(1)`](https://www.freedesktop.org/software/systemd/man/portablectl.html)<br>
-[`systemd-portabled.service(8)`](https://www.freedesktop.org/software/systemd/man/systemd-portabled.service.html)<br>
+[`portablectl(1)`](https://www.freedesktop.org/software/systemd/man/latest/portablectl.html)<br>
+[`systemd-portabled.service(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-portabled.service.html)<br>
[Walkthrough for Portable Services](https://0pointer.net/blog/walkthrough-for-portable-services.html)<br>
[Repo with examples](https://github.com/systemd/portable-walkthrough)
You basically have three options:
1. You disable the assignment of fixed names, so that the unpredictable kernel names are used again. For this, simply mask udev's .link file for the default policy: `ln -s /dev/null /etc/systemd/network/99-default.link`
-1. You create your own manual naming scheme, for example by naming your interfaces `internet0`, `dmz0` or `lan0`. For that create your own `.link` files in `/etc/systemd/network/`, that choose an explicit name or a better naming scheme for one, some, or all of your interfaces. See [systemd.link(5)](https://www.freedesktop.org/software/systemd/man/systemd.link.html) for more information.
+1. You create your own manual naming scheme, for example by naming your interfaces `internet0`, `dmz0` or `lan0`. For that create your own `.link` files in `/etc/systemd/network/`, that choose an explicit name or a better naming scheme for one, some, or all of your interfaces. See [systemd.link(5)](https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html) for more information.
1. You pass the `net.ifnames=0` on the kernel command line
## How does the new naming scheme look like, precisely?
-That's documented in detail the [systemd.net-naming-scheme(7)](https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html) man page.
+That's documented in detail the [systemd.net-naming-scheme(7)](https://www.freedesktop.org/software/systemd/man/latest/systemd.net-naming-scheme.html) man page.
Please refer to this in case you are wondering how to decode the new interface names.
## Documentation
-Documentation for the preset policy file format is available here: [http://www.freedesktop.org/software/systemd/man/systemd.preset.html](http://www.freedesktop.org/software/systemd/man/systemd.preset.html)
+Documentation for the preset policy file format is available here: [https://www.freedesktop.org/software/systemd/man/latest/systemd.preset.html](https://www.freedesktop.org/software/systemd/man/latest/systemd.preset.html)
-Documentation for "systemctl preset" you find here: [http://www.freedesktop.org/software/systemd/man/systemctl.html](http://www.freedesktop.org/software/systemd/man/systemctl.html)
+Documentation for "systemctl preset" you find here: [https://www.freedesktop.org/software/systemd/man/latest/systemctl.html](https://www.freedesktop.org/software/systemd/man/latest/systemctl.html)
-Documentation for the recommended package scriptlets you find here: [http://www.freedesktop.org/software/systemd/man/daemon.html](http://www.freedesktop.org/software/systemd/man/daemon.html)
+Documentation for the recommended package scriptlets you find here: [https://www.freedesktop.org/software/systemd/man/latest/daemon.html](https://www.freedesktop.org/software/systemd/man/latest/daemon.html)
## How To
provides virtualized RNG hardware (and VM environments really should!).
2. The
- [`systemd-random-seed.service`](https://www.freedesktop.org/software/systemd/man/systemd-random-seed.service.html)
+ [`systemd-random-seed.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-random-seed.service.html)
system service will load a random seed from `/var/lib/systemd/random-seed`
into the kernel entropy pool.
By default it does not credit entropy for it though, since the seed is — more often than not — not reset when 'golden' master images of an OS are created, and thus replicated into every installation.
require an initialized entropy pool to operate correctly.
3. The
- [`systemd-boot`](https://www.freedesktop.org/software/systemd/man/systemd-boot.html)
+ [`systemd-boot`](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot.html)
EFI boot loader included in systemd is able to maintain and provide a random
seed stored in the EFI System Partition (ESP) to the booted OS, which allows
booting up with a fully initialized entropy pool from earliest boot on.
During installation of the boot loader (or when invoking
- [`bootctlrandom-seed`](https://www.freedesktop.org/software/systemd/man/bootctl.html#random-seed))
+ [`bootctlrandom-seed`](https://www.freedesktop.org/software/systemd/man/latest/bootctl.html#random-seed))
a seed file with an initial seed is placed in a file `/loader/random-seed` in the ESP.
In addition, an identically sized randomized EFI variable called the 'system token' is set, which is written to the machine's firmware NVRAM.
5. *Why don't you use
[`rngd`](https://github.com/nhorman/rng-tools),
- [`haveged`](http://www.issihosts.com/haveged/),
- [`egd`](http://egd.sourceforge.net/)?
+ [`haveged`](https://www.issihosts.com/haveged/),
+ [`egd`](https://egd.sourceforge.net/)?
That's all you need!*
Like `uuidd` above these are system services, hence come too late for our use-case.
loader random seeds too!*
Well, consider just switching to `systemd-boot`, it's worth it. See
- [systemd-boot(7)](https://www.freedesktop.org/software/systemd/man/systemd-boot.html)
+ [systemd-boot(7)](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot.html)
for an introduction why. That said, any boot loader can re-implement the
logic described above, and can pass a random seed that systemd as PID 1
will then upload into the kernel's entropy pool. For details see the
For a verbose explanation of `systemd-resolved.service`'s domain routing logic,
see its [man
-page](https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html). This
+page](https://www.freedesktop.org/software/systemd/man/latest/systemd-resolved.service.html). This
document is supposed to provide examples to use the concepts for the specific
purpose of managing VPN DNS configuration.
interfaces:
1. Ideally, you use D-Bus and talk to [`systemd-resolved.service`'s D-Bus
- API](https://www.freedesktop.org/software/systemd/man/org.freedesktop.resolve1.html)
+ API](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.resolve1.html)
directly. Use `SetLinkDomains()` to set the per-interface search and routing
domains on the interfaces you manage, and `SetLinkDefaultRoute()` to manage
the `default-route` boolean, all on the `org.freedesktop.resolve1.Manager`
interface of the `/org/freedesktop/resolve1` object.
2. If that's not in the cards, you may shell out to
- [`resolvectl`](https://www.freedesktop.org/software/systemd/man/resolvectl.html),
+ [`resolvectl`](https://www.freedesktop.org/software/systemd/man/latest/resolvectl.html),
which is a thin wrapper around the D-Bus interface mentioned above. Use
`resolvectl domain <iface> …` to set the search/routing domains and
`resolvectl default-route <iface> …` to set the `default-route` boolean.
If you do that then you will lose logging from STDOUT/STDERR of services (as well as other stuff).
Your BSD compatible logging service should alias `syslog.service` to itself (i.e. symlink) when it is _enabled_.
-That way [syslog.socket](http://cgit.freedesktop.org/systemd/systemd/plain/units/syslog.socket) will activate your service when things are logged.
+That way [syslog.socket](https://github.com/systemd/systemd/blob/main/units/syslog.socket) will activate your service when things are logged.
Of course, only one implementation of BSD syslog can own that symlink, and hence only one implementation can be enabled at a time, but that's intended as there can only be one process listening on that socket.
(see below for details how to manage this symlink.)
`/tmp/` nor `/var/tmp/` directly.
See
-[file-hierarchy(7)](https://www.freedesktop.org/software/systemd/man/file-hierarchy.html)
+[file-hierarchy(7)](https://www.freedesktop.org/software/systemd/man/latest/file-hierarchy.html)
for details about these two (and most other) directories of a Linux system.
## Common Namespace
- /usr/bin/foo may be called by other tools either via /usr/bin/foo or /bin/foo, both paths become fully equivalent through the /usr merge. The operating system ends up executing exactly the same file, simply because the symlink /bin just redirects the invocation to /usr/bin.
-The historical justification for a /bin, /sbin and /lib separate from /usr no longer applies today. ([More on the historical justification for the split](http://lists.busybox.net/pipermail/busybox/2010-December/074114.html), by Rob Landley) They were split off to have selected tools on a faster hard disk (which was small, because it was more expensive) and to contain all the tools necessary to mount the slower /usr partition. Today, a separate /usr partition already must be mounted by the initramfs during early boot, thus making the justification for a split-off moot. In addition a lot of tools in /bin and /sbin in the status quo already lost the ability to run without a pre-mounted /usr. There is no valid reason anymore to have the operating system spread over multiple hierarchies, it lost its purpose.
+The historical justification for a /bin, /sbin and /lib separate from /usr no longer applies today. ([More on the historical justification for the split](https://lists.busybox.net/pipermail/busybox/2010-December/074114.html), by Rob Landley) They were split off to have selected tools on a faster hard disk (which was small, because it was more expensive) and to contain all the tools necessary to mount the slower /usr partition. Today, a separate /usr partition already must be mounted by the initramfs during early boot, thus making the justification for a split-off moot. In addition a lot of tools in /bin and /sbin in the status quo already lost the ability to run without a pre-mounted /usr. There is no valid reason anymore to have the operating system spread over multiple hierarchies, it lost its purpose.
-Solaris implemented the core part of the /usr merge 15 years ago already, and completed it with the introduction of Solaris 11. Solaris has /bin and /sbin only as symlinks in the root file system, the same way as you will have after the /usr merge: [Transitioning From Oracle Solaris 10 to Oracle Solaris 11 - User Environment Feature Changes](http://docs.oracle.com/cd/E23824_01/html/E24456/userenv-1.html).
+Solaris implemented the core part of the /usr merge 15 years ago already, and completed it with the introduction of Solaris 11. Solaris has /bin and /sbin only as symlinks in the root file system, the same way as you will have after the /usr merge: [Transitioning From Oracle Solaris 10 to Oracle Solaris 11 - User Environment Feature Changes](https://docs.oracle.com/cd/E23824_01/html/E24456/userenv-1.html).
Not implementing the /usr merge in your distribution will isolate it from upstream development. It will make porting of packages needlessly difficult, because packagers need to split up installed files into multiple directories and hard code different locations for tools; both will cause unnecessary incompatibilities. Several Linux distributions are agreeing with the benefits of the /usr merge and are already in the process to implement the /usr merge. This means that upstream projects will adapt quickly to the change, those making portability to your distribution harder.
---
-If this page didn't answer your questions you may continue reading [on the Fedora feature page](https://fedoraproject.org/wiki/Features/UsrMove) and this [mail from Lennart](http://thread.gmane.org/gmane.linux.redhat.fedora.devel/155511/focus=155792).
+If this page didn't answer your questions you may continue reading [on the Fedora feature page](https://fedoraproject.org/wiki/Features/UsrMove).
Currently, four components will issue TPM2 PCR measurements:
-* The [`systemd-boot`](https://www.freedesktop.org/software/systemd/man/systemd-boot.html) boot menu (UEFI)
-* The [`systemd-stub`](https://www.freedesktop.org/software/systemd/man/systemd-stub.html) boot stub (UEFI)
-* The [`systemd-pcrextend`](https://www.freedesktop.org/software/systemd/man/systemd-pcrphase.service.html) measurement tool (userspace)
-* The [`systemd-cryptsetup`](https://www.freedesktop.org/software/systemd/man/systemd-cryptsetup@.service.html) disk encryption tool (userspace)
+* The [`systemd-boot`](https://www.freedesktop.org/software/systemd/man/latest/systemd-boot.html) boot menu (UEFI)
+* The [`systemd-stub`](https://www.freedesktop.org/software/systemd/man/latest/systemd-stub.html) boot stub (UEFI)
+* The [`systemd-pcrextend`](https://www.freedesktop.org/software/systemd/man/latest/systemd-pcrphase.service.html) measurement tool (userspace)
+* The [`systemd-cryptsetup`](https://www.freedesktop.org/software/systemd/man/latest/systemd-cryptsetup@.service.html) disk encryption tool (userspace)
A userspace measurement event log in a format close to TCG CEL-JSON is
maintained in `/run/log/systemd/tpm2-measure.log`.
`systemd` defines a number of special UID ranges:
1. 60001…60513 → UIDs for home directories managed by
- [`systemd-homed.service(8)`](https://www.freedesktop.org/software/systemd/man/systemd-homed.service.html).
+ [`systemd-homed.service(8)`](https://www.freedesktop.org/software/systemd/man/latest/systemd-homed.service.html).
UIDs from this range are automatically assigned to any home directory discovered,
and persisted locally on first login.
On different systems the same user might get different UIDs assigned in case of conflict, though it is
3. 61184…65519 → UIDs for dynamic users are allocated from this range (see the
`DynamicUser=` documentation in
- [`systemd.exec(5)`](https://www.freedesktop.org/software/systemd/man/systemd.exec.html)).
+ [`systemd.exec(5)`](https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html)).
This range has been chosen so that it is below the 16-bit boundary
(i.e. below 65535), in order to provide compatibility with container environments that
assign a 64K range of UIDs to containers using user namespacing.
# `systemd-homed` and JSON User/Group Record Support in Desktop Environments
Starting with version 245, systemd supports a new subsystem
-[`systemd-homed.service`](https://www.freedesktop.org/software/systemd/man/systemd-homed.service.html)
+[`systemd-homed.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-homed.service.html)
for managing regular ("human") users and their home directories.
Along with it a new concept `userdb` got merged that brings rich, extensible JSON user/group
records, extending the classic UNIX/glibc NSS `struct passwd`/`struct group` structures.
operation needs to inform systemd-homed about this so that systemd-homed knows
that it is safe to suspend the user's home directory on suspend.
This is done via the `suspend=` argument to the
-[`pam_systemd_home`](https://www.freedesktop.org/software/systemd/man/pam_systemd_home.html)
+[`pam_systemd_home`](https://www.freedesktop.org/software/systemd/man/latest/pam_systemd_home.html)
PAM module.
A display manager should hence change its PAM stack configurationto set this parameter to on.
`systemd-homed` will not suspend home directories if there's at least one active session of the user that does not support
Alternatively, user/group records may be dropped in number of drop-in directories as files where they are
picked up in addition to the users/groups defined by this IPC logic.
See
-[`nss-systemd(8)`](https://www.freedesktop.org/software/systemd/man/nss-systemd.html)
+[`nss-systemd(8)`](https://www.freedesktop.org/software/systemd/man/latest/nss-systemd.html)
for details.
This simple API only exposes only three method calls, and requires only a small
Strict user/group name syntax is enforced whenever a systemd component is used
to register a user or group in the system, for example a system user/group
using
-[`systemd-sysusers.service`](https://www.freedesktop.org/software/systemd/man/systemd-sysusers.html)
+[`systemd-sysusers.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-sysusers.html)
or a regular user with
-[`systemd-homed.service`](https://www.freedesktop.org/software/systemd/man/systemd-homed.html).
+[`systemd-homed.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-homed.html).
In strict mode, only uppercase and lowercase characters are allowed, as well as
digits, underscores and hyphens.
Relaxed user/group name syntax is enforced whenever a systemd component accepts
and makes use of user/group names registered by other (non-systemd)
components of the system, for example in
-[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/systemd-logind.html).
+[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-logind.service.html).
Relaxed syntax is also enforced by the `User=` setting in service unit files,
i.e. for system services used for running services.
Specifically:
-1. [`systemd-homed.service`](https://www.freedesktop.org/software/systemd/man/systemd-homed.service.html)
+1. [`systemd-homed.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-homed.service.html)
manages `human` user home directories and embeds these JSON records
directly in the home directory images
(see [Home Directories](/HOME_DIRECTORY) for details).
-2. [`pam_systemd`](https://www.freedesktop.org/software/systemd/man/pam_systemd.html)
+2. [`pam_systemd`](https://www.freedesktop.org/software/systemd/man/latest/pam_systemd.html)
processes these JSON records for users that log in, and applies various
settings to the activated session, including environment variables, nice
levels and more.
-3. [`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/systemd-logind.service.html)
+3. [`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-logind.service.html)
processes these JSON records of users that log in, and applies various
resource management settings to the per-user slice units it manages.
This allows setting global limits on resource consumption by a specific user.
-4. [`nss-systemd`](https://www.freedesktop.org/software/systemd/man/nss-systemd.html)
+4. [`nss-systemd`](https://www.freedesktop.org/software/systemd/man/latest/nss-systemd.html)
is a glibc NSS module that synthesizes classic NSS records from these JSON
records, providing full backwards compatibility with the classic UNIX APIs
both for look-up and enumeration.
effect of `DynamicUser=` in service unit files) as these advanced JSON
records, making them discoverable to the rest of the system.
-6. [`systemd-userdbd.service`](https://www.freedesktop.org/software/systemd/man/systemd-userdbd.service.html)
+6. [`systemd-userdbd.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-userdbd.service.html)
is a small service that can translate UNIX/glibc NSS records to these JSON user records.
It also provides a unified [Varlink](https://varlink.org/) API for querying and enumerating records of this type,
optionally acquiring them from various other services.
and formats. To inquire about such records defined on the local system use the
[User/Group Lookup API via Varlink](/USER_GROUP_API). User/group records may
also be dropped in number of drop-in directories as files. See
-[`nss-systemd(8)`](https://www.freedesktop.org/software/systemd/man/nss-systemd.html)
+[`nss-systemd(8)`](https://www.freedesktop.org/software/systemd/man/latest/nss-systemd.html)
for details.
## Why JSON?
as record separators in classic `/etc/passwd` files and similar formats.
`emailAddress` → The email address of the user, formatted as string.
-[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/pam_systemd.html)
+[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/latest/pam_systemd.html)
initializes the `$EMAIL` environment variable from this value for all login
sessions.
integers are generally written in decimal, hence in this context we denote it umask in decimal too.
The specified value should be in the valid range for umasks, i.e. 0000…0777 (in octal as typical in UNIX), or 0…511 (in decimal, how
it actually appears in the JSON record).
-This `umask` is automatically set by [`pam_systemd`](https://www.freedesktop.org/software/systemd/man/pam_systemd.html)
+This `umask` is automatically set by [`pam_systemd`](https://www.freedesktop.org/software/systemd/man/latest/pam_systemd.html)
for all login sessions of the user.
`environment` → An array of strings, each containing an environment variable
and its value to set for the user's login session, in a format compatible with
[`putenv()`](https://man7.org/linux/man-pages/man3/putenv.3.html). Any
environment variable listed here is automatically set by
-[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/pam_systemd.html)
+[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/latest/pam_systemd.html)
for all login sessions of the user.
`timeZone` → A string indicating a preferred timezone to use for the user. When
logging in
-[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/pam_systemd.html)
+[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/latest/pam_systemd.html)
will automatically initialize the `$TZ` environment variable from this
string.
The string should be a `tzdata` compatible location string, for example: `Europe/Berlin`.
primary language can try another language that the user knows rather than falling back to
the default English. All entries in this field must be valid locale names, compatible with
the `$LANG` variable, for example: `de_DE.UTF-8`. When logging in
-[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/pam_systemd.html)
+[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/latest/pam_systemd.html)
will prepend `preferredLanguage` (if set) to this list (if set), remove duplicates,
and then automatically initialize the `$LANGUAGE` variable with the resulting list.
It will also initialize `$LANG` variable with the first entry in the resulting list.
`niceLevel` → An integer value in the range -20…19. When logging in
-[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/pam_systemd.html)
+[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/latest/pam_systemd.html)
will automatically initialize the login process' nice level to this value with,
which is then inherited by all the user's processes, see
[`setpriority()`](https://man7.org/linux/man-pages/man2/setpriority.2.html) for
(such as `RLIMIT_NOFILE` and similar).
Their values should be an object with two keys `cur` and `max` for the soft and hard resource limit.
When logging in
-[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/pam_systemd.html)
+[`pam_systemd`](https://www.freedesktop.org/software/systemd/man/latest/pam_systemd.html)
will automatically initialize the login process' resource limits to these
values, which is then inherited by all the user's processes, see
[`setrlimit()`](https://man7.org/linux/man-pages/man2/setrlimit.2.html) for more
tasks the user may start in parallel during system runtime.
This counts all tasks (i.e. threads, where each process is at least one thread) the user starts or that are
forked from these processes even if the user identity is changed (for example by setuid binaries/`su`/`sudo` and similar).
-[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/systemd-logind.service.html)
+[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-logind.service.html)
enforces this by setting the `TasksMax` slice property for the user's slice
`user-$UID.slice`.
memory limits for all processes of the user (plus all processes forked off them
that might have changed user identity),
in bytes. Enforced by
-[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/systemd-logind.service.html),
+[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-logind.service.html),
similar to `tasksMax`.
`cpuWeight`/`ioWeight` → These take unsigned integers in the range 1…10000
(defaults to 100) and configure the CPU and IO scheduling weights for the
user's processes as a whole.
Also enforced by
-[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/systemd-logind.service.html),
+[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-logind.service.html),
similar to `tasksMax`, `memoryHigh` and `memoryMax`.
`mountNoDevices`/`mountNoSuid`/`mountNoExecute` → Three booleans that control
`stopDelayUSec` → An unsigned 64-bit integer, indicating the time in µs the
per-user service manager is kept around after the user fully logged out. This
value is honored by
-[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/systemd-logind.service.html). If
+[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-logind.service.html). If
set to zero the per-user service manager is immediately terminated when the
user logs out, and longer values optimize high-frequency log-ins as the
necessary work to set up and tear down a log-in is reduced if the service manager stays running.
`killProcesses` → A boolean.
If true all processes of the user are automatically killed when the user logs out.
This is enforced by
-[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/systemd-logind.service.html).
+[`systemd-logind.service`](https://www.freedesktop.org/software/systemd/man/latest/systemd-logind.service.html).
If false any processes left around when the user logs out are left running.
`passwordChangeMinUSec`/`passwordChangeMaxUSec` → An unsigned 64-bit integer,
This document should be read together with [Writing Display Managers](/WRITING_DISPLAY_MANAGERS) which focuses on the porting work necessary for display managers.
If required it is possible to implement ConsoleKit and systemd-logind support in the same desktop environment code, detecting at runtime which interface is needed.
-The [sd_booted()](http://www.freedesktop.org/software/systemd/man/sd_booted.html) call may be used to determine at runtime whether systemd is used.
+The [sd_booted()](https://www.freedesktop.org/software/systemd/man/latest/sd_booted.html) call may be used to determine at runtime whether systemd is used.
To a certain level ConsoleKit and systemd-logind may be used side-by-side, but a number of features are not available if ConsoleKit is used.
-Please have a look at the [Bus API of logind](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html) and the C API as documented in [sd-login(7)](http://www.freedesktop.org/software/systemd/man/sd-login.html). (Also see below)
+Please have a look at the [Bus API of logind](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html) and the C API as documented in [sd-login(7)](https://www.freedesktop.org/software/systemd/man/latest/sd-login.html). (Also see below)
Here are the suggested changes:
Use logind's ListInhibitors() call to get a list of these inhibitors. See [Inhibitor Locks](/INHIBITOR_LOCKS) for further details on this.
- If your DE contains a process viewer of some kind ("system monitor") it's a good idea to show session, service and seat information for each process.
Use sd_pid_get_session(), sd_pid_get_unit(), sd_session_get_seat() to determine these.
- For details see [sd-login(7)](http://www.freedesktop.org/software/systemd/man/sd-login.html).
+ For details see [sd-login(7)](https://www.freedesktop.org/software/systemd/man/latest/sd-login.html).
And that's all! Thank you!
This document should be read together with [Writing Desktop Environments](/WRITING_DESKTOP_ENVIRONMENTS) which focuses on the porting work necessary for desktop environments.
If required it is possible to implement ConsoleKit and systemd-logind support in the same display manager, detecting at runtime which interface is needed.
-The [sd_booted()](http://www.freedesktop.org/software/systemd/man/sd_booted.html) call may be used to determine at runtime whether systemd is used.
+The [sd_booted()](https://www.freedesktop.org/software/systemd/man/latest/sd_booted.html) call may be used to determine at runtime whether systemd is used.
To a certain level ConsoleKit and systemd-logind may be used side-by-side, but a number of features are not available if ConsoleKit is used, for example automatic multi-seat support.
-Please have a look at the [Bus API of logind](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html) and the C API as documented in [sd-login(7)](http://www.freedesktop.org/software/systemd/man/sd-login.html).
+Please have a look at the [Bus API of logind](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html) and the C API as documented in [sd-login(7)](https://www.freedesktop.org/software/systemd/man/latest/sd-login.html).
(Also see below)
Minimal porting (without multi-seat) requires the following:
And that's already it.
While most information about seats, sessions and users is available on systemd-logind's D-Bus interface, this is not the only API.
-The synchronous [sd-login(7)](http://www.freedesktop.org/software/systemd/man/sd-login.html) C interface is often easier to use and much faster too.
+The synchronous [sd-login(7)](https://www.freedesktop.org/software/systemd/man/latest/sd-login.html) C interface is often easier to use and much faster too.
In fact it is possible to implement the scheme above entirely without D-Bus relying only on this API.
Note however, that this C API is purely passive, and if you want to execute an actually state changing operation you need to use the bus interface (for example, to switch sessions, or to kill sessions and suchlike).
Also have a look at the [logind Bus API](https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html).
{
"category": "Manual Pages",
"title": "Index",
- "url": "https://www.freedesktop.org/software/systemd/man/"
+ "url": "https://www.freedesktop.org/software/systemd/man/latest/"
},
{
"category": "Manual Pages",
"title": "Directives",
- "url": "https://www.freedesktop.org/software/systemd/man/systemd.directives.html"
+ "url": "https://www.freedesktop.org/software/systemd/man/latest/systemd.directives.html"
},
{
"category": "Publications",
"title": "Article in The H",
- "url": "http://www.h-online.com/open/features/Control-Centre-The-systemd-Linux-init-system-1565543.html"
+ "url": "https://www.h-online.com/open/features/Control-Centre-The-systemd-Linux-init-system-1565543.html"
},
{
"category": "Publications",
"title": "Article in The H, Part 2",
- "url": "http://www.h-online.com/open/features/Booting-up-Tools-and-tips-for-systemd-1570630.html"
+ "url": "https://www.h-online.com/open/features/Booting-up-Tools-and-tips-for-systemd-1570630.html"
},
{
"category": "Publications",
{
"category": "Videos for Users and Administrators",
"title": "Presentation about systemd at linux.conf.au 2011",
- "url": "http://linuxconfau.blip.tv/file/4696791/"
+ "url": "https://www.youtube.com/watch?v=9XRj8ii91D0"
},
{
"category": "Videos for Users and Administrators",
"title": "A more complete Russian translation (PDF)",
"url": "http://www2.kangran.su/~nnz/pub/s4a/s4a_latest.pdf"
},
- {
- "category": "The systemd for Administrators Blog Series",
- "title": "A Vietnamese translation",
- "url": "https://archlinuxvn.org/doc/systemd/#lp"
- },
{
"category": "The systemd for Developers Series",
"title": "#1: Socket Activation",
{
"category": "Documentation for Developers - external links",
"title": "The 30 Biggest Myths about systemd",
- "url": "http://0pointer.de/blog/projects/the-biggest-myths.html"
+ "url": "https://0pointer.de/blog/projects/the-biggest-myths.html"
},
{
"category": "Documentation for Developers - external links",
"title": "Introduction to systemd in French",
- "url": "http://lea-linux.org/documentations/Systemd"
+ "url": "https://lea-linux.org/documentations/Systemd"
},
{
"category": "The various distributions",
{
"category": "The various distributions",
"title": "openSUSE instructions",
- "url": "http://en.opensuse.org/SDB:Systemd"
+ "url": "https://en.opensuse.org/SDB:Systemd"
},
{
"category": "The various distributions",
"title": "openSUSE bugtracker",
- "url": "https://bugzilla.novell.com/buglist.cgi?short_desc=systemd&field0-0-0=product&type0-0-1=substring&field0-0-1=component&classification=openSUSE&value0-0-2=systemd&query_based_on=systemd&query_format=advanced&type0-0-3=substring&field0-0-3=status_whiteboard&value0-0-3=systemd&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=NEEDINFO&bug_status=REOPENED&short_desc_type=allwordssubstr&field0-0-2=short_desc&value0-0-1=systemd&type0-0-0=substring&value0-0-0=systemd&type0-0-2=substring&known_name=systemd"
+ "url": "https://bugzilla.opensuse.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=NEEDINFO&bug_status=REOPENED&classification=openSUSE&field0-0-0=product&field0-0-1=component&field0-0-2=short_desc&field0-0-3=status_whiteboard&known_name=systemd&query_based_on=systemd&query_format=advanced&short_desc=systemd&short_desc_type=allwordssubstr&type0-0-0=substring&type0-0-1=substring&type0-0-2=substring&type0-0-3=substring&value0-0-0=systemd&value0-0-1=systemd&value0-0-2=systemd&value0-0-3=systemd"
},
{
"category": "The various distributions",
{
"category": "The various distributions",
"title": "Debian packages",
- "url": "http://packages.debian.org/systemd"
+ "url": "https://packages.debian.org/systemd"
},
{
"category": "The various distributions",
"title": "Debian wiki",
- "url": "http://wiki.debian.org/systemd"
+ "url": "https://wiki.debian.org/systemd"
},
{
"category": "The various distributions",
"title": "Debian bugtracker",
- "url": "http://bugs.debian.org/cgi-bin/pkgreport.cgi?ordering=normal;archive=0;src=systemd"
+ "url": "https://bugs.debian.org/cgi-bin/pkgreport.cgi?ordering=normal;archive=0;src=systemd"
},
{
"category": "The various distributions",
},
{
"category": "The various distributions",
- "title": "Mageia packages",
- "url": "http://svnweb.mageia.org/packages/cauldron/systemd/current/"
+ "title": "Mageia wiki",
+ "url": "https://wiki.mageia.org/en/Features/Systemd"
},
{
"category": "The various distributions",
{
"category": "The various distributions",
"title": "Gentoo packages",
- "url": "http://packages.gentoo.org/package/sys-apps/systemd"
+ "url": "https://packages.gentoo.org/package/sys-apps/systemd"
},
{
"category": "The various distributions",
"title": "Gentoo wiki",
- "url": "http://wiki.gentoo.org/wiki/Systemd"
+ "url": "https://wiki.gentoo.org/wiki/Systemd"
},
{
"category": "The various distributions",
-<svg xmlns="http://www.w3.org/2000/svg" width="202" height="26" viewBox="0 0 202 26" id="systemd-logo">
+<svg xmlns="https://www.w3.org/2000/svg" width="202" height="26" viewBox="0 0 202 26" id="systemd-logo">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<path d="M0 0v26h10v-4H4V4h6V0zm76 0v4h6v18h-6v4h10V0z" fill="currentColor"/>
<path d="M113.498 14.926q-4.5-.96-4.5-3.878 0-1.079.609-1.981.621-.902 1.781-1.441 1.16-.54 2.707-.54 1.63 0 2.848.528 1.219.516 1.875 1.453.656.926.656 2.121h-3.539q0-.762-.457-1.183-.457-.434-1.394-.434-.774 0-1.243.363-.457.364-.457.938 0 .55.516.89.527.34 1.781.575 1.5.28 2.543.738 1.043.445 1.653 1.242.62.797.62 2.027 0 1.114-.667 2.004-.657.88-1.887 1.383-1.219.504-2.836.504-1.711 0-2.965-.621-1.242-.633-1.898-1.617-.645-.985-.645-2.051h3.34q.036.914.656 1.36.621.433 1.594.433.902 0 1.383-.34.492-.351.492-.937 0-.364-.223-.61-.21-.258-.773-.48-.55-.223-1.57-.446zm19.384-7.606l-5.086 14.58q-.293.831-.726 1.523-.434.703-1.266 1.195-.832.504-2.098.504-.457 0-.75-.048-.281-.046-.785-.176v-2.672q.176.02.527.02.95 0 1.418-.293.47-.293.715-.961l.352-.926-4.43-12.738h3.797l2.262 7.687 2.285-7.687zm5.884 7.606q-4.5-.96-4.5-3.878 0-1.079.61-1.981.62-.902 1.781-1.441 1.16-.54 2.707-.54 1.629 0 2.848.528 1.218.516 1.875 1.453.656.926.656 2.121h-3.539q0-.762-.457-1.183-.457-.434-1.395-.434-.773 0-1.242.363-.457.364-.457.938 0 .55.516.89.527.34 1.781.575 1.5.28 2.543.738 1.043.445 1.652 1.242.621.797.621 2.027 0 1.114-.668 2.004-.656.88-1.886 1.383-1.219.504-2.836.504-1.711 0-2.965-.621-1.242-.633-1.899-1.617-.644-.985-.644-2.051h3.34q.036.914.656 1.36.621.433 1.594.433.902 0 1.383-.34.492-.351.492-.937 0-.364-.223-.61-.21-.258-.773-.48-.551-.223-1.57-.446zm13.983 2.403q.574 0 .984-.082v2.66q-.914.328-2.086.328-3.727 0-3.727-3.797V9.899h-1.793V7.321h1.793v-3.14h3.54v3.14h2.132v2.578h-2.133v6.129q0 .75.293 1.031.293.27.997.27zm14.228-2.519h-8.016q.2 1.183.985 1.886.785.691 2.015.691.914 0 1.688-.34.785-.351 1.336-1.042l1.699 1.957q-.668.96-1.957 1.617-1.278.656-3 .656-1.946 0-3.387-.82-1.43-.82-2.203-2.227-.762-1.406-.762-3.105v-.446q0-1.898.715-3.386.715-1.489 2.063-2.32 1.347-.844 3.187-.844 1.793 0 3.059.761 1.265.762 1.922 2.168.656 1.395.656 3.293zm-3.469-2.65q-.024-1.03-.574-1.628-.54-.598-1.617-.598-1.008 0-1.582.668-.563.668-.739 1.84h4.512zm19.923-5.073q1.934 0 2.989 1.148 1.054 1.148 1.054 3.727v8.039h-3.539V11.95q0-.797-.21-1.23-.212-.446-.61-.61-.387-.164-.984-.164-.715 0-1.219.352-.504.34-.797.972.02.082.02.27V20h-3.54v-8.015q0-.797-.21-1.242-.211-.445-.61-.621-.386-.176-.996-.176-.68 0-1.183.304-.492.293-.797.844V20h-3.539V7.32h3.316l.118 1.419q.633-.797 1.547-1.22.926-.433 2.086-.433 1.172 0 2.016.48.855.47 1.312 1.442.633-.926 1.582-1.418.961-.504 2.203-.504zM201.398 2v18h-3.187l-.176-1.359q-1.243 1.594-3.212 1.594-1.535 0-2.66-.82-1.113-.832-1.699-2.285-.574-1.454-.574-3.317v-.246q0-1.934.574-3.398.586-1.465 1.7-2.274 1.124-.808 2.683-.808 1.805 0 3.012 1.37V2.001zm-5.672 15.376q1.488 0 2.133-1.266v-4.898q-.61-1.266-2.11-1.266-1.207 0-1.77.984-.55.985-.55 2.637v.246q0 1.629.54 2.602.55.96 1.757.96z" fill="currentColor"/>
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+<svg xmlns="https://www.w3.org/2000/svg" width="16" height="16">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<g transform="translate(380 -506.52)">
<rect ry="16.875" rx="16.875" y="2409.281" x="4128.568" height="90" width="90" fill="#201a26" transform="matrix(.17778 0 0 .17778 -1113.968 78.203)" stroke-width="5.625"/>
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 723.7333335876465 789.8890380859375" width="723.7333335876465" height="789.8890380859375"><!-- svg-source:excalidraw --><metadata></metadata><defs><style class="style-fonts">
+<svg version="1.1" xmlns="https://www.w3.org/2000/svg" viewBox="0 0 723.7333335876465 789.8890380859375" width="723.7333335876465" height="789.8890380859375"><!-- svg-source:excalidraw --><metadata></metadata><defs><style class="style-fonts">
@font-face { font-family: Virgil; src: url(data:font/woff2;base64,d09GMgABAAAAABD0AAsAAAAAGwwAABCnAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgSwRCAqsWKBvCzoAATYCJANwBCAFgxwHIBsoFKOirPElyP4igTdEfbrhGKlVE0JEdAWvYZCKDvsBY1CmPPC3y9b5NUTw/DFq3tsO2hZaXIqmDNwGucLk4wQqjcIquwW+6D9A2+yuyVRUUEF7ImhPiTKYGL0JKOCMnNHvKkv96GWqi2j3exf5f25VkFalv6poG+3uEfE1i6B5+/bO00uCm3QmLaxFoWHFWTEH6iT/3b9/3k2Duy2s4UxlmGrb+v/632pI6+AVSyp2LgR8ar9WT8Sibr/SvVWxd+aIWITEJ2kLhOJp76eDJL4khiQaA6ElUkfFtoZ5yqkWlx+nUpmmmAclL2YewBSHzgO4LNxnUlU1FOxZcQ4QQF2eMxgAFfGADG76fxFq+0QTQMv8qCNe5NdBA9YUVOjolHJhGBHXeoaIDaR89SChFAySpMjmUqZKjQbNWgdkPwq/SQg5vdQuq/8Nly/lQ3lf3pbH5WF5UO675AJfl6ut1bCAuSiklOs55IbL2AZqzsja2qNNlcwkRaYQZuK0zpPGS6sY6Wf5F9HtV827RVlxnCB+eK6cXyAQWdzFIYYSS6qAySwB6U030ozMnsk5tIoebfl3WOwPQUc+yhw4Lx1TDolf7XsGIUyDh8xt42fPD2vqLjLFC3wuPCkYDjt0h9Atj+SKt4zd27SFYUiXi4U+xsq1zylyDOIvZygqJrr+v1dTDJG5wJqtHQyEpF0K+lFSqj8cIUONKQey1uceLIEgIJdCD+v3u0Xjhm6geIBo73GTuofofnp2a+fByc8YRr6O/FXHI5U8zzgvjIS8BzYMB/xhLBartYp2AHi3GCGzmph0Vju9khHLIPZZE5m3ylNdsXAMi2PSw3BUfHoSFj6/MFokr5Mid02TBh0mQjCyKCcoQebYmdmxcEne3CE9TTk2eA8/At4qdJ4ETsa5vUj1i8qvu69v3y5+mNMd+aCuLUu2dUMOZZvr8miv+D7rMLjjf2Dy5g6WhdsuGQax0KX8GGoVo7vQVpEEHSnFTirE0J+db5E1xc/jbfQpUjHkLiD6cBxyG1BygA3J/sWkAjcaOYCwHOXx5UvAkL5KKEI0yum+3VfqJ1fE0ned/DsYCDxSyAake5jWKoYIoW2pHJDXhBmZ5uefpBDXACOIory5C60zUOWsiTzmC8oyzw2lLBSZZoCRCREiQ5MefjKUFpyUyUWWEkd8yzKIE19W0HU539tDJm/gFCLDpeEoi007pQzSLIBneAYhGyLVwC1Ey8OtM+5LWJ4cMoB3oT0OWbE7KKJ3TIjM0pgsieHYtnTIixRVdQiRvTt6KbY22N74XipfvofBQ8BofBPiDYoL5HmEiK8g59xFaIJO+crjc1owqVSY+IQu+z3XqtUYJ9ut1MyjQoyByR2/ElEDIScjDi8sretysLYyQpcBW38rKhpHO+B34Y2KyCzWm9ulUfEnKn+iI1EyymbZLO+yMfFkTdgOBo08A9yY9HboEaHzBiFmnAPOG941u3RPkfyWYxj6vvW+VzdoFOWjj5fGs3NTLBSDo/O8giE3HCmVthfwWQs3GI534qx/LRiuSh9KNTk14o7B1COdo81g+LyYIHMKOdfHXmztiIX03vmRvM8D45p0kfJtiB4Gww03NrOwpo2VTKC90hP1Yn1gVrcboXW+ZRXvwrf5Sht+hIE1us4MhXKTkUaHhUN0j5BjE2xJSvUixSLJda/7l2PiAyIzyhfKV8p1ihFUxz480miQnGv0z/hj3D8RHYok5mcKxPAm1Yt1euO/YStHHTGItXkIX7phsSrVpUmhAyHP29/Hn8ek3D5MzNtgWPFzTOve4GJBbjGdyIFgQeMqKzEUOnE8MlOkS0locxqlA5kTykkxeZitNLcTL3wdoWDgtRPa9ZflrX3WcByMcRe4n9bQ+le5WBADbIhLG+RAK7r9nib1s5wkNMiEC5RSNadFVNWWkPPpdJni3H7s3+kt0xuFeMJyS8HmhjojC5pXq402ikuTNJfrZlsOEAayA9qPsEfCIN7xXcqy3WKoVETLjDPKdojhvG7zLpMHD9gGhninNz3LL+++Rp9u37+i02USYxCiV3bLZpfWyOQRMkB3DK2wnXNjL7ZiXHelt6EcDtEi3+92qbntutDeVPxqK0WOzZU5+khalwr7uEG3bnlvMCxJhSYJrUt8oUxH10SwRgdv38DXJSPD5iUPXRfQJmvxytq3eDmLwvkPyWpXH9IDAa2WTUjZLFNusIef9b1D5UKeopiAgdM3/sLtTjaDKIygHc23VbOWUhM5ASYAi3OusCBGav84TAcfj2GIuqN8o54JEsrnpIJRVi5JMTqpmgOZOpwjLILtlU+Ko9CdQ0Yk1ylfCCYH+8T3WD5eqTS6ibqzk4jXuHsmLWaDdiNt6/JZe72a7t3DEOnLRr+Vgt3OI98YBpIrODyu+Z8K4s93VuXNRq9ULIulGEby7WkVbQkjGI6mvWpT8fK4R2d1zUbdvyXcI5YiLkkWBsjcp9z+04GcpR5C65Nsa8uy/L90xcJAyHEkhQzlMmj2prnlkaZQSRzV+roNyvselJtwZM9/jOtYjUCaEwNR4FB4FrMWoBYPDkvPGa3SHzn3LIRmtLFshN8IuMtbAXAwvukdn/MBnfek37ZuQ/Hh/Huu7gU8m9+8E7q7zBU7AJ2AlwK2ljyWLUwjW62Hud1rqgCXWUbm+AkFOW8onHe8zNYI0I3UYydBFDpSSaMWwaVJrQiF/QLUgQc8IaBw/qVbzXgZ1ucJt8W3kzTS/fiqFkFdTtXyCZVskAdKQYU4Q61S/ikdYfd+kZEjjrlLBJqo5Z0+mQGaflfbpe7FRzWMxCzPsXvixXjJoovMjhpLfCZm7T+1Yk8f2M/12xj/5otuJnIv9xe2hAHClGM8oc8FYBjGsBGGacUTCr3fpXOSVWbJ3hNp/0THEZde7UkV7iykOuz64hXJB/2+9lp4Ku7Heivx3igOp1iYPCdh1kB/qO3ZxLfbmNaRSClgiM/ZsAOZYsQqi4C2CFP+E+uUCDKiy9StqsTX/XdvkfOj/h4wFitA2QQtQkBBNmaFHKhVcR9V6WTEXxjGi9xn2/oWHtozxW1dhGzJ0mXn0MSo4xvk0v01iIG/Scvr++bE0RQMh0ogV0AwXCTS0feR9h3QHj5bGnk9owu50shPc99IGm7dIt8mH29C1GYWRIwkM/eZ4X1MFuBoxNBRcBZ98GlC29Z5c+gXbSfzN3ZXpb/k/NDqTdiscEB78Esy9u9mSXJTBi7u76ULF/Pbc+MuH+n5bWuWZQr1nKFkDjRh+ZlEs4NoY9uIUJWHjw4nCyOF8pdPbLS661MkUtjGxB9lY0Wncffd2yZuSOVgY4CXpcKskG3M3/X0OtMjGkFHctCZfWYlQRlk/ymVCzByavevCV6fJb8w764g6XbGpVJpzxDGht3CYYaWAYM6cIL4RS1BhSHQCUsllQkuOBSxA/efYb9ez0HD4DCUW+y1BAhcF9UBfKyj/dJan2mu3TE04V8vktsm0EZ0ErrZoEo/5d4LQlQVyswiFzrRekGLws48E6rLmraiN8ASZmmT+geM6/u+d8fuMY7JZS1Sg844JkGei4e7gq2D3OYH48NgS//Vra+bzzPLD+YBcUtgaa0MDohUzHhz4H2TnKv5eIuIkyxeyVOk1c9OB3g/XUiJrG5xuW4HzN3o05nMh9IC2UzoALwsAKmbHiCkZYfagv3nNs4eLp1O0/Y08X+Wig6NEoj+ZRfYsBnA0rmNG5IcunUP1ALZ7PKradncQDBQ/3uww3u+iZ6GM8tWRJ+52S53jlFuUDY6Ps1j7ID848A1AsoEWXGcRj4pxxXIdfNlXgE7nCa4BVcmI4qFeb21CMCP/J3kzn1N5ZbfZC4liYZQ+lQRYwZBI4bhYRWSjjFNK7xCLd7RtdOXpiptoMMYkBxKHA2aKlXE6B7ZkJ4GfNZlMHtb+7Zx2NrepU4zQD9UPXcCz+r3VHVc4qpOPH4A7nkUo9z8rO5t42BlKmwP2vQ+fl0Vq0XoPIHGP/u/5EIlO9nu9e0zdAdOTJvYNoqi3giR+jLCJH1OBWCp/VnC/1AepV/DA+FWkEewraZ2TcDjfxvKcE8J4dOxakxKqfD1MvuqACgFGpErclcle76IwNF9ywN/xixfOcdjUxXGpMPHqfKT1/d8wtIBl8hYmO3ugi8WGoKRnFxtJF/5yBuTS0AiSdVYoIYX8uDQBSELcfvvRGm0ZsPcY4/FubAlLEnqN+a5X00bl3t/EjKB4AMmUgJV7sPb0gVu11xgJDCK2LY1n/uTjxdjXmwvBlr5GLmQzO75wS4IYH+oSVXlFZX0yYwSIuqz48wm55ssgS5Wle3INfs+PWahTaaVHTu5hJ07sDQhCHjHda/grpPxhU0ElBAt+omM3zRL5n+cOiGgjcvSAtTgovugZf7mzN3hebkxzDJSMw8KmM0gbjI9c8cteB7u5vFMdvQ8t6pmIITgPQKERgSUazYBVKBWbA1+2/o2L+C3YU6U1ekTb269undR8gFCPpj7r8dKGaX5UNaP6ukZIR1QCVGeqWthrk5j6X1AReqrhdDNxFxyOSQHdDapZiayyea7BnoXy6PMB0STKssDy543f9myLDF5WuJxhWF3YlWnaNhZG0YILPsnaVRQ1VBPRZB/Di8p2kCmHVrupcwKDeZFT1h+aqI3/Y89aIG7DPAhV9xZLI8xHM9SKmD+CMv/tAal8NoFQpjq0i/ZidM9EoJyKnh/J6+fSaW96Lq6BlDr2Zek0eEvPDbtV5F5wQsVTSFrzBqnZ0qMobjfHatSa9mfRvtmopAEfivv1TWZuBmT0fShvsYvVwYnf7jTmw4hJErS6PpU9sAQs07S1QVs/RNM90jJ0aoRMdFjf/GNu9oYdh4lzMUqBVeN5W0KlYK5LnAYkl/fr764eScw3v7BwNjPmEc2UGQ87V43+RCxP+ydpVc9Sd9c1mFEGjl7Dly8la6ytUeZLXXiLvLFQmn/L1IQ1xIAgHphFIZaoS61XZ5625uYj1bjuIol4OFX5GrvQqhKx4okXCs7yvqde4a95aEmb5fJyXSC6SobLW/cSFOozqATh59vdAp1phWwmDwQvo6YG5TgKQJHA83FlPrko38L1YYLF8S/MDw3OiWFlWo7ycTv9md+6DZiQUOwjWJ6vM9o+WOXknOuZwuii5+d2SEQeZvbpEEpytdQrLRWsC9hd/h41+gIN9Ij8WIpcK7czZWtcCPPiAuHwUQQ9oobR8O+mWdunCZne7aLqR4bsSnCDNR4pF6jGcl1TCDxp3CuraTIRPyztywnABCooPd5ddImPf4bgQw/BfB57+A0gNPrb/Tnv9+Vzys7AWpljMSmS7nK94eirGy8vWHoCb0ivlLyRHWsxA4WTdDF5fItbW4H5gb8TMBICW46Becpocl5rq+64726jAGlD1Y8LqduQLNVUAbixR789ELLiPIq7fhxCSs3Y+bu6XEbhjRy8docgdU1VsCiknizXnCAhEZ3SGp2m1RYYCGVusWSKn1EqNYBcGbK1Cs9rKwUIoNTETb22NV/FjqF41bWqCYWRv1yoSdurP1RyJfGwMAvxXF2Exd3Lk64sB3i5L5UUTdumbixVmrVqNX6iDLjuLEaiPkrEXDKhecHudxTrFVHPg+NypxYmuaS5QwlLDRc0Gj0ONTzEGr0qFXSZnGquXEPcJ6ETjTpcLCaMPirAgA=); }</style></defs><g stroke-linecap="round" transform="translate(10 96.3890380859375) rotate(0 190.7322368421053 94.25000000000001)"><path d="M7.86 8.16 C7.86 8.16, 7.86 8.16, 7.86 8.16 M7.86 8.16 C7.86 8.16, 7.86 8.16, 7.86 8.16 M2.35 20.59 C7.43 16.38, 13.52 10.82, 18.1 2.48 M2.35 20.59 C4.94 17.07, 8.34 13.08, 18.1 2.48 M1.43 27.75 C8.74 20.09, 13.42 11.04, 24.4 1.33 M1.43 27.75 C9.79 19.49, 16.72 10.77, 24.4 1.33 M1.17 34.14 C11.55 24.65, 16.26 15.56, 30.7 0.18 M1.17 34.14 C11.73 20.99, 23.25 8.24, 30.7 0.18 M0.91 40.54 C16.53 22.91, 29.57 9.91, 36.34 -0.21 M0.91 40.54 C10.78 28.06, 22.12 17.84, 36.34 -0.21 M1.31 46.19 C13.69 33.51, 26.86 16.25, 41.33 0.15 M1.31 46.19 C9.75 36.49, 18.77 25.37, 41.33 0.15 M1.04 52.58 C13.43 37.71, 27.77 19.41, 46.97 -0.25 M1.04 52.58 C15.38 37.82, 27.62 22.33, 46.97 -0.25 M1.44 58.23 C14.01 43.99, 26.06 28.4, 51.96 0.11 M1.44 58.23 C17.42 37.96, 34.8 19.19, 51.96 0.11 M1.18 64.62 C21.35 39.03, 44.18 15.76, 57.6 -0.28 M1.18 64.62 C16.14 49.03, 30.59 32.84, 57.6 -0.28 M0.92 71.02 C16.27 53.93, 30.88 37.81, 62.59 0.08 M0.92 71.02 C25.04 43.04, 49.59 16.15, 62.59 0.08 M1.31 76.67 C27.1 45.01, 53.66 16.91, 67.57 0.44 M1.31 76.67 C23.42 52.21, 43.99 26.88, 67.57 0.44 M1.05 83.06 C18.95 63.88, 34.95 40.25, 73.22 0.04 M1.05 83.06 C26.67 51.22, 52.94 21.21, 73.22 0.04 M1.44 88.71 C29.97 56.8, 55.42 26.44, 78.2 0.41 M1.44 88.71 C30.14 54.94, 59.1 21.69, 78.2 0.41 M1.18 95.1 C34.19 58.37, 63.2 24.51, 83.85 0.01 M1.18 95.1 C29.64 62.58, 59.63 29.28, 83.85 0.01 M0.92 101.5 C20.11 78.08, 41.36 53.03, 88.83 0.37 M0.92 101.5 C24.64 75.94, 46.55 48.5, 88.83 0.37 M1.32 107.14 C29.39 74.71, 56.3 40.57, 94.48 -0.02 M1.32 107.14 C36.35 66.97, 72.1 28.59, 94.48 -0.02 M1.05 113.54 C28.97 78.11, 58.5 45.44, 99.46 0.34 M1.05 113.54 C33.46 75.1, 68.62 35.67, 99.46 0.34 M1.45 119.19 C28.88 86.77, 57.46 55.21, 105.11 -0.06 M1.45 119.19 C34.71 82.05, 66.71 42.72, 105.11 -0.06 M1.19 125.58 C39.7 86.92, 73.96 42.27, 110.09 0.3 M1.19 125.58 C23.42 100.2, 47.94 73.86, 110.09 0.3 M0.93 131.98 C30.97 97.75, 60.83 61.44, 115.74 -0.09 M0.93 131.98 C28.05 99.24, 56.78 67.39, 115.74 -0.09 M1.32 137.62 C27.23 109.33, 55 76.65, 120.72 0.27 M1.32 137.62 C47.32 85.72, 91.73 34.05, 120.72 0.27 M1.06 144.02 C34.7 105.45, 68.18 65.52, 126.37 -0.13 M1.06 144.02 C33.9 105.16, 66.69 67.23, 126.37 -0.13 M1.45 149.67 C52.43 90.64, 103.71 31.11, 131.35 0.23 M1.45 149.67 C43.93 98.94, 87.04 50.39, 131.35 0.23 M1.19 156.06 C29.21 120.63, 60.27 85.64, 137 -0.16 M1.19 156.06 C37.39 114.67, 72.87 74.65, 137 -0.16 M0.93 162.46 C51.97 102.99, 102.28 43.82, 141.98 0.2 M0.93 162.46 C42.86 115.51, 84.64 66.67, 141.98 0.2 M1.98 167.35 C61.35 100.97, 116.7 32.32, 147.63 -0.2 M1.98 167.35 C53.06 105.9, 106.93 44.9, 147.63 -0.2 M3.03 172.24 C60.68 109.15, 119.88 40.37, 152.61 0.16 M3.03 172.24 C48.27 118.66, 94.6 64.4, 152.61 0.16 M4.74 176.37 C45.61 131.92, 84.71 82.1, 158.26 -0.23 M4.74 176.37 C47.38 127.39, 87.76 81.61, 158.26 -0.23 M7.76 179 C63.71 110.83, 125.06 42.44, 163.24 0.13 M7.76 179 C53.87 125.53, 100.35 72.74, 163.24 0.13 M10.78 181.62 C50.69 138.99, 86.88 96.22, 168.89 -0.27 M10.78 181.62 C65.8 121.35, 118.11 60.81, 168.89 -0.27 M13.8 184.24 C52.83 137.76, 93.64 93.4, 173.87 0.09 M13.8 184.24 C51.21 142.26, 86.81 101.34, 173.87 0.09 M17.47 186.11 C67.39 125.59, 119.66 67.01, 178.86 0.45 M17.47 186.11 C64.54 132.3, 110.67 79.4, 178.86 0.45 M21.8 187.23 C78.31 124.53, 134.56 59.34, 184.5 0.06 M21.8 187.23 C77.63 123.04, 133.87 57.94, 184.5 0.06 M26.13 188.34 C65.03 146.79, 100.75 103.11, 189.49 0.42 M26.13 188.34 C75.42 132.43, 124.45 75.48, 189.49 0.42 M31.12 188.7 C95.09 117.61, 157.9 43.34, 195.13 0.03 M31.12 188.7 C85.96 126.4, 140.55 63.48, 195.13 0.03 M36.11 189.06 C88.63 129.06, 143.25 66.37, 200.12 0.39 M36.11 189.06 C88.3 132.2, 138.31 72.64, 200.12 0.39 M41.75 188.67 C100.97 119.04, 158.75 49.18, 205.76 -0.01 M41.75 188.67 C101.28 118.55, 163.06 47.64, 205.76 -0.01 M46.74 189.03 C85.53 141.77, 125.63 95.49, 210.75 0.35 M46.74 189.03 C100.03 126.19, 154.08 64.39, 210.75 0.35 M52.38 188.63 C87.73 145.73, 125.18 103.76, 216.39 -0.04 M52.38 188.63 C97 139.04, 139.36 89.49, 216.39 -0.04 M57.37 188.99 C104.03 138.29, 148.27 86.99, 221.38 0.32 M57.37 188.99 C106.9 129.04, 159.71 68.79, 221.38 0.32 M63.01 188.6 C125.62 116.63, 187.15 44.92, 227.02 -0.08 M63.01 188.6 C112.92 131.68, 163.28 73.61, 227.02 -0.08 M68 188.96 C127.89 120.92, 190.99 49.37, 232.01 0.28 M68 188.96 C115.9 132.91, 164.83 77.11, 232.01 0.28 M73.64 188.56 C105.49 151.02, 139.2 112.01, 237.65 -0.11 M73.64 188.56 C108.03 147.79, 144.31 106.92, 237.65 -0.11 M78.63 188.93 C133.52 123.4, 193.29 56.9, 242.64 0.25 M78.63 188.93 C119.29 142.01, 160.85 95.5, 242.64 0.25 M84.27 188.53 C139.59 126.25, 195.6 63.1, 248.28 -0.15 M84.27 188.53 C122.44 145.59, 159.67 102.31, 248.28 -0.15 M89.26 188.89 C139.96 128.84, 192.91 69.82, 253.27 0.21 M89.26 188.89 C125.88 146.21, 163.64 103.09, 253.27 0.21 M94.9 188.5 C158.03 117.29, 222.65 42.05, 258.91 -0.18 M94.9 188.5 C157.29 116.84, 217.88 47.23, 258.91 -0.18 M99.89 188.86 C162.86 117.34, 227.32 41.92, 263.9 0.18 M99.89 188.86 C137.57 146.21, 175.38 104.13, 263.9 0.18 M105.53 188.46 C141.55 148.54, 178.18 104.51, 269.54 -0.22 M105.53 188.46 C137.56 150.02, 170.63 111.99, 269.54 -0.22 M110.52 188.82 C145.78 149.65, 179.76 108.33, 274.53 0.14 M110.52 188.82 C163.39 127.93, 216.57 65.58, 274.53 0.14 M115.5 189.18 C160.54 137.45, 206.39 85.24, 280.17 -0.25 M115.5 189.18 C161 136.98, 208 82.99, 280.17 -0.25 M121.15 188.79 C162.84 142.44, 201.61 95.83, 285.16 0.11 M121.15 188.79 C180.44 121.56, 237.81 55.6, 285.16 0.11 M126.13 189.15 C166.69 141.77, 205.84 94.7, 290.8 -0.28 M126.13 189.15 C170.87 137.96, 217.14 85.42, 290.8 -0.28 M131.78 188.75 C170.56 142.62, 211.71 96.64, 295.79 0.08 M131.78 188.75 C196.52 114.89, 259.52 41.33, 295.79 0.08 M136.76 189.11 C200.47 115.61, 264.17 45.03, 300.78 0.44 M136.76 189.11 C180.77 138.6, 224.57 87.44, 300.78 0.44 M142.41 188.72 C206.74 117.18, 269.1 44.07, 306.42 0.04 M142.41 188.72 C188.93 133.09, 236.91 77.75, 306.42 0.04 M147.39 189.08 C183.32 145.36, 220.52 105.35, 311.41 0.4 M147.39 189.08 C189.69 138.71, 232.38 89.83, 311.41 0.4 M153.04 188.68 C214.06 116.45, 275.15 48.92, 317.05 0.01 M153.04 188.68 C215.71 117.97, 276.2 48.2, 317.05 0.01 M158.02 189.04 C198.29 140.93, 240.66 92.63, 322.04 0.37 M158.02 189.04 C199.49 142.57, 239.93 96.77, 322.04 0.37 M163.67 188.65 C214.08 130.69, 265.8 69.96, 327.68 -0.03 M163.67 188.65 C210.7 131.65, 260.73 75.74, 327.68 -0.03 M168.65 189.01 C208.67 143.56, 247.62 99.6, 332.67 0.33 M168.65 189.01 C226.3 123.81, 283.65 57.81, 332.67 0.33 M174.3 188.61 C211.41 144.12, 246.71 101.36, 338.31 -0.06 M174.3 188.61 C207.14 149.69, 240.27 111.94, 338.31 -0.06 M179.28 188.97 C222.37 137.84, 269.57 86.25, 343.3 0.3 M179.28 188.97 C225.56 135.35, 271.8 80.53, 343.3 0.3 M184.93 188.58 C243.29 121.27, 301.94 53.62, 348.94 -0.1 M184.93 188.58 C246.9 117.06, 310.66 42.92, 348.94 -0.1 M189.91 188.94 C248.09 123.99, 304.19 56.33, 353.93 0.26 M189.91 188.94 C238.52 132.27, 288.39 75.36, 353.93 0.26 M195.56 188.55 C235.46 146.08, 272.43 101.87, 358.26 1.38 M195.56 188.55 C261.43 112.66, 325.32 38.98, 358.26 1.38 M200.54 188.91 C237.09 151.51, 269.74 113.56, 362.59 2.49 M200.54 188.91 C240.74 143.06, 280.52 98.92, 362.59 2.49 M206.19 188.51 C244.78 142.69, 284.62 93.5, 366.92 3.61 M206.19 188.51 C265.12 121.78, 321.35 55.6, 366.92 3.61 M211.17 188.87 C254 139.16, 294.98 91.27, 370.6 5.48 M211.17 188.87 C253.67 140.65, 295.7 91.54, 370.6 5.48 M216.82 188.48 C258.01 140.42, 302.21 92.44, 372.96 8.86 M216.82 188.48 C254.15 145.89, 292.45 102.96, 372.96 8.86 M221.8 188.84 C268.71 136.48, 313.22 86.37, 375.98 11.48 M221.8 188.84 C274.3 129.4, 327.52 67.51, 375.98 11.48 M227.45 188.44 C285.12 121, 344.35 54.42, 378.34 14.86 M227.45 188.44 C282.95 121.64, 341.99 54.88, 378.34 14.86 M232.43 188.8 C280.63 133.43, 328.65 74.87, 380.05 18.99 M232.43 188.8 C283.07 127.74, 335.31 68.31, 380.05 18.99 M237.42 189.16 C269.09 154.89, 297.01 117.33, 380.44 24.64 M237.42 189.16 C291.7 127.05, 347.18 64.28, 380.44 24.64 M243.06 188.77 C294.38 128.03, 348.22 68.16, 381.49 29.52 M243.06 188.77 C295.55 126.67, 350.13 64.75, 381.49 29.52 M248.05 189.13 C295.67 133.36, 343.85 76.69, 381.89 35.17 M248.05 189.13 C274.63 155.64, 302.15 124.02, 381.89 35.17 M253.69 188.73 C291.86 145.08, 325.99 102.24, 381.63 41.56 M253.69 188.73 C285.49 152.89, 318.12 115.73, 381.63 41.56 M258.68 189.09 C304.98 133.23, 351.89 80.86, 382.02 47.21 M258.68 189.09 C292.6 150.82, 326.81 112.44, 382.02 47.21 M264.32 188.7 C300.6 145.87, 336.99 107.19, 381.76 53.61 M264.32 188.7 C308.59 139.21, 350.38 91.13, 381.76 53.61 M269.31 189.06 C291.16 164.46, 315.56 137.6, 381.5 60 M269.31 189.06 C308.95 143.29, 347.66 98.88, 381.5 60 M274.96 188.66 C309.68 146.87, 346.32 108.17, 381.89 65.65 M274.96 188.66 C299.91 160.43, 324.37 133.14, 381.89 65.65 M279.94 189.02 C311.34 155.41, 340.27 121.03, 381.63 72.04 M279.94 189.02 C311.27 152.2, 342.46 117.64, 381.63 72.04 M285.59 188.63 C325.14 143.75, 360.91 101.33, 382.03 77.69 M285.59 188.63 C304.05 164.81, 324.6 143, 382.03 77.69 M290.57 188.99 C322.19 152.01, 356.14 115.67, 381.76 84.09 M290.57 188.99 C318.8 154.79, 347.11 122.79, 381.76 84.09 M296.22 188.6 C316.34 163.33, 336.61 141.16, 381.5 90.48 M296.22 188.6 C324.98 155.44, 353.38 124.26, 381.5 90.48 M301.2 188.96 C327.1 156.35, 356.14 124.14, 381.9 96.13 M301.2 188.96 C322.33 165.44, 344.81 141.13, 381.9 96.13 M306.85 188.56 C333.39 158.04, 360.72 126.53, 381.64 102.52 M306.85 188.56 C325.44 166.59, 346.63 143.4, 381.64 102.52 M311.83 188.92 C331.87 163.91, 354 143.91, 382.03 108.17 M311.83 188.92 C338.43 158.16, 363.07 129.92, 382.03 108.17 M317.48 188.53 C333.86 164.79, 355.57 145.47, 381.77 114.56 M317.48 188.53 C341.63 161.22, 364.94 133.41, 381.77 114.56 M322.46 188.89 C339.23 169.87, 359.78 147.82, 381.51 120.96 M322.46 188.89 C341.32 166.78, 360.72 144.82, 381.51 120.96 M328.11 188.49 C346.75 168.41, 364.24 147.57, 381.9 126.61 M328.11 188.49 C339.61 173.75, 352.48 159.7, 381.9 126.61 M333.09 188.85 C349.97 172.9, 364.98 154.81, 381.64 133 M333.09 188.85 C350.8 168.11, 367.01 149.47, 381.64 133 M338.74 188.46 C350.6 172.88, 363.89 158.47, 382.04 138.65 M338.74 188.46 C351.64 172.18, 366.25 156.03, 382.04 138.65 M343.72 188.82 C357.2 170.5, 373.02 154.08, 381.77 145.04 M343.72 188.82 C358.23 171.82, 374.17 154.51, 381.77 145.04 M348.71 189.18 C357.24 177.64, 367.26 165.8, 381.51 151.44 M348.71 189.18 C361.79 175.8, 374.06 161.49, 381.51 151.44 M354.35 188.78 C363.78 177.99, 375.18 167.64, 381.91 157.09 M354.35 188.78 C362.19 179.64, 370.22 169.67, 381.91 157.09 M360.65 187.63 C367.92 179.7, 375.79 168.96, 380.99 164.24 M360.65 187.63 C368.56 179.75, 376.43 169.85, 380.99 164.24 M368.92 184.22 C369.66 182, 373.86 180.48, 378.1 173.65 M368.92 184.22 C370.68 182.17, 372.41 180.36, 378.1 173.65" stroke="#a5d8ff" stroke-width="0.5" fill="none"></path><path d="M32 0 C158.74 2.14, 281.79 3.01, 349.46 0 M32 0 C109.12 -1.12, 187.02 -0.33, 349.46 0 M349.46 0 C369.71 -1.09, 379.61 12.59, 381.46 32 M349.46 0 C370.13 -0.57, 380.65 10.02, 381.46 32 M381.46 32 C379.95 62.67, 382.86 89.1, 381.46 156.5 M381.46 32 C380.72 60.17, 382.38 89.63, 381.46 156.5 M381.46 156.5 C382.94 177.23, 372.6 187.85, 349.46 188.5 M381.46 156.5 C380.93 177.72, 372.48 187.71, 349.46 188.5 M349.46 188.5 C255.53 186.1, 160.55 187.07, 32 188.5 M349.46 188.5 C260.95 188.24, 173.29 188.48, 32 188.5 M32 188.5 C9.22 188.41, -1.28 178.58, 0 156.5 M32 188.5 C9.89 189.4, 0.47 176.3, 0 156.5 M0 156.5 C-0.16 128.54, 0.32 94.89, 0 32 M0 156.5 C0.62 108.76, 0.09 59.82, 0 32 M0 32 C-1.38 9.21, 10.67 -1.04, 32 0 M0 32 C0.21 11.9, 12.46 -0.19, 32 0" stroke="#000000" stroke-width="1" fill="none"></path></g><g transform="translate(95.64890096564045 173.1390380859375) rotate(0 105.08333587646484 17.5)"><text x="105.08333587646484" y="24.668" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#000000" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">1. systemd-boot</text></g><g stroke-linecap="round" transform="translate(10 345.3890380859375) rotate(0 190.7322368421053 94.25000000000001)"><path d="M7.86 8.16 C7.86 8.16, 7.86 8.16, 7.86 8.16 M7.86 8.16 C7.86 8.16, 7.86 8.16, 7.86 8.16 M2.35 20.59 C8.03 14.17, 11.63 9.33, 18.1 2.48 M2.35 20.59 C5.51 15.94, 10.76 11.89, 18.1 2.48 M1.43 27.75 C8.48 21.14, 13.26 14.06, 24.4 1.33 M1.43 27.75 C11.27 17.4, 18.67 7.51, 24.4 1.33 M1.17 34.14 C9 24.65, 13.96 18.56, 30.7 0.18 M1.17 34.14 C8.83 25.58, 16.88 17.77, 30.7 0.18 M0.91 40.54 C11.26 29.81, 18.71 18.82, 36.34 -0.21 M0.91 40.54 C13.03 27.95, 23.8 15.33, 36.34 -0.21 M1.31 46.19 C11.45 37.12, 16.56 26.27, 41.33 0.15 M1.31 46.19 C15.28 30.36, 28.33 15.67, 41.33 0.15 M1.04 52.58 C12.46 40.73, 19.22 29.76, 46.97 -0.25 M1.04 52.58 C19.81 31.54, 37.34 12.02, 46.97 -0.25 M1.44 58.23 C12.83 44.51, 23.42 32.79, 51.96 0.11 M1.44 58.23 C18.5 38.31, 37.82 18.06, 51.96 0.11 M1.18 64.62 C12.56 50.23, 25.08 35.01, 57.6 -0.28 M1.18 64.62 C15.44 49.7, 27.76 33.56, 57.6 -0.28 M0.92 71.02 C15.06 53.11, 28.21 38.63, 62.59 0.08 M0.92 71.02 C18.76 50.41, 37.22 29.44, 62.59 0.08 M1.31 76.67 C15.1 59.69, 32.96 41.21, 67.57 0.44 M1.31 76.67 C17.12 57.15, 34.07 39.16, 67.57 0.44 M1.05 83.06 C19.41 62.96, 35.11 43.77, 73.22 0.04 M1.05 83.06 C20.31 61.09, 38.15 39.31, 73.22 0.04 M1.44 88.71 C29.88 55.04, 62.32 17.34, 78.2 0.41 M1.44 88.71 C29.41 56.69, 57.39 23.57, 78.2 0.41 M1.18 95.1 C31.16 58.75, 60.54 26.27, 83.85 0.01 M1.18 95.1 C23.61 70.29, 44.5 44.52, 83.85 0.01 M0.92 101.5 C26.5 72.68, 51.69 45.81, 88.83 0.37 M0.92 101.5 C24.51 73, 51.2 44.75, 88.83 0.37 M1.32 107.14 C27.63 80.04, 50.69 51.28, 94.48 -0.02 M1.32 107.14 C19.49 85.21, 40.32 63.19, 94.48 -0.02 M1.05 113.54 C24.66 86.01, 47.82 59.35, 99.46 0.34 M1.05 113.54 C28.27 82.14, 55.88 51.95, 99.46 0.34 M1.45 119.19 C24.72 94.66, 48.72 66.38, 105.11 -0.06 M1.45 119.19 C37.55 77.91, 74.94 34.77, 105.11 -0.06 M1.19 125.58 C34.57 88.95, 72.13 46.2, 110.09 0.3 M1.19 125.58 C38.81 81.9, 77.01 37.91, 110.09 0.3 M0.93 131.98 C26.49 102.66, 53.96 70.54, 115.74 -0.09 M0.93 131.98 C24.51 105.66, 48.9 76.95, 115.74 -0.09 M1.32 137.62 C33.74 98.66, 66.67 64.62, 120.72 0.27 M1.32 137.62 C40.92 94.5, 77.54 50.58, 120.72 0.27 M1.06 144.02 C36.34 104.14, 70.95 64.74, 126.37 -0.13 M1.06 144.02 C34.27 105.66, 66.49 67.79, 126.37 -0.13 M1.45 149.67 C46.06 95.51, 92.06 44.21, 131.35 0.23 M1.45 149.67 C39.32 106.79, 78.28 61.78, 131.35 0.23 M1.19 156.06 C42.56 110.97, 79.17 69.31, 137 -0.16 M1.19 156.06 C33.88 116.28, 69.12 76.5, 137 -0.16 M0.93 162.46 C57.06 97.6, 112.9 37.1, 141.98 0.2 M0.93 162.46 C32.22 125.76, 63.63 90.41, 141.98 0.2 M1.98 167.35 C57.03 101.22, 113.1 39.21, 147.63 -0.2 M1.98 167.35 C41.78 122.08, 81.05 75.28, 147.63 -0.2 M3.03 172.24 C37.28 131.48, 76.07 88.33, 152.61 0.16 M3.03 172.24 C50.67 117.24, 99.77 59.44, 152.61 0.16 M4.74 176.37 C37.07 139.05, 69.17 99.1, 158.26 -0.23 M4.74 176.37 C48.91 127.2, 91.96 76.46, 158.26 -0.23 M7.76 179 C61.22 114.3, 116.99 53.16, 163.24 0.13 M7.76 179 C49.56 129.14, 93.67 79.83, 163.24 0.13 M10.78 181.62 C48.3 137.46, 87.18 93.13, 168.89 -0.27 M10.78 181.62 C45.31 141.48, 80.59 102, 168.89 -0.27 M13.8 184.24 C50.16 145.05, 82.4 104.76, 173.87 0.09 M13.8 184.24 C54.05 140, 92.68 94.89, 173.87 0.09 M17.47 186.11 C55.95 142.74, 96.25 97.1, 178.86 0.45 M17.47 186.11 C58.86 137.4, 100.25 90.32, 178.86 0.45 M21.8 187.23 C72.9 129.86, 125.38 72.4, 184.5 0.06 M21.8 187.23 C86.59 114.19, 149.09 42.27, 184.5 0.06 M26.13 188.34 C90.16 111.83, 154.9 40.21, 189.49 0.42 M26.13 188.34 C81.04 126.81, 135 64.35, 189.49 0.42 M31.12 188.7 C88.83 117.5, 151.52 50.35, 195.13 0.03 M31.12 188.7 C64.68 151.3, 97.92 112.24, 195.13 0.03 M36.11 189.06 C103.98 112.72, 169.69 39.58, 200.12 0.39 M36.11 189.06 C79.97 140.39, 122.99 91.9, 200.12 0.39 M41.75 188.67 C86.35 136.14, 131.14 86.11, 205.76 -0.01 M41.75 188.67 C105.02 116.63, 168.36 44.52, 205.76 -0.01 M46.74 189.03 C106.25 117.63, 167.99 47.94, 210.75 0.35 M46.74 189.03 C80.66 150.61, 114.82 111.55, 210.75 0.35 M52.38 188.63 C117.94 114.28, 182.81 38.29, 216.39 -0.04 M52.38 188.63 C110.32 122.86, 166.47 57.09, 216.39 -0.04 M57.37 188.99 C114.95 125.2, 173.4 56.12, 221.38 0.32 M57.37 188.99 C120.35 115.82, 183.13 41.37, 221.38 0.32 M63.01 188.6 C106.73 139.33, 149.27 91.53, 227.02 -0.08 M63.01 188.6 C112.04 131.96, 162.43 73.39, 227.02 -0.08 M68 188.96 C129.5 120.82, 187.29 51.6, 232.01 0.28 M68 188.96 C101.5 151.49, 135.68 112.21, 232.01 0.28 M73.64 188.56 C112.18 143.52, 152.12 95.13, 237.65 -0.11 M73.64 188.56 C138.86 115.26, 203.72 41.83, 237.65 -0.11 M78.63 188.93 C139.01 118.53, 200.54 46.29, 242.64 0.25 M78.63 188.93 C129.24 133.37, 179.51 76.09, 242.64 0.25 M84.27 188.53 C135.64 131.62, 184.17 75.23, 248.28 -0.15 M84.27 188.53 C141.37 123.56, 198.78 57.53, 248.28 -0.15 M89.26 188.89 C148.43 121.68, 209.88 51.04, 253.27 0.21 M89.26 188.89 C136.15 136.29, 183.19 82.19, 253.27 0.21 M94.9 188.5 C137.89 139.81, 179.46 91.36, 258.91 -0.18 M94.9 188.5 C134.42 144.68, 172.51 100.95, 258.91 -0.18 M99.89 188.86 C133.77 149.8, 166.59 111.49, 263.9 0.18 M99.89 188.86 C139.84 144.67, 177.16 101.11, 263.9 0.18 M105.53 188.46 C153.19 137.79, 199.47 83.37, 269.54 -0.22 M105.53 188.46 C153.15 133.76, 202.69 77.14, 269.54 -0.22 M110.52 188.82 C178.54 114.84, 244.04 39.28, 274.53 0.14 M110.52 188.82 C170.07 118.88, 229.95 49.39, 274.53 0.14 M115.5 189.18 C154.24 145.97, 190.02 104.24, 280.17 -0.25 M115.5 189.18 C170.07 126.94, 224.04 64.67, 280.17 -0.25 M121.15 188.79 C179.63 121.12, 238.63 52.26, 285.16 0.11 M121.15 188.79 C185.4 115.9, 248.49 43.99, 285.16 0.11 M126.13 189.15 C173 134.88, 219.57 81.47, 290.8 -0.28 M126.13 189.15 C174.54 133.16, 224.93 74.6, 290.8 -0.28 M131.78 188.75 C184.07 129.16, 237.74 70.1, 295.79 0.08 M131.78 188.75 C189.16 123.92, 246.48 58.83, 295.79 0.08 M136.76 189.11 C194.36 124.04, 252.09 60.52, 300.78 0.44 M136.76 189.11 C190.67 128.15, 243.49 66.96, 300.78 0.44 M142.41 188.72 C176.94 148.63, 214.2 108.18, 306.42 0.04 M142.41 188.72 C199.76 121.57, 257.44 55.33, 306.42 0.04 M147.39 189.08 C187.19 145.59, 224.47 101.54, 311.41 0.4 M147.39 189.08 C195.15 133.59, 244.26 78.51, 311.41 0.4 M153.04 188.68 C218.4 112.24, 284.66 39.07, 317.05 0.01 M153.04 188.68 C200.24 132.92, 246.41 79.35, 317.05 0.01 M158.02 189.04 C202.48 141.69, 241.83 93.54, 322.04 0.37 M158.02 189.04 C195.56 146.12, 233.34 102.8, 322.04 0.37 M163.67 188.65 C220.78 125.17, 276.71 61.07, 327.68 -0.03 M163.67 188.65 C212.32 134.28, 259.49 80.17, 327.68 -0.03 M168.65 189.01 C211.53 137.22, 255.86 86.23, 332.67 0.33 M168.65 189.01 C227.8 119.19, 287.68 48.9, 332.67 0.33 M174.3 188.61 C227.49 123.5, 283.35 62.06, 338.31 -0.06 M174.3 188.61 C216.35 142.51, 256.91 94.74, 338.31 -0.06 M179.28 188.97 C212.71 149.57, 246.81 108.89, 343.3 0.3 M179.28 188.97 C220.2 143.88, 258.37 98.81, 343.3 0.3 M184.93 188.58 C245.75 120.44, 305.51 50.36, 348.94 -0.1 M184.93 188.58 C238.96 125.06, 292.46 63.46, 348.94 -0.1 M189.91 188.94 C248.81 121.58, 309.71 50.06, 353.93 0.26 M189.91 188.94 C222.91 150.29, 257.43 111.2, 353.93 0.26 M195.56 188.55 C239.7 139.96, 280.82 92.78, 358.26 1.38 M195.56 188.55 C235.41 141.57, 274.19 95.95, 358.26 1.38 M200.54 188.91 C248.83 133.68, 298.79 77.78, 362.59 2.49 M200.54 188.91 C251.48 129.17, 304.04 69.2, 362.59 2.49 M206.19 188.51 C259.06 128.58, 311.37 67.47, 366.92 3.61 M206.19 188.51 C266.49 117.55, 328.62 48.3, 366.92 3.61 M211.17 188.87 C262.38 133.12, 312.59 74.45, 370.6 5.48 M211.17 188.87 C252.31 141.19, 293.46 93.26, 370.6 5.48 M216.82 188.48 C267.13 131.43, 317.34 74.29, 372.96 8.86 M216.82 188.48 C260.67 139.43, 302.98 90.24, 372.96 8.86 M221.8 188.84 C254.94 152.05, 288.56 113.92, 375.98 11.48 M221.8 188.84 C255.16 150.18, 288.38 113.88, 375.98 11.48 M227.45 188.44 C271.8 138.43, 313.64 89.88, 378.34 14.86 M227.45 188.44 C276.69 130.91, 325.17 73.91, 378.34 14.86 M232.43 188.8 C282.05 131.69, 330.8 75.95, 380.05 18.99 M232.43 188.8 C285.17 128.28, 339.25 65.85, 380.05 18.99 M237.42 189.16 C277.59 141.04, 319.48 94.89, 380.44 24.64 M237.42 189.16 C283.37 137.87, 325.53 86.68, 380.44 24.64 M243.06 188.77 C283.61 143.34, 325.11 96.78, 381.49 29.52 M243.06 188.77 C273.44 152.55, 305.49 116.5, 381.49 29.52 M248.05 189.13 C291.37 138.17, 334.21 91.25, 381.89 35.17 M248.05 189.13 C279.87 151.72, 310.86 115.78, 381.89 35.17 M253.69 188.73 C290.17 147.29, 321.61 107.55, 381.63 41.56 M253.69 188.73 C295.17 142.35, 335.76 96.16, 381.63 41.56 M258.68 189.09 C306.11 136.72, 348.96 82.09, 382.02 47.21 M258.68 189.09 C294.26 147.88, 330.28 107.62, 382.02 47.21 M264.32 188.7 C300.3 148.63, 335.44 109.94, 381.76 53.61 M264.32 188.7 C295.67 154.46, 324.5 120.54, 381.76 53.61 M269.31 189.06 C310.79 143.51, 350.91 99.33, 381.5 60 M269.31 189.06 C304.65 148.31, 341.8 104.06, 381.5 60 M274.96 188.66 C313.75 140.43, 358.51 95.45, 381.89 65.65 M274.96 188.66 C307.19 152.13, 337.45 117.91, 381.89 65.65 M279.94 189.02 C319.94 145.99, 359.68 97.54, 381.63 72.04 M279.94 189.02 C315.59 147.23, 350.73 107.14, 381.63 72.04 M285.59 188.63 C303.4 167.75, 324.15 144, 382.03 77.69 M285.59 188.63 C320.04 148.89, 355.85 106.85, 382.03 77.69 M290.57 188.99 C320.78 157.67, 348.56 124.92, 381.76 84.09 M290.57 188.99 C311.29 165.07, 331.97 141.24, 381.76 84.09 M296.22 188.6 C328.3 152.1, 361.38 115.99, 381.5 90.48 M296.22 188.6 C316.69 165.06, 338.35 139.69, 381.5 90.48 M301.2 188.96 C332.21 152.84, 363.95 114.95, 381.9 96.13 M301.2 188.96 C332.74 153.48, 363.76 119.75, 381.9 96.13 M306.85 188.56 C323.62 169.96, 337.8 151.29, 381.64 102.52 M306.85 188.56 C321.34 172.51, 335.96 154.35, 381.64 102.52 M311.83 188.92 C338.1 158.17, 365.5 127.91, 382.03 108.17 M311.83 188.92 C332.65 163.9, 353.59 138.91, 382.03 108.17 M317.48 188.53 C339.47 161.71, 365.93 134.14, 381.77 114.56 M317.48 188.53 C337.37 166.42, 358.03 142.48, 381.77 114.56 M322.46 188.89 C337.74 169.74, 351.73 154.71, 381.51 120.96 M322.46 188.89 C337.75 172.35, 351.23 155.26, 381.51 120.96 M328.11 188.49 C345.58 167.42, 366.16 141.55, 381.9 126.61 M328.11 188.49 C348.29 164.2, 366.74 142.1, 381.9 126.61 M333.09 188.85 C349.69 170.96, 366.12 153.33, 381.64 133 M333.09 188.85 C349 171.11, 365.23 151.62, 381.64 133 M338.74 188.46 C353.26 172.92, 365.82 160.25, 382.04 138.65 M338.74 188.46 C355.99 170.46, 372.02 150.4, 382.04 138.65 M343.72 188.82 C354.74 177.36, 364.02 165.6, 381.77 145.04 M343.72 188.82 C351.87 179.01, 360.23 171.03, 381.77 145.04 M348.71 189.18 C358.7 178.19, 368.52 164.02, 381.51 151.44 M348.71 189.18 C358.02 179.04, 365.81 169.9, 381.51 151.44 M354.35 188.78 C365.01 177.7, 375.73 166.91, 381.91 157.09 M354.35 188.78 C360.3 182.41, 367.01 175.58, 381.91 157.09 M360.65 187.63 C367.98 179.68, 376.35 172.3, 380.99 164.24 M360.65 187.63 C368.91 180.49, 374.59 172.46, 380.99 164.24 M368.92 184.22 C373.17 181.39, 374.9 175.12, 378.1 173.65 M368.92 184.22 C370.94 181.41, 374.5 178.7, 378.1 173.65" stroke="#ffec99" stroke-width="0.5" fill="none"></path><path d="M32 0 C142.49 0.68, 253.79 1.54, 349.46 0 M32 0 C145.28 -1.48, 259.1 -1.03, 349.46 0 M349.46 0 C372.37 1.79, 379.87 12.43, 381.46 32 M349.46 0 C369.64 -1.39, 380.86 12.48, 381.46 32 M381.46 32 C381.55 58.27, 381.51 86.99, 381.46 156.5 M381.46 32 C381.45 64.15, 380.99 97.98, 381.46 156.5 M381.46 156.5 C382.43 176.44, 371.01 187.35, 349.46 188.5 M381.46 156.5 C379.86 178.98, 372.94 187.14, 349.46 188.5 M349.46 188.5 C263.89 191.18, 177.59 189.25, 32 188.5 M349.46 188.5 C277.92 189.73, 207.23 189.86, 32 188.5 M32 188.5 C10.01 187.46, 1.59 176.36, 0 156.5 M32 188.5 C9.69 186.51, -1.84 176.63, 0 156.5 M0 156.5 C-1.19 116.07, -1.08 75.86, 0 32 M0 156.5 C-1 128.02, -0.69 100.3, 0 32 M0 32 C-0.71 9.8, 10.78 1.44, 32 0 M0 32 C1.04 9.47, 12.66 -0.69, 32 0" stroke="#000000" stroke-width="1" fill="none"></path></g><g transform="translate(153.71557042975178 422.1390380859375) rotate(0 47.016666412353516 17.5)"><text x="47.016666412353516" y="24.668" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#000000" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">2. UKI</text></g><g stroke-linecap="round" transform="translate(10 591.3890380859375) rotate(0 190.7322368421053 94.25)"><path d="M7.86 8.16 C7.86 8.16, 7.86 8.16, 7.86 8.16 M7.86 8.16 C7.86 8.16, 7.86 8.16, 7.86 8.16 M2.35 20.59 C7.1 16.63, 11.39 10.25, 18.1 2.48 M2.35 20.59 C5.57 15.28, 10.06 11.04, 18.1 2.48 M1.43 27.75 C6.52 19.15, 15.52 14.57, 24.4 1.33 M1.43 27.75 C9.73 19.07, 16.86 11.58, 24.4 1.33 M1.17 34.14 C10.05 22.73, 20.66 12.28, 30.7 0.18 M1.17 34.14 C8.03 25.18, 15.18 17.74, 30.7 0.18 M0.91 40.54 C10.29 26.41, 21.7 17.14, 36.34 -0.21 M0.91 40.54 C11.77 28.19, 22.13 17.27, 36.34 -0.21 M1.31 46.19 C12.48 31.92, 27.53 17.72, 41.33 0.15 M1.31 46.19 C15.49 31.54, 29.1 16.04, 41.33 0.15 M1.04 52.58 C13.24 36.43, 27.14 21.6, 46.97 -0.25 M1.04 52.58 C14.07 38.68, 25.74 26.49, 46.97 -0.25 M1.44 58.23 C11.72 43.32, 27.21 29.91, 51.96 0.11 M1.44 58.23 C12.32 46.21, 21.8 33.13, 51.96 0.11 M1.18 64.62 C16.19 43.22, 36.95 23.39, 57.6 -0.28 M1.18 64.62 C19.28 43.8, 37.49 23.44, 57.6 -0.28 M0.92 71.02 C21.57 45.76, 45.89 21.17, 62.59 0.08 M0.92 71.02 C17.81 51.54, 34.08 32.4, 62.59 0.08 M1.31 76.67 C24.52 49.44, 51.25 19.61, 67.57 0.44 M1.31 76.67 C25.78 47.32, 51.81 17.64, 67.57 0.44 M1.05 83.06 C19.55 60.96, 39.92 39.04, 73.22 0.04 M1.05 83.06 C21.67 58.29, 43.7 35.02, 73.22 0.04 M1.44 88.71 C26.36 63.75, 48.84 35.71, 78.2 0.41 M1.44 88.71 C30.77 56.23, 59.4 22.26, 78.2 0.41 M1.18 95.1 C35.22 59.22, 65.55 21.11, 83.85 0.01 M1.18 95.1 C18.59 74.1, 37.52 54.67, 83.85 0.01 M0.92 101.5 C35.74 60.57, 69.97 22.4, 88.83 0.37 M0.92 101.5 C20.33 78.54, 40.58 53.61, 88.83 0.37 M1.32 107.14 C26.28 77.55, 51.94 47.65, 94.48 -0.02 M1.32 107.14 C34.76 67.8, 69.44 27.43, 94.48 -0.02 M1.05 113.54 C29.28 80.2, 61.45 44.1, 99.46 0.34 M1.05 113.54 C32.48 75.82, 63.65 39.26, 99.46 0.34 M1.45 119.19 C26.25 88.74, 51.12 59.22, 105.11 -0.06 M1.45 119.19 C43.58 71.46, 83.94 23.76, 105.11 -0.06 M1.19 125.58 C37.87 81.77, 72.98 38.62, 110.09 0.3 M1.19 125.58 C42.68 78.78, 84.25 29.97, 110.09 0.3 M0.93 131.98 C42.77 80.43, 87.06 30.79, 115.74 -0.09 M0.93 131.98 C42.96 84.03, 85.3 34.92, 115.74 -0.09 M1.32 137.62 C44.44 86.02, 89.68 36.08, 120.72 0.27 M1.32 137.62 C29.01 104.32, 55.68 74.08, 120.72 0.27 M1.06 144.02 C36.4 105.25, 70.18 65.48, 126.37 -0.13 M1.06 144.02 C31.88 107.69, 64.38 71.1, 126.37 -0.13 M1.45 149.67 C44.36 103.21, 82.52 54.29, 131.35 0.23 M1.45 149.67 C32.48 114.79, 61.85 80.04, 131.35 0.23 M1.19 156.06 C53.84 94.27, 106.29 36.95, 137 -0.16 M1.19 156.06 C34.37 116.93, 68.4 77.29, 137 -0.16 M0.93 162.46 C39.79 119.29, 76.29 76.78, 141.98 0.2 M0.93 162.46 C29.05 126.48, 60.35 92.12, 141.98 0.2 M1.98 167.35 C36.39 129.86, 70.2 90.41, 147.63 -0.2 M1.98 167.35 C37.72 124.84, 74.3 83.41, 147.63 -0.2 M3.03 172.24 C61.17 106.41, 121.64 37.69, 152.61 0.16 M3.03 172.24 C59.17 107.03, 115.58 39.86, 152.61 0.16 M4.74 176.37 C59.41 116.03, 115.87 51.95, 158.26 -0.23 M4.74 176.37 C63.17 110.67, 120.36 44.6, 158.26 -0.23 M7.76 179 C69.22 108.52, 129.57 39.09, 163.24 0.13 M7.76 179 C38.06 144.23, 68.8 106.81, 163.24 0.13 M10.78 181.62 C44.91 142.36, 78.74 101.16, 168.89 -0.27 M10.78 181.62 C52.29 133.64, 94.27 85.22, 168.89 -0.27 M13.8 184.24 C49.91 140.65, 87.73 100.02, 173.87 0.09 M13.8 184.24 C61.29 129.93, 108.56 76.64, 173.87 0.09 M17.47 186.11 C62.42 134.93, 108.16 81.5, 178.86 0.45 M17.47 186.11 C74.02 119.55, 132.74 53.67, 178.86 0.45 M21.8 187.23 C63.3 137.24, 105.88 88.78, 184.5 0.06 M21.8 187.23 C78.43 119.42, 135.54 54.95, 184.5 0.06 M26.13 188.34 C81.2 126.13, 135.03 63.71, 189.49 0.42 M26.13 188.34 C60.82 146.45, 95.1 106.06, 189.49 0.42 M31.12 188.7 C78.39 138.35, 123.52 84.49, 195.13 0.03 M31.12 188.7 C66.52 144.88, 104.77 102.19, 195.13 0.03 M36.11 189.06 C93.53 123.74, 148.25 60.72, 200.12 0.39 M36.11 189.06 C69.58 147.35, 104.45 107.59, 200.12 0.39 M41.75 188.67 C76.72 145.98, 113.31 103.8, 205.76 -0.01 M41.75 188.67 C83.99 141.56, 122.74 95.36, 205.76 -0.01 M46.74 189.03 C86.33 146.37, 122.84 100.4, 210.75 0.35 M46.74 189.03 C86.27 143, 126.78 97.66, 210.75 0.35 M52.38 188.63 C106 127.47, 156.53 66.72, 216.39 -0.04 M52.38 188.63 C99.45 136.33, 145.54 84.13, 216.39 -0.04 M57.37 188.99 C107.02 133.02, 154.51 77, 221.38 0.32 M57.37 188.99 C122.61 115.62, 187.41 40.01, 221.38 0.32 M63.01 188.6 C122.92 120.3, 183.32 53.92, 227.02 -0.08 M63.01 188.6 C109.35 134.49, 156.13 79.71, 227.02 -0.08 M68 188.96 C128.66 120.16, 186.61 52.74, 232.01 0.28 M68 188.96 C118.04 131.82, 168.06 74.23, 232.01 0.28 M73.64 188.56 C133.14 119.75, 195.18 49.01, 237.65 -0.11 M73.64 188.56 C135.38 119.48, 194.92 49.92, 237.65 -0.11 M78.63 188.93 C122.17 139.36, 164.6 86.94, 242.64 0.25 M78.63 188.93 C143.28 114.66, 205.88 42.35, 242.64 0.25 M84.27 188.53 C140.88 122.25, 198.01 57.93, 248.28 -0.15 M84.27 188.53 C135.41 129.17, 185.42 70.18, 248.28 -0.15 M89.26 188.89 C147.67 122.64, 202.86 56.86, 253.27 0.21 M89.26 188.89 C152.54 115.87, 215.95 42.47, 253.27 0.21 M94.9 188.5 C153.34 117.7, 213.13 49.85, 258.91 -0.18 M94.9 188.5 C134.75 142.9, 175.48 98.05, 258.91 -0.18 M99.89 188.86 C155.5 121.26, 215.07 54.63, 263.9 0.18 M99.89 188.86 C144.89 136.32, 190.46 85.89, 263.9 0.18 M105.53 188.46 C144.2 144.05, 181.78 100.97, 269.54 -0.22 M105.53 188.46 C165.43 118.95, 225.62 47.78, 269.54 -0.22 M110.52 188.82 C171.44 118.72, 227.51 53.3, 274.53 0.14 M110.52 188.82 C161.26 130.4, 212.1 71.28, 274.53 0.14 M115.5 189.18 C155.02 142.1, 197.86 97.46, 280.17 -0.25 M115.5 189.18 C158.95 139.32, 201.98 89.75, 280.17 -0.25 M121.15 188.79 C160.76 144.42, 200.21 98.48, 285.16 0.11 M121.15 188.79 C187.06 114.26, 250.06 41.25, 285.16 0.11 M126.13 189.15 C165.64 143.86, 207.1 97.66, 290.8 -0.28 M126.13 189.15 C183.15 121.93, 240.49 54.3, 290.8 -0.28 M131.78 188.75 C194.07 116.89, 255.43 45.7, 295.79 0.08 M131.78 188.75 C182.48 128.72, 233.01 70.72, 295.79 0.08 M136.76 189.11 C189.81 126.83, 241.32 66.4, 300.78 0.44 M136.76 189.11 C173.04 145.08, 210.95 102.4, 300.78 0.44 M142.41 188.72 C202.29 116.4, 265.08 45.58, 306.42 0.04 M142.41 188.72 C188.33 136.26, 235.24 82.66, 306.42 0.04 M147.39 189.08 C205.32 118.96, 266.43 51.46, 311.41 0.4 M147.39 189.08 C205.74 120.47, 264.83 52.76, 311.41 0.4 M153.04 188.68 C209.01 124.3, 263.68 60.74, 317.05 0.01 M153.04 188.68 C191.72 142.33, 232.54 96.51, 317.05 0.01 M158.02 189.04 C205.3 132.78, 252.77 81.61, 322.04 0.37 M158.02 189.04 C217.4 120.55, 276.81 52.8, 322.04 0.37 M163.67 188.65 C228.77 114.88, 290.71 42.28, 327.68 -0.03 M163.67 188.65 C216.89 124.67, 271.68 63.24, 327.68 -0.03 M168.65 189.01 C228.73 117.84, 291.44 45.35, 332.67 0.33 M168.65 189.01 C222.87 128.39, 275.36 67.43, 332.67 0.33 M174.3 188.61 C234.84 123.06, 292.91 53.96, 338.31 -0.06 M174.3 188.61 C207.75 149.31, 241.45 111.75, 338.31 -0.06 M179.28 188.97 C240.89 118.83, 304.05 45.17, 343.3 0.3 M179.28 188.97 C227.57 133.9, 275.73 79.7, 343.3 0.3 M184.93 188.58 C234.05 134.23, 277.85 80.87, 348.94 -0.1 M184.93 188.58 C240.63 125.77, 295.37 63.69, 348.94 -0.1 M189.91 188.94 C226.85 148.81, 260.85 106.11, 353.93 0.26 M189.91 188.94 C254.69 115.01, 320.16 39.97, 353.93 0.26 M195.56 188.55 C247 127.44, 300.1 69.05, 358.26 1.38 M195.56 188.55 C243.96 131.51, 293.73 75.82, 358.26 1.38 M200.54 188.91 C242.24 140.95, 283.47 94.21, 362.59 2.49 M200.54 188.91 C248.94 133.66, 297.5 76.61, 362.59 2.49 M206.19 188.51 C243.43 147.05, 280.08 103.01, 366.92 3.61 M206.19 188.51 C255.75 131.53, 304.85 73.92, 366.92 3.61 M211.17 188.87 C245.01 148.77, 278.13 109.6, 370.6 5.48 M211.17 188.87 C268.22 122.53, 326.34 55.68, 370.6 5.48 M216.82 188.48 C264.43 133.98, 310.38 80.16, 372.96 8.86 M216.82 188.48 C258.07 139.2, 300.71 91.15, 372.96 8.86 M221.8 188.84 C268.34 135.02, 315.52 81.06, 375.98 11.48 M221.8 188.84 C263.55 138.2, 308.3 87.95, 375.98 11.48 M227.45 188.44 C257.97 152, 290.44 118.43, 378.34 14.86 M227.45 188.44 C274.91 133.48, 322.44 78.88, 378.34 14.86 M232.43 188.8 C274.07 142.62, 312.42 97.06, 380.05 18.99 M232.43 188.8 C268.51 149.38, 301.97 108.72, 380.05 18.99 M237.42 189.16 C285.39 135.51, 334.02 78.74, 380.44 24.64 M237.42 189.16 C277.25 141.41, 318.12 96.85, 380.44 24.64 M243.06 188.77 C289.43 137.43, 334.12 85.46, 381.49 29.52 M243.06 188.77 C290.86 132.43, 340.59 75.61, 381.49 29.52 M248.05 189.13 C288.46 140.32, 330.17 93.52, 381.89 35.17 M248.05 189.13 C277.61 153.52, 309.1 119.39, 381.89 35.17 M253.69 188.73 C284.93 151.96, 318.64 118.14, 381.63 41.56 M253.69 188.73 C285.35 153.87, 315.31 119.58, 381.63 41.56 M258.68 189.09 C289.17 155.24, 317.72 123.08, 382.02 47.21 M258.68 189.09 C298.43 145.5, 337.13 100.35, 382.02 47.21 M264.32 188.7 C296.33 151.14, 326.99 115.69, 381.76 53.61 M264.32 188.7 C292.72 153.59, 322.37 120.12, 381.76 53.61 M269.31 189.06 C300.23 153.91, 329.98 123.19, 381.5 60 M269.31 189.06 C306.29 144.74, 343.36 99.7, 381.5 60 M274.96 188.66 C319.72 141.51, 359.62 90.45, 381.89 65.65 M274.96 188.66 C298.53 159.21, 323.05 131.68, 381.89 65.65 M279.94 189.02 C303.05 163.02, 321.17 140.46, 381.63 72.04 M279.94 189.02 C319.91 144.3, 359.65 98.85, 381.63 72.04 M285.59 188.63 C310.56 157.54, 338.91 125.21, 382.03 77.69 M285.59 188.63 C320.86 149.94, 353.89 109.16, 382.03 77.69 M290.57 188.99 C320.51 155.89, 349.7 122.68, 381.76 84.09 M290.57 188.99 C324.2 148.2, 360.61 108.58, 381.76 84.09 M296.22 188.6 C325.7 156.4, 351.09 122.93, 381.5 90.48 M296.22 188.6 C320.29 159.24, 346.1 129.71, 381.5 90.48 M301.2 188.96 C334.91 154.32, 366.5 116.47, 381.9 96.13 M301.2 188.96 C329.03 157.19, 355.48 126.84, 381.9 96.13 M306.85 188.56 C323.14 164.88, 341.93 144.8, 381.64 102.52 M306.85 188.56 C325.86 167.48, 345.42 144.64, 381.64 102.52 M311.83 188.92 C339.72 160.78, 365.52 129.61, 382.03 108.17 M311.83 188.92 C332.47 164.36, 354.06 139.51, 382.03 108.17 M317.48 188.53 C336.47 169.22, 352.83 148.03, 381.77 114.56 M317.48 188.53 C338.73 163.14, 359.46 138.46, 381.77 114.56 M322.46 188.89 C341.97 165.82, 364.77 142.27, 381.51 120.96 M322.46 188.89 C335.57 173.5, 348.67 158.68, 381.51 120.96 M328.11 188.49 C344.67 172.63, 357.39 152.21, 381.9 126.61 M328.11 188.49 C349.16 166.84, 369.41 143.75, 381.9 126.61 M333.09 188.85 C344.39 175.99, 352.9 165.51, 381.64 133 M333.09 188.85 C346.39 172.95, 360.08 157.69, 381.64 133 M338.74 188.46 C353.94 172.28, 370.49 155.15, 382.04 138.65 M338.74 188.46 C351.46 173.33, 362.14 160.19, 382.04 138.65 M343.72 188.82 C358.08 172.8, 373.08 155.74, 381.77 145.04 M343.72 188.82 C355.96 173.28, 369.95 158.87, 381.77 145.04 M348.71 189.18 C356.01 182.17, 361.82 172.32, 381.51 151.44 M348.71 189.18 C359.81 176.28, 370.53 163.94, 381.51 151.44 M354.35 188.78 C363.04 181.4, 368.34 172.66, 381.91 157.09 M354.35 188.78 C361.85 177.87, 370.56 168.51, 381.91 157.09 M360.65 187.63 C368.67 179.49, 374 171.31, 380.99 164.24 M360.65 187.63 C366.9 179.69, 372.3 174.75, 380.99 164.24 M368.92 184.22 C373.87 180.85, 376.17 176.55, 378.1 173.65 M368.92 184.22 C372.44 180.48, 376.11 175.51, 378.1 173.65" stroke="#b2f2bb" stroke-width="0.5" fill="none"></path><path d="M32 0 C126.04 0.56, 218.54 0.25, 349.46 0 M32 0 C139.55 -2.42, 246.65 -2.23, 349.46 0 M349.46 0 C369.73 1.34, 381.68 12.24, 381.46 32 M349.46 0 C372.86 -1.83, 383.49 9.51, 381.46 32 M381.46 32 C379.6 62.1, 381.82 91.57, 381.46 156.5 M381.46 32 C381.03 59.82, 381.63 87.98, 381.46 156.5 M381.46 156.5 C379.95 177.14, 371.13 189.46, 349.46 188.5 M381.46 156.5 C379.86 178.07, 369.48 186.9, 349.46 188.5 M349.46 188.5 C237.91 188.1, 128.53 187.35, 32 188.5 M349.46 188.5 C240.78 186.88, 133.76 185.81, 32 188.5 M32 188.5 C8.75 187.9, -1.54 177.18, 0 156.5 M32 188.5 C9.48 190.32, -1.69 176.86, 0 156.5 M0 156.5 C1.58 130.37, 2.4 102.44, 0 32 M0 156.5 C-0.25 115.76, 0.27 73.95, 0 32 M0 32 C-0.87 9.53, 10.44 -0.71, 32 0 M0 32 C-1 10.8, 12.32 1.04, 32 0" stroke="#000000" stroke-width="1" fill="none"></path></g><g transform="translate(136.5322398938631 668.1390380859375) rotate(0 64.19999694824219 17.5)"><text x="64.19999694824219" y="24.668" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#000000" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">3. rootfs</text></g><g stroke-linecap="round"><g transform="translate(200.9041262392209 285.8890380859375) rotate(0 0 29.25)"><path d="M-1.13 0.93 C-1.19 10.57, 0.54 49.13, 0.79 58.86 M0.48 0.37 C0.23 10.15, 0.38 47.42, 0.25 56.93" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(200.9041262392209 285.8890380859375) rotate(0 0 29.25)"><path d="M-8.21 33.41 C-3.12 44.07, -0.73 52.57, 0.25 56.93 M-8.21 33.41 C-4 42.34, -2.57 51.29, 0.25 56.93" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(200.9041262392209 285.8890380859375) rotate(0 0 29.25)"><path d="M8.89 33.47 C7.24 43.94, 2.9 52.42, 0.25 56.93 M8.89 33.47 C6.78 42.47, 1.88 51.39, 0.25 56.93" stroke="#1971c2" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round"><g transform="translate(199.23986995791006 534.8890380859375) rotate(0 0.5732982497410717 27.49999999999997)"><path d="M0.72 -1.2 C0.78 7.81, 0.54 45.04, 0.48 54.49 M-0.36 0.79 C0.08 9.92, 2.31 46.99, 2.84 55.76" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(199.23986995791006 534.8890380859375) rotate(0 0.5732982497410717 27.49999999999997)"><path d="M-7.1 32.82 C-5.91 38.81, -1.66 45.75, 2.84 55.76 M-7.1 32.82 C-3.15 40.92, -0.25 48.96, 2.84 55.76" stroke="#1971c2" stroke-width="1" fill="none"></path></g><g transform="translate(199.23986995791006 534.8890380859375) rotate(0 0.5732982497410717 27.49999999999997)"><path d="M9.97 31.79 C5.84 38.21, 4.75 45.47, 2.84 55.76 M9.97 31.79 C8.15 40.22, 5.27 48.6, 2.84 55.76" stroke="#1971c2" stroke-width="1" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(439.5 345.3890380859375) rotate(0 36.232236842105294 94.25000000000001)"><path d="M2.33 7.33 C2.33 7.33, 2.33 7.33, 2.33 7.33 M2.33 7.33 C2.33 7.33, 2.33 7.33, 2.33 7.33 M1.41 14.48 C4.12 10.3, 5.83 7.24, 9.94 4.67 M1.41 14.48 C4.43 10.99, 7.44 7.65, 9.94 4.67 M1.15 20.88 C6.69 13.97, 11.85 9.73, 18.87 0.5 M1.15 20.88 C7.11 13.62, 15.34 5.28, 18.87 0.5 M1.55 26.52 C7.51 21.36, 12.75 15.26, 23.85 0.86 M1.55 26.52 C10.34 17.64, 18.2 7.82, 23.85 0.86 M1.28 32.92 C7.94 24.24, 14.72 16.37, 28.84 1.22 M1.28 32.92 C9.39 24.8, 17.21 14.43, 28.84 1.22 M1.02 39.32 C13.31 26.96, 23.19 13.97, 34.48 0.82 M1.02 39.32 C9.33 31.22, 15.96 21.92, 34.48 0.82 M1.42 44.96 C15.15 29.55, 26.79 11.86, 39.47 1.18 M1.42 44.96 C13.63 31.75, 24.55 20.08, 39.47 1.18 M1.16 51.36 C18.71 33.63, 33.13 12.36, 44.46 1.55 M1.16 51.36 C14.39 36.2, 27.78 19.5, 44.46 1.55 M1.55 57 C20.91 37.33, 38.89 16.45, 50.1 1.15 M1.55 57 C19.13 38.39, 35.08 18.88, 50.1 1.15 M1.29 63.4 C20.38 40.95, 42.24 13.3, 55.09 1.51 M1.29 63.4 C16.24 45.03, 32.64 25.49, 55.09 1.51 M1.03 69.79 C19.57 49.22, 40.36 26.4, 60.07 1.87 M1.03 69.79 C14.91 54.43, 28.04 37.07, 60.07 1.87 M1.42 75.44 C24.27 51.42, 44.7 24.98, 64.4 2.99 M1.42 75.44 C23.19 50.26, 46.9 24.5, 64.4 2.99 M1.16 81.84 C25.54 49.99, 54 22.71, 67.42 5.61 M1.16 81.84 C22.26 58.72, 42.96 33.6, 67.42 5.61 M1.56 87.48 C22.23 61.91, 41.91 40.34, 71.1 7.48 M1.56 87.48 C17.76 67.92, 34.34 48.63, 71.1 7.48 M1.29 93.88 C17.35 73.28, 39.29 50.71, 72.15 12.37 M1.29 93.88 C15.29 76.99, 31.04 59.72, 72.15 12.37 M1.03 100.27 C29.63 66.35, 59.7 34.92, 74.51 15.75 M1.03 100.27 C20.08 77.56, 38.59 56.18, 74.51 15.75 M1.43 105.92 C24.88 79.68, 45.94 53.15, 74.25 22.14 M1.43 105.92 C22.56 81.78, 43.84 56.09, 74.25 22.14 M1.17 112.31 C27.2 80.06, 55.57 47.69, 74.64 27.79 M1.17 112.31 C25 85.76, 47.3 60.98, 74.64 27.79 M0.9 118.71 C20.64 96.83, 37.63 79.08, 74.38 34.19 M0.9 118.71 C18.24 98.37, 36.17 78.16, 74.38 34.19 M1.3 124.36 C26.91 98.24, 49 71.21, 74.12 40.58 M1.3 124.36 C17 106.02, 31.86 88.59, 74.12 40.58 M1.04 130.75 C20.32 108.12, 40.79 84.83, 74.52 46.23 M1.04 130.75 C19.2 110.21, 36.25 88.84, 74.52 46.23 M1.43 136.4 C23.2 109.9, 45.14 84.56, 74.26 52.62 M1.43 136.4 C17.31 118.47, 30.87 100.32, 74.26 52.62 M1.17 142.79 C25.68 116.82, 49.51 87.65, 74.65 58.27 M1.17 142.79 C29.35 110.3, 58.02 77.28, 74.65 58.27 M0.91 149.19 C23.61 120.29, 50.29 92.1, 74.39 64.66 M0.91 149.19 C18.22 129.27, 37.1 109.48, 74.39 64.66 M1.3 154.84 C17.53 135.6, 33.33 119.36, 74.13 71.06 M1.3 154.84 C24.77 128.95, 47.73 100.76, 74.13 71.06 M1.04 161.23 C27 126.74, 57.47 94.8, 74.52 76.71 M1.04 161.23 C21.24 138.79, 39.9 116.25, 74.52 76.71 M1.44 166.88 C26.5 140.28, 48.22 112.1, 74.26 83.1 M1.44 166.88 C26.02 139.7, 49.97 110.47, 74.26 83.1 M1.18 173.27 C29.75 139.13, 58.29 106, 74.65 88.75 M1.18 173.27 C27.08 141.65, 55.06 110.44, 74.65 88.75 M2.88 177.41 C21.98 155.74, 41.06 135.13, 74.39 95.14 M2.88 177.41 C24.26 150.36, 47.41 125.34, 74.39 95.14 M5.25 180.79 C23.4 161.58, 41.9 139, 74.13 101.54 M5.25 180.79 C21.71 162.73, 36.56 143.58, 74.13 101.54 M6.3 185.67 C19.64 169.16, 37.39 149.42, 74.53 107.19 M6.3 185.67 C33.42 155.73, 59.37 124.53, 74.53 107.19 M9.97 187.54 C24.85 167.27, 43.33 151.8, 74.26 113.58 M9.97 187.54 C28.65 168.77, 44.77 148.15, 74.26 113.58 M12.99 190.17 C28.31 172.94, 47.86 150.86, 74.66 119.23 M12.99 190.17 C29.03 170.65, 45.3 153.2, 74.66 119.23 M18.63 189.77 C38.34 167.75, 57.12 143.41, 74.4 125.62 M18.63 189.77 C34.84 171.17, 51.25 154.19, 74.4 125.62 M23.62 190.13 C34.82 175.93, 45.27 165.93, 74.14 132.02 M23.62 190.13 C37.61 174.44, 50.66 157.25, 74.14 132.02 M28.61 190.49 C47.8 169.6, 65.89 149.7, 74.53 137.66 M28.61 190.49 C38.99 179.54, 47.88 167.59, 74.53 137.66 M34.25 190.1 C46.9 174.81, 61.9 162.11, 74.27 144.06 M34.25 190.1 C49.88 171.77, 65.76 153.82, 74.27 144.06 M39.24 190.46 C51.18 180.58, 57.84 165.66, 74.66 149.71 M39.24 190.46 C45.93 181.37, 53.31 173.94, 74.66 149.71 M44.22 190.82 C50.35 182.41, 59.49 176.53, 74.4 156.1 M44.22 190.82 C55.86 178.3, 66.04 165.58, 74.4 156.1 M49.87 190.43 C56.66 179.3, 67.66 171.51, 74.14 162.5 M49.87 190.43 C58.68 181.22, 66.43 171.17, 74.14 162.5 M54.85 190.79 C59.92 184.46, 63.31 180.33, 74.54 168.14 M54.85 190.79 C61.71 183, 68.77 174.52, 74.54 168.14 M60.5 190.39 C62.67 186.15, 67.47 184.99, 73.62 175.3 M60.5 190.39 C63.37 185.66, 67.96 183.59, 73.62 175.3" stroke="#ffc9c9" stroke-width="0.5" fill="none"></path><path d="M18.12 0 C33.45 -0.16, 43.4 1.28, 54.35 0 M18.12 0 C28.58 0.7, 37.44 -0.58, 54.35 0 M54.35 0 C68.13 -1.84, 73.62 6.08, 72.46 18.12 M54.35 0 C64.27 -1.71, 71.49 7.18, 72.46 18.12 M72.46 18.12 C72.4 71.27, 74.4 125.02, 72.46 170.38 M72.46 18.12 C73.51 65.5, 73.06 114.63, 72.46 170.38 M72.46 170.38 C71.42 183.8, 67.73 188.13, 54.35 188.5 M72.46 170.38 C72.04 181.02, 68.48 189.23, 54.35 188.5 M54.35 188.5 C42.64 189.44, 35.09 189.51, 18.12 188.5 M54.35 188.5 C40.68 188.2, 27.38 187.89, 18.12 188.5 M18.12 188.5 C4.82 187.14, -1.39 183.24, 0 170.38 M18.12 188.5 C7.24 189.75, 1.42 183.7, 0 170.38 M0 170.38 C0.28 138.63, -0.74 107.88, 0 18.12 M0 170.38 C2.13 134.55, 1.4 99.41, 0 18.12 M0 18.12 C-0.37 5.36, 4.19 1.22, 18.12 0 M0 18.12 C1.65 7.63, 5.81 -0.02, 18.12 0" stroke="#000000" stroke-width="1" fill="none"></path></g><g transform="translate(416.2655696668123 422.13903808593756) rotate(89.99999999999994 59.46666717529297 17.5)"><text x="59.46666717529297" y="24.668" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">sidecar 1</text></g><g stroke-linecap="round" transform="translate(521 345.3890380859375) rotate(0 36.232236842105294 94.25000000000001)"><path d="M2.33 7.33 C2.33 7.33, 2.33 7.33, 2.33 7.33 M2.33 7.33 C2.33 7.33, 2.33 7.33, 2.33 7.33 M1.41 14.48 C2.7 12.19, 7.22 9.52, 9.94 4.67 M1.41 14.48 C3.55 11.51, 7.19 8.7, 9.94 4.67 M1.15 20.88 C5.9 14.73, 11.87 9.57, 18.87 0.5 M1.15 20.88 C6.75 14.58, 12.13 7.91, 18.87 0.5 M1.55 26.52 C10.05 19.83, 14.26 11.35, 23.85 0.86 M1.55 26.52 C10.09 17.68, 16.76 7.88, 23.85 0.86 M1.28 32.92 C10.98 20.17, 24.33 8.78, 28.84 1.22 M1.28 32.92 C7.66 24.66, 14.46 17.24, 28.84 1.22 M1.02 39.32 C14.15 26.07, 23.69 13.89, 34.48 0.82 M1.02 39.32 C12.06 26.85, 21.17 16.42, 34.48 0.82 M1.42 44.96 C14.53 28.12, 29.85 10.19, 39.47 1.18 M1.42 44.96 C15.67 27.85, 30.53 10.53, 39.47 1.18 M1.16 51.36 C11.3 39.63, 23.11 26.31, 44.46 1.55 M1.16 51.36 C11.57 38.6, 24.83 25.22, 44.46 1.55 M1.55 57 C15.1 41.01, 28.35 24.86, 50.1 1.15 M1.55 57 C18.9 36.64, 35.89 17.94, 50.1 1.15 M1.29 63.4 C18.54 44.82, 35.11 23.46, 55.09 1.51 M1.29 63.4 C19.82 43.78, 35.73 24.53, 55.09 1.51 M1.03 69.79 C19.51 45.26, 39.66 22.27, 60.07 1.87 M1.03 69.79 C22.59 44.36, 45.51 18.94, 60.07 1.87 M1.42 75.44 C20.06 56.04, 38.74 32.19, 64.4 2.99 M1.42 75.44 C20.22 54.41, 37.16 33.07, 64.4 2.99 M1.16 81.84 C18.24 64.77, 33.76 47.22, 67.42 5.61 M1.16 81.84 C19.09 61.55, 36.99 41.78, 67.42 5.61 M1.56 87.48 C26.97 60.35, 52.1 28.78, 71.1 7.48 M1.56 87.48 C29.58 55.98, 55.13 24.24, 71.1 7.48 M1.29 93.88 C17.1 73.93, 31.96 57.99, 72.15 12.37 M1.29 93.88 C21.82 69.33, 41.39 46.43, 72.15 12.37 M1.03 100.27 C19.4 77.96, 37.92 59.71, 74.51 15.75 M1.03 100.27 C28.79 68.02, 55.82 35.98, 74.51 15.75 M1.43 105.92 C16.76 86.96, 33.09 69.13, 74.25 22.14 M1.43 105.92 C22.98 81.35, 45.29 56.83, 74.25 22.14 M1.17 112.31 C17.63 91.1, 32.26 73.98, 74.64 27.79 M1.17 112.31 C30.17 79.46, 58.25 46.18, 74.64 27.79 M0.9 118.71 C24.72 94.16, 44.53 71.93, 74.38 34.19 M0.9 118.71 C27.65 88.65, 56.44 55.35, 74.38 34.19 M1.3 124.36 C24.53 95.38, 50.04 68.52, 74.12 40.58 M1.3 124.36 C24.33 98.04, 46.17 71.79, 74.12 40.58 M1.04 130.75 C29.24 96.79, 59.01 65.61, 74.52 46.23 M1.04 130.75 C30.78 97.58, 57.63 65.09, 74.52 46.23 M1.43 136.4 C28.69 102.88, 60.2 70.63, 74.26 52.62 M1.43 136.4 C17.89 117, 34.68 97.71, 74.26 52.62 M1.17 142.79 C15.93 125.23, 32.02 107.74, 74.65 58.27 M1.17 142.79 C21.18 119.43, 40.71 96.2, 74.65 58.27 M0.91 149.19 C28.41 119.73, 52.24 89.63, 74.39 64.66 M0.91 149.19 C25.6 121.7, 49.27 93.51, 74.39 64.66 M1.3 154.84 C21.26 131.1, 43.81 105.75, 74.13 71.06 M1.3 154.84 C24.61 129.69, 47.34 102.18, 74.13 71.06 M1.04 161.23 C26.6 132.68, 54.11 99.41, 74.52 76.71 M1.04 161.23 C18.87 141.14, 35.48 123.54, 74.52 76.71 M1.44 166.88 C28.11 136.02, 58.96 104.4, 74.26 83.1 M1.44 166.88 C21.5 143.02, 41.62 119.8, 74.26 83.1 M1.18 173.27 C19.97 149.68, 42.14 127.52, 74.65 88.75 M1.18 173.27 C20.74 151.97, 39.8 130.49, 74.65 88.75 M2.88 177.41 C20.48 157, 37.99 140.39, 74.39 95.14 M2.88 177.41 C20.94 156.64, 40.49 134.28, 74.39 95.14 M5.25 180.79 C29.92 152.09, 56.58 123.46, 74.13 101.54 M5.25 180.79 C29.54 153.57, 52.48 127.83, 74.13 101.54 M6.3 185.67 C18.52 170.64, 33.83 151.56, 74.53 107.19 M6.3 185.67 C26.43 163.35, 46.21 141.02, 74.53 107.19 M9.97 187.54 C23.73 171.96, 40.62 157.28, 74.26 113.58 M9.97 187.54 C31.33 161.11, 54.73 136.1, 74.26 113.58 M12.99 190.17 C29.94 170.77, 47.91 147.96, 74.66 119.23 M12.99 190.17 C29.18 170.97, 44.74 152.8, 74.66 119.23 M18.63 189.77 C33.73 174.44, 46.95 159.6, 74.4 125.62 M18.63 189.77 C38.06 167.86, 55.29 146.33, 74.4 125.62 M23.62 190.13 C35.74 172.59, 51.38 158.76, 74.14 132.02 M23.62 190.13 C35.44 176.42, 46.55 163.24, 74.14 132.02 M28.61 190.49 C42.38 172.94, 59.99 156.77, 74.53 137.66 M28.61 190.49 C41.91 175.11, 54.16 159.04, 74.53 137.66 M34.25 190.1 C49.54 173.74, 60.85 158.27, 74.27 144.06 M34.25 190.1 C47.87 172.68, 63.08 156.36, 74.27 144.06 M39.24 190.46 C51.01 176.74, 64.64 160.97, 74.66 149.71 M39.24 190.46 C46.8 181.85, 54.27 173.16, 74.66 149.71 M44.22 190.82 C53.67 178.1, 61.03 167.19, 74.4 156.1 M44.22 190.82 C53.43 180.45, 61.83 171.74, 74.4 156.1 M49.87 190.43 C57.79 183.87, 62.83 176.82, 74.14 162.5 M49.87 190.43 C55.92 184.22, 61.14 179.03, 74.14 162.5 M54.85 190.79 C60.55 188.02, 63.19 182.16, 74.54 168.14 M54.85 190.79 C58.75 186.51, 63.87 181.38, 74.54 168.14 M60.5 190.39 C63.61 185.76, 70.23 176.84, 73.62 175.3 M60.5 190.39 C63.48 186.32, 66.59 184.77, 73.62 175.3" stroke="#ffc9c9" stroke-width="0.5" fill="none"></path><path d="M18.12 0 C25.26 0.28, 35.2 -1.26, 54.35 0 M18.12 0 C29.49 0.79, 39.65 0.27, 54.35 0 M54.35 0 C66.56 -1.29, 70.65 7.04, 72.46 18.12 M54.35 0 C66.08 1.74, 73.72 5.77, 72.46 18.12 M72.46 18.12 C72.79 71.83, 72.56 123.87, 72.46 170.38 M72.46 18.12 C73.08 49.65, 72.42 82.11, 72.46 170.38 M72.46 170.38 C70.64 182.65, 66.03 188.1, 54.35 188.5 M72.46 170.38 C71.98 181.12, 66.23 188.45, 54.35 188.5 M54.35 188.5 C45.1 186.99, 37.71 189.66, 18.12 188.5 M54.35 188.5 C44.79 188.32, 36.01 188.3, 18.12 188.5 M18.12 188.5 C4.49 187.69, 0.71 180.74, 0 170.38 M18.12 188.5 C6.94 188.4, -0.39 184.43, 0 170.38 M0 170.38 C-0.76 137.76, 2.28 108.19, 0 18.12 M0 170.38 C-0.03 109.39, 0.57 49.02, 0 18.12 M0 18.12 C-0.97 5.4, 4.25 1.16, 18.12 0 M0 18.12 C2.29 4.86, 4.35 1.27, 18.12 0" stroke="#000000" stroke-width="1" fill="none"></path></g><g transform="translate(491.59890554327717 422.13903808593756) rotate(89.99999999999994 65.63333129882812 17.5)"><text x="65.63333129882812" y="24.668" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">sidecar 2</text></g><g stroke-linecap="round" transform="translate(603.5 345.3890380859375) rotate(0 36.232236842105294 94.25000000000001)"><path d="M2.33 7.33 C2.33 7.33, 2.33 7.33, 2.33 7.33 M2.33 7.33 C2.33 7.33, 2.33 7.33, 2.33 7.33 M0.76 15.23 C4.35 10.87, 8.17 3.79, 12.57 1.65 M0.76 15.23 C4.37 10.67, 8.9 6.19, 12.57 1.65 M0.5 21.63 C7.35 13.4, 11.89 7.93, 18.87 0.5 M0.5 21.63 C5.16 16.15, 9.11 11.45, 18.87 0.5 M0.23 28.03 C8.82 17.06, 17.07 11.03, 23.85 0.86 M0.23 28.03 C8.54 19.07, 16.37 9.23, 23.85 0.86 M0.63 33.67 C8.85 25.89, 14.28 17.3, 28.84 1.22 M0.63 33.67 C9.54 23.15, 17.94 13.02, 28.84 1.22 M0.37 40.07 C12.3 24.65, 26.82 12.57, 34.48 0.82 M0.37 40.07 C10.76 27.28, 21.31 16.02, 34.48 0.82 M0.76 45.71 C11.05 32.93, 24.73 20.63, 39.47 1.18 M0.76 45.71 C14.09 29.55, 25.91 14.95, 39.47 1.18 M0.5 52.11 C20.03 31.2, 36.64 13.38, 44.46 1.55 M0.5 52.11 C12.81 38.27, 26.7 23.54, 44.46 1.55 M0.24 58.51 C10.03 48.7, 22.11 36.58, 50.1 1.15 M0.24 58.51 C14.47 41.05, 30.21 24.85, 50.1 1.15 M0.63 64.15 C15.23 48.41, 28.23 33.9, 55.09 1.51 M0.63 64.15 C13.94 47.33, 28.43 31.46, 55.09 1.51 M0.37 70.55 C13.37 54.06, 24.62 39.57, 60.07 1.87 M0.37 70.55 C13.62 55.63, 28.79 38.68, 60.07 1.87 M0.77 76.19 C16.94 61.52, 29.81 45.92, 64.4 2.99 M0.77 76.19 C23.62 48.65, 46.02 23.9, 64.4 2.99 M0.51 82.59 C20.27 59.81, 36.27 37.64, 67.42 5.61 M0.51 82.59 C27.2 52.36, 52.71 21.03, 67.42 5.61 M0.24 88.99 C16.91 71.99, 33.1 53.05, 70.44 8.23 M0.24 88.99 C24.95 61.81, 47.79 34.7, 70.44 8.23 M0.64 94.63 C20.39 72.54, 37.09 53.92, 72.15 12.37 M0.64 94.63 C21.32 73.1, 39.95 49.98, 72.15 12.37 M0.38 101.03 C21.82 73.21, 44.84 45.98, 73.2 17.26 M0.38 101.03 C16.78 81.14, 35.58 62.07, 73.2 17.26 M0.77 106.67 C22.76 81.67, 46.71 55.52, 72.94 23.65 M0.77 106.67 C22.3 82.07, 42.26 59, 72.94 23.65 M0.51 113.07 C25.16 85.89, 47.46 59.95, 72.68 30.05 M0.51 113.07 C24.66 86.07, 49.05 57.42, 72.68 30.05 M0.25 119.47 C26.23 88.96, 50.65 60.1, 73.07 35.69 M0.25 119.47 C29.07 88.18, 56.42 54.9, 73.07 35.69 M0.64 125.11 C27.4 92.33, 57.01 61.62, 72.81 42.09 M0.64 125.11 C16.52 105.71, 31.7 87.76, 72.81 42.09 M0.38 131.51 C24.56 102.4, 51.23 73.21, 73.2 47.74 M0.38 131.51 C16.57 112.91, 34.48 92.74, 73.2 47.74 M0.78 137.15 C20.92 110.42, 43.09 88.02, 72.94 54.13 M0.78 137.15 C19.92 114.46, 40.62 90.76, 72.94 54.13 M0.52 143.55 C15.88 124.31, 31.62 102.58, 72.68 60.53 M0.52 143.55 C28.64 112.07, 54.94 80.83, 72.68 60.53 M0.25 149.95 C23.1 123.3, 44.58 99.52, 73.08 66.17 M0.25 149.95 C17.27 129.38, 37.08 106.84, 73.08 66.17 M0.65 155.59 C28.95 121.31, 58.38 90.5, 72.81 72.57 M0.65 155.59 C22.51 128.45, 45.35 102.06, 72.81 72.57 M0.39 161.99 C23.23 135.74, 46.59 108.12, 73.21 78.21 M0.39 161.99 C17.19 142.69, 34.45 121.25, 73.21 78.21 M0.78 167.63 C28.87 136.72, 56.12 103.38, 72.95 84.61 M0.78 167.63 C18.07 147.3, 35.98 128.61, 72.95 84.61 M0.52 174.03 C22.43 148.5, 45.47 125.15, 72.69 91.01 M0.52 174.03 C22.18 148.87, 44.61 123.79, 72.69 91.01 M2.23 178.16 C17.2 160.94, 34.12 141.52, 73.08 96.65 M2.23 178.16 C21.67 156.31, 41.29 133.74, 73.08 96.65 M3.93 182.3 C22.95 160.39, 41.94 136.69, 72.82 103.05 M3.93 182.3 C24.09 160.35, 43.27 139.78, 72.82 103.05 M6.3 185.67 C27.66 162.46, 46.56 138.78, 73.21 108.69 M6.3 185.67 C21.17 170.16, 33.78 152.81, 73.21 108.69 M9.97 187.54 C33.56 160.03, 61.84 130.88, 72.95 115.09 M9.97 187.54 C31.69 162.93, 54.21 137.42, 72.95 115.09 M14.96 187.9 C27.58 172.68, 40.1 160.8, 72.69 121.49 M14.96 187.9 C27.37 172.29, 40.7 158.29, 72.69 121.49 M19.94 188.26 C35.94 166.22, 57.36 148.51, 73.09 127.13 M19.94 188.26 C33.85 169.54, 49.87 153.32, 73.09 127.13 M25.59 187.87 C42.33 166.23, 63.95 144.53, 72.82 133.53 M25.59 187.87 C42.32 169.03, 58.51 149.2, 72.82 133.53 M30.58 188.23 C44.3 170.95, 62.11 153.51, 73.22 139.17 M30.58 188.23 C38.47 178.55, 47.38 168.43, 73.22 139.17 M35.56 188.59 C44.7 175.86, 58.49 165.01, 72.96 145.57 M35.56 188.59 C49.14 172.35, 62.59 157.95, 72.96 145.57 M41.21 188.2 C50.4 175.33, 62.92 162.75, 72.7 151.97 M41.21 188.2 C47.94 180.7, 54.59 172.46, 72.7 151.97 M46.19 188.56 C54.61 178.4, 61.26 168.22, 73.09 157.61 M46.19 188.56 C55.88 178.34, 64.38 167.69, 73.09 157.61 M51.18 188.92 C60.85 179.18, 66.13 169.16, 72.83 164.01 M51.18 188.92 C59.08 180.53, 66 173.65, 72.83 164.01 M56.82 188.52 C60.76 181.54, 68.05 173.44, 73.22 169.65 M56.82 188.52 C61.23 182.85, 66.29 179.35, 73.22 169.65 M63.78 186.62 C66.52 183.26, 68.14 182.15, 70.99 178.32 M63.78 186.62 C66.92 183.71, 69.51 180.88, 70.99 178.32" stroke="#ffc9c9" stroke-width="0.5" fill="none"></path><path d="M18.12 0 C31.52 2.23, 46.97 0.15, 54.35 0 M18.12 0 C26.69 0.84, 34.13 -1.09, 54.35 0 M54.35 0 C65.7 0.07, 73.04 6.64, 72.46 18.12 M54.35 0 C64.18 1.27, 73.62 7.86, 72.46 18.12 M72.46 18.12 C70.99 65.94, 74.02 114.07, 72.46 170.38 M72.46 18.12 C71.53 54.89, 72.34 92.13, 72.46 170.38 M72.46 170.38 C73.14 183.09, 65.22 188, 54.35 188.5 M72.46 170.38 C73.37 180.67, 67.64 188.77, 54.35 188.5 M54.35 188.5 C42.64 187.77, 29.04 189.89, 18.12 188.5 M54.35 188.5 C42.59 188.27, 29.73 189.66, 18.12 188.5 M18.12 188.5 C7.67 186.94, -0.78 181.84, 0 170.38 M18.12 188.5 C8.16 188.89, -1.27 182.38, 0 170.38 M0 170.38 C-0.07 132.84, 1.5 95.77, 0 18.12 M0 170.38 C-1.38 112.02, -0.95 52.02, 0 18.12 M0 18.12 C-1.72 7.24, 4.44 -1.35, 18.12 0 M0 18.12 C1.69 7.86, 5.81 -0.54, 18.12 0" stroke="#000000" stroke-width="1" fill="none"></path></g><g transform="translate(574.5322398938631 422.13903808593756) rotate(89.99999999999994 65.19999694824219 17.5)"><text x="65.19999694824219" y="24.668" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">sidecar 3</text></g><g transform="translate(407 423.13903808593756) rotate(0 8.75 17.5)"><text x="8.75" y="24.668" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">+</text></g><g transform="translate(694.7666664123535 422.13903808593756) rotate(0 9.483333587646484 17.5)"><text x="9.483333587646484" y="24.668" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">…</text></g><g transform="translate(101.11556814093342 10) rotate(0 99.61666870117188 17.5)"><text x="99.61666870117188" y="24.668" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#868e96" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="alphabetic">UEFI Firmware</text></g><g stroke-linecap="round"><g transform="translate(200.75 49.75732421875) rotate(0 0.25 24)"><path d="M-0.32 0.39 C-0.12 8.26, 0.82 39.77, 0.98 47.71 M0.51 0.12 C0.71 8.29, 0.82 40.17, 0.8 48.25" stroke="#868e96" stroke-width="1" fill="none"></path></g><g transform="translate(200.75 49.75732421875) rotate(0 0.25 24)"><path d="M-7.44 25.71 C-4.5 32.41, -3.63 37.61, 0.8 48.25 M-7.44 25.71 C-5.18 32.85, -2.62 39.92, 0.8 48.25" stroke="#868e96" stroke-width="1" fill="none"></path></g><g transform="translate(200.75 49.75732421875) rotate(0 0.25 24)"><path d="M8.98 25.69 C7.7 32.35, 4.34 37.55, 0.8 48.25 M8.98 25.69 C6.23 32.89, 3.78 39.97, 0.8 48.25" stroke="#868e96" stroke-width="1" fill="none"></path></g></g><mask></mask></svg>
\ No newline at end of file