1
0
mirror of https://github.com/systemd/systemd synced 2026-03-13 08:34:47 +01:00

Compare commits

..

133 Commits

Author SHA1 Message Date
Luca Boccassi
11ce1e903f meson: bump version to 258.4 2026-02-06 21:21:09 +00:00
Luca Boccassi
903016b327 hwdb: update to main@{2026-02-06}
git restore -s origin/main hwdb.d/ test/hwdb.d

(cherry picked from commit a54429d3111f7d28193244f99e5b614df4a67fd2)
2026-02-06 19:33:55 +00:00
Daan De Meyer
5d348ebfaf mkosi: update mkosi ref to 14d2d37a1923c03062f55454b2b61d0c64db6238
* 14d2d37a19 sandbox: Make sure we're dumpable before writing uidmap files
* 215a9497cc fedora: Use N-1 key as well when querying rawhide GPG key
* 842a37ed6c Add MakeScriptsExecutable= setting to optionally try to make scripts executable before bailing out
* 814f2004bb build(deps): bump github/codeql-action from 4.31.9 to 4.32.0
* d8f4f628bf build(deps): bump actions/checkout from 6.0.1 to 6.0.2
* 3e55361142 docs: remove superfluous definition colon
* 5901524c48 mkosi-tools: add libarchive-tools package.
* 968392f1b9 docs: Add information about gui mkosi-tools profile
* 0e2960c245 Add missing call to run_locale_gen()
* 41cd2067bc rpm: Set pkgverify_level to digest
* 86fe0f448a dnf: Give advanced users some control over plugins
* 50a1feee52 run: Improve sandbox command logging
* b1dffe1c3c Fix environment variable name for systemd-repart
* 07726068d9 Allow specifying "default" value for Initrds=
* 704f163ec0 Allow setting PORTABLE_PREFIXES= via Environment=
* e6588afb45 opensuse: More GPG key handling fixes
* c367f993dd opensuse: Fetch remote keys as well if RepositoryKeyFetch= is enabled
* 31852c9314 ci: Use mkosi box for unit test CI as well
* e4229f5bf5 Make sure we pass the right context to finalize_default_initrd()
* 9b431b783a tools: don't pull in virtiofsd in bookworm tools trees
* ae2d88d463 build(deps): bump github/codeql-action from 4.31.6 to 4.31.9
* 933401a8b6 build(deps): bump actions/checkout from 6.0.0 to 6.0.1
* 6bfeb4ac86 opensuse: Import GPG keys for all repositories
* 9829b9136f Add support for locale-gen
* 63ae86ec04 nixos: Use repository key fetching by default on nixos
* f01ca9904b docs: Reword dependencies vs tools tree requirement a bit
* ab47ba25ef docs: Minor correction on enabling unprivileged namespaces
* 7bd46a417e docs: Update unprivileged user namespace docs

(cherry picked from commit 42c0a25a21ee586b9aa7fdcb442167f67c4025fb)
(cherry picked from commit 2b292caf1b928a26af46516db304fd1b2f6512e3)
2026-02-06 19:33:55 +00:00
dependabot[bot]
d9e8d2c2fa build(deps): bump super-linter/super-linter in the actions group
Bumps the actions group with 1 update: [super-linter/super-linter](https://github.com/super-linter/super-linter).

Updates `super-linter/super-linter` from 8.3.2 to 8.4.0
- [Release notes](https://github.com/super-linter/super-linter/releases)
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md)
- [Commits](d5b0a2ab11...12562e48d7)

---
updated-dependencies:
- dependency-name: super-linter/super-linter
  dependency-version: 8.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 8e217c469092bae09d538f6fbc34062be9bbb182)
(cherry picked from commit 90ab13a897f82005e2e7ecd6e2b8bcda1404b56a)
2026-02-06 19:33:55 +00:00
dependabot[bot]
12bb4e95a5 build(deps): bump the actions group across 1 directory with 9 updates
Bumps the actions group with 9 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4.2.2` | `6.0.2` |
| [actions/setup-python](https://github.com/actions/setup-python) | `5.6.0` | `6.2.0` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `4` | `6` |
| [github/codeql-action](https://github.com/github/codeql-action) | `3.29.7` | `4.32.0` |
| [redhat-plumbers-in-action/differential-shellcheck](https://github.com/redhat-plumbers-in-action/differential-shellcheck) | `5.5.3` | `5.5.6` |
| [redhat-plumbers-in-action/gather-pull-request-metadata](https://github.com/redhat-plumbers-in-action/gather-pull-request-metadata) | `1.8.1` | `1.9.0` |
| [redhat-plumbers-in-action/advanced-issue-labeler](https://github.com/redhat-plumbers-in-action/advanced-issue-labeler) | `3.2.3` | `3.2.4` |
| [actions/github-script](https://github.com/actions/github-script) | `7.0.1` | `8.0.0` |
| [super-linter/super-linter](https://github.com/super-linter/super-linter) | `8.3.0` | `8.3.2` |

Updates `actions/checkout` from 4.2.2 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](11bd71901b...de0fac2e45)

Updates `actions/setup-python` from 5.6.0 to 6.2.0
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](a26af69be9...a309ff8b42)

Updates `actions/upload-artifact` from 4 to 6
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6)

Updates `github/codeql-action` from 3.29.7 to 4.32.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](51f77329af...b20883b0cd)

Updates `redhat-plumbers-in-action/differential-shellcheck` from 5.5.3 to 5.5.6
- [Release notes](https://github.com/redhat-plumbers-in-action/differential-shellcheck/releases)
- [Changelog](https://github.com/redhat-plumbers-in-action/differential-shellcheck/blob/main/docs/CHANGELOG.md)
- [Commits](dd551ce780...d965e66ec0)

Updates `redhat-plumbers-in-action/gather-pull-request-metadata` from 1.8.1 to 1.9.0
- [Release notes](https://github.com/redhat-plumbers-in-action/gather-pull-request-metadata/releases)
- [Commits](b3dbc3f843...b86d1eaf70)

Updates `redhat-plumbers-in-action/advanced-issue-labeler` from 3.2.3 to 3.2.4
- [Release notes](https://github.com/redhat-plumbers-in-action/advanced-issue-labeler/releases)
- [Commits](e38e6809c5...b80ae64e3e)

Updates `actions/github-script` from 7.0.1 to 8.0.0
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](60a0d83039...ed597411d8)

Updates `super-linter/super-linter` from 8.3.0 to 8.3.2
- [Release notes](https://github.com/super-linter/super-linter/releases)
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md)
- [Commits](502f4fe48a...d5b0a2ab11)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/setup-python
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: github/codeql-action
  dependency-version: 4.32.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: redhat-plumbers-in-action/differential-shellcheck
  dependency-version: 5.5.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: redhat-plumbers-in-action/gather-pull-request-metadata
  dependency-version: 1.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: redhat-plumbers-in-action/advanced-issue-labeler
  dependency-version: 3.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/github-script
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: super-linter/super-linter
  dependency-version: 8.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 4afd7808feba81af8b9ba2b24d0dbb1c27d13e0d)
(cherry picked from commit a4012bd0deb301bd18e1f6d8fc01d51fa8f5f855)
2026-02-06 19:33:55 +00:00
dependabot[bot]
34f659f65a build(deps): bump meson from 1.10.0 to 1.10.1 in /.github/workflows
Bumps [meson](https://github.com/mesonbuild/meson) from 1.10.0 to 1.10.1.
- [Release notes](https://github.com/mesonbuild/meson/releases)
- [Commits](https://github.com/mesonbuild/meson/compare/1.10.0...1.10.1)

---
updated-dependencies:
- dependency-name: meson
  dependency-version: 1.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 5169b0722672ae60df3967d3a9b53bceb637c4d8)
(cherry picked from commit aea557a23e72cb9000ced82d6f4fe87c39888ca2)
2026-02-06 19:33:55 +00:00
dependabot[bot]
b004402f99 build(deps): bump meson from 1.9.1 to 1.10.0 in /.github/workflows
Bumps [meson](https://github.com/mesonbuild/meson) from 1.9.1 to 1.10.0.
- [Release notes](https://github.com/mesonbuild/meson/releases)
- [Commits](https://github.com/mesonbuild/meson/compare/1.9.1...1.10.0)

---
updated-dependencies:
- dependency-name: meson
  dependency-version: 1.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit ecfe1bddafbc61f1db38f44b1c86c4abdb39a371)
(cherry picked from commit 64cc2e73f35b80d5e4c2262868a155806e4f5340)
2026-02-06 19:33:55 +00:00
DaanDeMeyer
dd2c652e4b mkosi: update mkosi commit reference to e3642f81d3a7f8f9310c0c734b2ba9dd41e50e14
* e3642f81d3 kmod: Only use --modname if available
* ddea81d81e arch: Download archlinux-keyring with pacman
* 4a44e1831b Remove unneeded lambdas
* 9c3d23757c Configure pyright included files
* 5e037d514c qemu: Register with systemd-machined in user session
* c4c3d793d0 Create package cache dir before invoking pacman
* d53761c4dd distribution: do not default to release=VERSION_ID for openSUSE Tumbleweed
* c5bc9138fc Wrap build_microcode_initrd in complete_step
* 635159975d Fix typo in manpage
* 59f5f0741e mkosi-addon: drop Output=addon, addon.py already has a default
* be85b8ca0b sandbox: return raw error code from the kernel and friends on failure
* 56f25c1a41 config: replace deprecated sandbox verb with box in help message
* ae24c527d7 sandbox: fix wrong errno passed to OSError()
* e7b9612760 verity: do not copy signing cert in addons/portables/extensions
* f3a029b736 Bump version to 27~devel
* 84af20892b Release 26
* 3fcd3a0fde Adjust logging messages for kmod/fw resolution
* d44aae12b4 Revert "Do not try to install packages that are listed in RemovePackages="
* 1873ad0184 portable: Make sure mountpoints exist in the image
* 5dc693feb0 initrd: Inherit keymap, timezone, hostname and rootpw by default

(cherry picked from commit 664f211c9e844170792d2ca3db705ebbe34d996a)
(cherry picked from commit d94574dbe5ce3f678a7b1f81f531bcaed3a67d5a)
2026-02-06 19:33:55 +00:00
Luca Boccassi
0f4e028af6 mkosi: update mkosi commit reference to 9e31235211d975bae25622d6205a8396d104335e
* 9e31235211 pacman: Make sure hookdir exists
* 20009b7f48 make_image: log systemd-repart *.conf files at the --debug level
* b94b415db9 run: Increase string limit for strace when debugging sandbox
* 9f6d9405d6 Ring the terminal bell after the last image has been built
* b509b4246d Add glob in default initrd to exclude some exotic drivers
* 189394b8b9 Allow KernelModules= globs to also match relative to modules root dir
* 92bd086e4e zypper: add --force-resolution flag
* 3637749702 kmod: Only add fully resolved fw path if it exists
* d41ac276c9 Add details to KernelModulesInitrd= doc
* 1b6960ddb1 Fix SplitArtifacts=repart-definitions for addons
* 07464f38d6 Add log_step call in build_kernel_modules_initrd
* 18f5885362 Use proper constants for ansi colors
* 454c1602b6 mkosi-obs: add SplitArtifacts=repart-definitions and use it
* 9e57461af6 Copy repart definitions to staging directory
* 1acab18874 Add SplitArtifacts=repart-definitions
* c5c5c225e8 mkosi-obs: always include verity certificate
* ac5babb8e0 Revert "Use Path.relative_to instead of Path.parts"
* cbb1daeb76 action: Use environment variables instead of inputs
* 97c81eef72 portable: support split roothash

(cherry picked from commit 830275f343fcc6478564ff2259a08ca002c44d46)
2026-02-06 19:33:55 +00:00
dependabot[bot]
4ab3f7e9cf build(deps): bump softprops/action-gh-release from 2.4.1 to 2.5.0
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.4.1 to 2.5.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](6da8fa9354...a06a81a03e)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 0413c780aec1735eac2a8004e54a54c62ae92256)
2026-02-06 19:33:55 +00:00
dependabot[bot]
e609cf6092 build(deps): bump softprops/action-gh-release from 2.2.2 to 2.4.1
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.2.2 to 2.4.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](da05d55257...6da8fa9354)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 25a507d290823e04795e048eefa5dacbfa358bfc)
2026-02-06 19:33:55 +00:00
dependabot[bot]
c6167a3439 build(deps): bump redhat-plumbers-in-action/advanced-issue-labeler
Bumps [redhat-plumbers-in-action/advanced-issue-labeler](https://github.com/redhat-plumbers-in-action/advanced-issue-labeler) from 3.2.2 to 3.2.3.
- [Release notes](https://github.com/redhat-plumbers-in-action/advanced-issue-labeler/releases)
- [Commits](0db433d412...e38e6809c5)

---
updated-dependencies:
- dependency-name: redhat-plumbers-in-action/advanced-issue-labeler
  dependency-version: 3.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 61f7ec3fc5caaeaf39498777c62c4d754414d3be)
2026-02-06 19:33:55 +00:00
dependabot[bot]
aa845cd4e9 build(deps): bump ossf/scorecard-action from 2.4.2 to 2.4.3
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.2 to 2.4.3.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](05b42c6244...4eaacf0543)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-version: 2.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 0712a94006ccbcb7e68883908e034b783b45e70f)
2026-02-06 19:33:55 +00:00
dependabot[bot]
324e34b833 build(deps): bump meson from 1.8.3 to 1.9.1 in /.github/workflows
Bumps [meson](https://github.com/mesonbuild/meson) from 1.8.3 to 1.9.1.
- [Release notes](https://github.com/mesonbuild/meson/releases)
- [Commits](https://github.com/mesonbuild/meson/compare/1.8.3...1.9.1)

---
updated-dependencies:
- dependency-name: meson
  dependency-version: 1.9.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit db555fedf27378f734a6ee27108c3feb3624c053)
2026-02-06 19:33:55 +00:00
dependabot[bot]
63d2dd6487 build(deps): bump actions/labeler from 5.0.0 to 6.0.1
Bumps [actions/labeler](https://github.com/actions/labeler) from 5.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](8558fd7429...634933edcd)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 31ca68030b43bdf02f848adbcc0f703014bfd7ef)
(cherry picked from commit ca60915fc03dd7cf2ba77cfc4a64e3f040376e1b)
2026-02-06 19:33:55 +00:00
dependabot[bot]
4a24dfe497 build(deps): bump redhat-plumbers-in-action/gather-pull-request-metadata
Bumps [redhat-plumbers-in-action/gather-pull-request-metadata](https://github.com/redhat-plumbers-in-action/gather-pull-request-metadata) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/redhat-plumbers-in-action/gather-pull-request-metadata/releases)
- [Commits](5da2967931...b3dbc3f843)

---
updated-dependencies:
- dependency-name: redhat-plumbers-in-action/gather-pull-request-metadata
  dependency-version: 1.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 5323c6e47cb0360aaf295c2067d8965e375418be)
(cherry picked from commit 9fcfa419b576c88faee2c847eea7df938c35bda8)
2026-02-06 19:33:55 +00:00
Daan De Meyer
8ba1e10ff1 fetch-mkosi: Shorten commit message title
Currently github truncates the message so let's make it a little shorter
so it's not truncated.

(cherry picked from commit 7bb0bd400fe247ff317831844df2f48712cb07c3)
(cherry picked from commit ce886461d4c7a48cde4df9bd7759e59d84170a32)
2026-02-06 19:33:55 +00:00
James Le Cuirot
aee4efbcba efi-string: Unquote single-quoted strings as well as double
This code is used to read data copied from /etc/os-release. According to
the spec[1], values can be enclosed in single quotes or double quotes.
Not handling single quotes results in the quotes appearing in the
systemd-boot menu, e.g. 'Gentoo Linux'.

[1] https://www.freedesktop.org/software/systemd/man/latest/os-release.html

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
(cherry picked from commit a8f2f5d71786c2cf36e32f856cc329413a76cd93)
(cherry picked from commit 7177a0c4342368a62eda4094cc357ce15ae5c5bc)
2026-02-06 19:33:55 +00:00
Zbigniew Jędrzejewski-Szmek
07c1b0a86d pid1: shorten message about jobs skipped after failed condition checks
I was looking at some logs on a console, and because of the lengthy message,
the actually interesting part, i.e. what condition failed, didn't even fit
on the screen. Let's make the sentence legible but brief.

(cherry picked from commit 7a1e761070e5b223191b1cb7526730adf1a76681)
(cherry picked from commit 35e25d52653cd112482df605fc9f9bd8f0cbbe59)
2026-02-06 19:33:55 +00:00
Daan De Meyer
b6010cbeec core: Improve logging when we cannot create destination mountpoint
If we fail to create a parent directory, then the error from
make_mount_point_inode_from_path() will always be
"No such file or directory" which doesn't tell us anything. Add logging
for the mkdir_parents() call as well so we get a useful error.

(cherry picked from commit b231c4dcb4f54332b16a5bcf75df34b76c5e4b01)
(cherry picked from commit e82f1e05a4ecad446ba6474f9c0af24a119a329f)
2026-02-06 19:33:55 +00:00
Yu Watanabe
18fcbcd28f journal: check validity of PID field in syslog/kmsg earlier
Then, let's make syslog_parse_identifier() returns PID as pid_t, rather
than the string.

This also makes the function refuse ridiculously long identifier.

Fixes #40456.
Fixes oss-fuzz#477990732 (https://issues.oss-fuzz.com/issues/477990732).

(cherry picked from commit eb5b797d7c3a3a4a969fff0d057ea52316cb2b0c)
(cherry picked from commit 9fa74ea9004c044692e38eac152f568e38b9c0a2)
2026-02-06 19:33:55 +00:00
Yu Watanabe
89738c01af parse-util: rename trivial argument for parse_pid()
The function parse_pid() trivially returns pid, hence it is not
necessary to name the argument for storing result as 'ret_pid'.

(cherry picked from commit dd839b1463e7ead1d16048cf4e32b0efb1b0774f)
(cherry picked from commit adc0290a9d8874ce7fc7f924b4150c7b53d8c483)
2026-02-06 19:33:55 +00:00
Yu Watanabe
33e61c0af6 journal: check the length of timestamp field in syslog message
No functional change. Just refactoring and adding assertion.

(cherry picked from commit 7e81423fb880abaef9c9db1e2eecb7039ed7a546)
(cherry picked from commit 842a87e5eb4c71a551d4f62815c8324580f32dbf)
2026-02-06 19:33:55 +00:00
Yu Watanabe
eee8d788b4 ssh-generator: fix memleak
(cherry picked from commit 70510c2c908958a744a1ba39963162b720cd7115)
(cherry picked from commit e0476a216a592bcca062d49e97f492dfbff0d131)
2026-02-06 19:33:55 +00:00
Yu Watanabe
1b33cdba1c github/linter: disable ENABLE_GITHUB_PULL_REQUEST_SUMMARY_COMMENT for super-linter
Since super-linter 8.4.0, it is enabled by default and requires GITHUB_TOKEN.
We do not provide GITHUB_TOKEN for the action, then it fails with the following:
```
Failed to get [GITHUB_TOKEN]. Terminating because status reports were explicitly enabled,
but GITHUB_TOKEN was not provided.
```

Also, even if GITHUB_TOKEN is set, the feature provides annoying
messages in each PR. See https://github.com/super-linter/super-linter/issues/7458
So, let's disable the feature.

(cherry picked from commit 90c71778d2bcccbdc70e740a8d706dadd49b8e69)
(cherry picked from commit 45ed467d99555cac218edcadf4c18e312cd18936)
2026-02-06 19:33:55 +00:00
Yu Watanabe
8466ef8152 mkosi: workaround issue in mdadm-4.5 + linux-6.18
After debian updated the kernel from 6.17 to 6.18, mdadm command fails
with the following:
```
+ mdadm --create /dev/md/mdmirror ...
mdadm: size set to 64512K
mdadm: Can't open /sys/module/md_mod/parameters/legacy_async_del_gendisk
mdadm: init md module parameters fail
```

This seems a bug in mdadm, and fix is already merged in the upstream:
https://github.com/md-raid-utilities/mdadm/pull/228
Until the fix is backported, let's workaround the issue.

See also: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1125390

(cherry picked from commit 4c6afaab193fcdcb1f5adfe29cd9e0d27e67c55c)
(cherry picked from commit 8dc4dbca29d4c271b47478f616216d3812bbf9b7)
2026-02-06 19:33:55 +00:00
Zbigniew Jędrzejewski-Szmek
20c73f1c27 emacs: drop obsolete emacs property
New emacs warns on every open about the old attribute. Let's assume that
everybody who uses emacs uses the latest version, so we can drop the compat.

(cherry picked from commit 0c40aef7ef1419233826b6fb7ccac12f7623033b)
(cherry picked from commit 5c9ae10762cbfc771544c84abf464135807c2e66)
2026-02-06 19:33:55 +00:00
Yu Watanabe
e13e0658fa network: slightly improve log message
(cherry picked from commit 579640f50c4636a20824c643bf591c3b6e3ac8ea)
(cherry picked from commit 116042aeee7878e03cd00e9a8163b37e404cf089)
2026-02-06 19:33:55 +00:00
Luca Boccassi
f89f35a5d6 gh: mention that there are packages from main available in issue template
Makes it easier for bug reporters to try reproducing on latest main

(cherry picked from commit 90e6a9a1fb1aa206ef3529016406b9115d9c9e98)
(cherry picked from commit 1f2f99bb60e7c8e5bf7e4a3b04c11da3e4700022)
2026-02-06 19:33:55 +00:00
Nick Rosbrook
f9e498483f test: disable pipefail again in monitor_check_rr()
Partially reverts d6b379370485b9651f86b628ce980de719299eb4.

On Ubuntu 26.04 devel, TEST-75-RESOLVED often fails at this stage,
despite the matching query apparently being found:

 + monitor_check_rr '2025-12-18 16:02:54' 'follow10.so.close.signed.test IN CNAME follow11.yet.so.far.signed.test'
  + set +x
  Dec 18 16:02:54 ns1.unsigned.test resolvectl[552]: ← A: follow10.so.close.signed.test IN CNAME follow11.yet.so.far.signed.test
 + monitor_check_rr '2025-12-18 16:02:54' 'follow11.yet.so.far.signed.test IN CNAME follow12.getting.hot.signed.test'
  + set +x
  Dec 18 16:02:54 ns1.unsigned.test resolvectl[552]: ← A: follow11.yet.so.far.signed.test IN CNAME follow12.getting.hot.signed.test
 + monitor_check_rr '2025-12-18 16:02:54' 'follow12.getting.hot.signed.test IN CNAME follow13.almost.final.signed.test'
  + set +x
  Dec 18 16:02:54 ns1.unsigned.test resolvectl[552]: ← A: follow12.getting.hot.signed.test IN CNAME follow13.almost.final.signed.test
 + monitor_check_rr '2025-12-18 16:02:54' 'follow13.almost.final.signed.test IN CNAME follow14.final.signed.test'
  + set +x
  Dec 18 16:02:54 ns1.unsigned.test resolvectl[552]: ← A: follow13.almost.final.signed.test IN CNAME follow14.final.signed.test

Unsetting pipefail, as was done before d6b3793704, appears to fix the
problem.

(cherry picked from commit 7c9c34514a705ea0ce61432503a05162d0f658b0)
(cherry picked from commit ce35956b3a0bb88f65c9594cb224261804188439)
2026-02-06 19:33:55 +00:00
Nick Rosbrook
b9e7182931 test: cope with uutils coreutils flag parsing for date command
With GNU coreutils, one can pass an argument to the "set" flag like:

 date -s "-3 days"

With uutils coreutils, that gives an error:

 error: unexpected argument '-3' found
    tip: to pass '-3' as a value, use '-- -3'

That's a bug (https://github.com/uutils/coreutils/issues/9679), but both
implementations accept --set="-3 days" just fine, so use that instead.

(cherry picked from commit 9dcfd6e8fe080f959c363e6d896848faeb1b8156)
(cherry picked from commit a45dad1aa5320443a520a47c8c9dd89703b73d2f)
2026-02-06 19:33:55 +00:00
Nick Rosbrook
ab3e570ede test: use journalctl -n option instead of piping to head
On Ubuntu's test infrastructure for the development series, this test
often fails when piping the journal output to head. The cause is
unclear, but possibly related to Ubuntu's use of uutils coreutils.

Workaround this by just using journalctl's -n flag, which removes the
need for piping output to head.

(cherry picked from commit a8efad14f878a5ea0d566fd61bda8e0bb332ae7d)
(cherry picked from commit 2c661e5f0d54c59a796423c1b8c785ce94dcc026)
2026-02-06 19:33:55 +00:00
Philip Withnall
b14faca811 docs: Add a diagram for the internals of sysupdate
I had to sketch this out before I could get the internals of
systemd-sysupdate straight in my head, particularly around how an
`UpdateSet` points to one `Instance` from each of a set of `Resource`s,
and those `Instance`s are either all sources or all targets.

Hopefully this is useful to the next person to look at the code.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
(cherry picked from commit a05439097f7c188d27f58241b8621b2132a780e1)
(cherry picked from commit 877b9f9a0db1f2cd9456856c24944ed20aff8c6a)
2026-02-06 19:33:55 +00:00
David Tardon
2334462599 test: fix test with -Dnetworkd=false
User and group systemd-network are created from
sysusers.d/systemd-network.conf, which is only copied into the test
image when building with -Dnetworkd=true. This means that if
-Dnetworkd=false is used, the user and the group don't exist, which
causes the test to fail.

Use a locally created user and group to avoid that.

(cherry picked from commit a11278ce639c67d08c737b31f5b2d5dcf6a420b5)
(cherry picked from commit c68880a98b8213eff37e3ae434150760f8e5dd47)
2026-02-06 19:33:55 +00:00
Jeff Layton
25e966b31e pidfd/cgroup-util: use fully-sized filehandle buffers
The current code assumes that FILEID_KERNFS filehandles will never grow
in size. This is not a safe assumption and userland shouldn't be trying
to guess the size of the filehandle it'll get.

We have a macro for that: MAX_HANDLE_SZ.

(cherry picked from commit eb2e91b9815bcbc59997c1092d7b52fc18930bff)
(cherry picked from commit 0639b1c78da1b79f315f9664aab7c75fed444216)
2026-02-06 19:33:55 +00:00
Kai Lüke
986c2eedc4 bash-completion/vmspawn: insert missing space between options
Follow-up for 3b18a8795df525f1e10528f8c056f1e49a1d9bfe.

(cherry picked from commit 2e14be9a84e1edb295d285db75e555695575108c)
(cherry picked from commit 20e4ab09000116e2afadaf359570fd2f469a031b)
2026-02-06 19:33:55 +00:00
Mike Yuan
763a2a400c storagetm: ensure device lock fd is opened for writing
Follow-up for e582484789a6d889d11b97d9c2afa74c3c985130

_cleanup_close_ is dropped, as the fd would be immediately
consumed by the nvme_subsystem_add() call below anyways.

(cherry picked from commit 28fb7e869c6be086fc7ab8ddbc8a4e00b53714b6)
(cherry picked from commit a827513472cda8f65faabc536ef396189d6ecd15)
2026-02-06 19:33:55 +00:00
Jörg Behrmann
583b5ef3d3 kernel-install: handle removal unsuccessful UKIs and loader entries separately
When a tries file exists, 90-uki-copy.install removes a previous UKI of the
same kernel version and all it's unbooted variants. This removal is guarded
behind a check for the existence of the already booted UKI, i.e. if uki.efi
already exists, uki.efi and uki+*.efi will be removed.

This leaves the edge case that if uki.efi does not exist, but only an unbooted,
e.g. uki+3.efi, it will not be removed. This is not a problem, if the number of
tries is constant between both builds, since a new uki+3.efi would overwrite
the existing one, but if the number of tries is changed to, e.g. uki+5.efi, we
are left with both uki+3.efi and uki+5.efi.

The same is done for loader entries.

(cherry picked from commit cab4b9defdef1f9f9d3c31b262aed408a6616490)
(cherry picked from commit 1567b00b632d426e50ee6a1cb75d906e2c8035ef)
2026-02-06 19:33:55 +00:00
Daniel Foster
319febaace man/custom-html: support dark mode
Use the browser's default style and opt in for dark mode.

Has the bonus of removing some
[deprecated attributes](https://developer.mozilla.org/docs/Web/HTML/Reference/Elements/body#deprecated_attributes).

(cherry picked from commit 49811c6715ecd10e133c90ca53685a7ceea37797)
(cherry picked from commit 2f6e779fda7c25fd73daa0c9f4815675622f84b7)
2026-02-06 19:33:55 +00:00
Lennart Poettering
a88ff44c44 test: perform /usr/share/ sysext unmount lazily
/usr/share/ is a directory commonly accessed by various tools, hence we
really should make sure we umount it lazily (MNT_DETACH), since
otherwise there's a good chance that the umount might simply fail.

I noticed this there:

https://github.com/systemd/systemd/actions/runs/21321690161/job/61372465563?pr=40446
(cherry picked from commit 2e38c56c73b06e4e031535ad2dccbb6d065fbadd)
(cherry picked from commit b6b0c83b8d1602925ab918e4ae1c4245a2a4c128)
2026-02-06 19:33:55 +00:00
Mike Yuan
91eb7641d3 sd-event: unpoison memory returned by epoll_pwait2()
Our fuzzer CI recently got bumped to Ubuntu 24.04 with
glibc >= 2.35. Apparently msan is not happy with the new
epoll_pwait2(), hence explicitly mark the memory region
as initialized.

Fixes #40455
Alternative to #40463

(cherry picked from commit 21ebcb5814431fad1d2e805a040ed19776f4c35b)
(cherry picked from commit a8eb2370c8a0cad89ac1b4f82f2f6b13b3a9b8dd)
2026-02-06 19:33:55 +00:00
Antonio Alvarez Feijoo
d5f2c16fff man/fstab-generator: correct root= options
Remove duplicate "fstab" option, and add missing "tmpfs" and "bind:" options.

(cherry picked from commit 236033fd483fd49cfc608d5a120509ce4db5f599)
(cherry picked from commit 4c3d2679c9f64743a90907b314cc2d88cda936c1)
2026-02-06 19:33:55 +00:00
Mike Yuan
e7b200817b units/systemd-portabled: enable NoNewPrivileges=
As with all other daemons we ship.

(cherry picked from commit e9a1271a0c99f0fa5a16786c85b44b2a06150ae0)
(cherry picked from commit 09c4e863639647d012ab8a45fa8fa92657a720f9)
2026-02-06 19:33:55 +00:00
Vunny Sodhi
d5f9526427 pam_systemd_home: Use PAM_TEXT_INFO for token prompts
The prompts asking the user to physically authenticate
or confirm presence on a security token are informational
requests for action, not error conditions.

This commit changes the message type to PAM_TEXT_INFO,
which is more appropriate for guiding the user through
the authentication process.

(cherry picked from commit db4b6b70434295aa7799ac74b80a6d708d1f0ba4)
(cherry picked from commit 42e5003bbce299518f496694c398dd6e681218f3)
2026-02-06 19:33:55 +00:00
Mike Yuan
6a870a811f README: kcmp() is unnecessary if we have F_DUPFD_QUERY (v6.10)
(cherry picked from commit 254445e9271bbf5721573982b31945ea80e5b620)
(cherry picked from commit 3cb8f8dfd5da3651059a4ac4293b7d732cd43d2a)
2026-02-06 19:33:55 +00:00
Mike Yuan
282973fa8b README: CONFIG_DEVPTS_MULTIPLE_INSTANCES has been dropped in v4.7
(cherry picked from commit 77b4a411ac9c468704ea5568e7739d34c7ddb456)
(cherry picked from commit f9cad4ee9a894553100383d92be60672e0af77f8)
2026-02-06 19:33:55 +00:00
cyclopentane
9de3baf5be cryptenroll,cryptsetup,shutdown: only call mlockall if we have CAP_IPC_LOCK
Calling mlockall in an unprivileged process most notably had the effect
of making systemd-cryptenroll OOM while trying to open a normal-sized
argon2 keyslot due to it hitting RLIMIT_MEMLOCK.

(cherry picked from commit 465f6a62840df58d4cf3fc48c2bbdb2fa0ac99b1)
(cherry picked from commit e1f602c217edc22e025901fbf443bae431a67af5)
2026-02-06 19:33:55 +00:00
Mike Yuan
ad19a4172f tree-wide: lock in all memory pages when mlockall() is utilized, and on demand
When employing MCL_FUTURE we don't actually want it to impose
immediate population of malloc()-ed pages. Hence let's set
MCL_ONFAULT everywhere.

Additionally, specify MCL_CURRENT to ensure future memory allocations
on already mapped pages are covered too. (Addresses
https://github.com/systemd/systemd/pull/40319#discussion_r2693726196)

Note that in shutdown the mlockall() is done to avoid keeping swap space
busy, hence a dedicated call w/ MCL_CURRENT and w/o MCL_ONFAULT is made.

(cherry picked from commit 51190631968f2a69acf5da3e3412b003805538f2)
(cherry picked from commit 2cef7f44d57c87813f6b974182da41d2da88fe16)
2026-02-06 19:33:55 +00:00
Mike Yuan
fc9f7fcfcb core/dbus-unit: remove reference to cgroup v1 attribute
(cherry picked from commit 7fb883fea8a14cb1f56f5547c652b9585720d3c7)
(cherry picked from commit f1e8a553e4eb47ba16598cd236bea7ca5f27c351)
2026-02-06 19:33:55 +00:00
Mike Yuan
7d5979d54e core/main: use saturate_add() where appropriate
(cherry picked from commit 0fcad6eead8abc0f9af5e9b5412abc573250a5e2)
(cherry picked from commit 62d871134079bd2fd643e70df44917ccda12bacc)
2026-02-06 19:33:55 +00:00
Mike Yuan
b8c4bedfa0 logind-varlink: add missing validation for session class
D-Bus CreateSession() method carries this check, but the varlink
one didn't.

(cherry picked from commit 3e9ed9851432892894c474cd6ee54a7b7457b7bb)
(cherry picked from commit fab162d490b15c8874f8d77403ef055a765e93d2)
2026-02-06 19:33:55 +00:00
Lennart Poettering
efb071ace4 socket: turn of loud logging when setting up sockopts in container fails due to privs
Various socktops will fail if we run in a container, due to lack of
privs (for example SO_RECVFORCE as used by the journald sockets). That's
typically not a big issue. Hence downgrade the log level.

Follow-up for: f7df0eab8d9520f37a2feaecf532d78de6ab6b7d

(cherry picked from commit 947ecb08122c0337d0ec22b315182e2559f9d2cb)
(cherry picked from commit a97a86efce8cb95d30203eca7d7bea9e2b3faa54)
2026-02-06 19:33:55 +00:00
Zbigniew Jędrzejewski-Szmek
943a04a3cf mailmap: deduplicate some frequent contributors
(cherry picked from commit f7047b8c1cabca03fd8754abb3b13a6c26117b36)
(cherry picked from commit 9a7be64af856f4254364e3bca9d8ea7273bd4bed)
2026-02-06 19:33:55 +00:00
DaanDeMeyer
59dbbbb71c docs: Document practice of using comments for argument names
(cherry picked from commit 90e80b9e8b6c8fedd2192c4d17a20cf13f5d8a37)
(cherry picked from commit 9af7887104dc3ee160d8886c8f87ae506bf65ead)
2026-02-06 19:33:55 +00:00
Yu Watanabe
168e2bf58f integration tests: do not adjust log level of udevd in the test script
Similar to 5c60d3011feac20dcc3c66fe2bcafa0a889e33d1, but for udevd.

(cherry picked from commit 18de7dd90f2e750dd532417a857b82240bf596a7)
(cherry picked from commit 758bba78448d3a23a9412cb7a186df5ae5a45518)
2026-02-06 19:33:55 +00:00
Michael Vogt
487933b723 man: fix copy/paste issue in systemd-vmspawn.xml
The systemd-vmspawn man page has a note that the `--notify-ready`
defaults to "true" and then says that this is unlike "systemd-vmspawn"
where it defaults to "false". This appears to be a copy/paste issue
and here we want "unlike systemd-nspawn".

(cherry picked from commit b6eabd21ea78483c35618be879864171d52d40c6)
(cherry picked from commit 63de39b9670958ba77dbadf6d67ba2a0430ba64e)
2026-02-06 19:33:55 +00:00
Yu Watanabe
490e0f13d5 man: fix indentation
(cherry picked from commit 716246f2357d8e85cbdfc4caab2b8f4d57e8eb05)
(cherry picked from commit da45037b27998812734cbd631b6890a7eccbb8b5)
2026-02-06 19:33:55 +00:00
Maximilian Bosch
bc0e17d6cb mkosi: /bin/bash -> /usr/bin/env bash
This is analogous to a change in mkosi[1] with the same motivation: some
scripts are run to bootstrap the distribution tree and are thus running
directly on the host system which may not have `/bin/bash` (e.g. NixOS).

As with the `mkosi` change, do that for each shebang for consistency
reasons.

[1] 8d2cd50e51

(cherry picked from commit db5f1952f36aefd302bd3a348a252e3e75c4e77e)
(cherry picked from commit 91173d0b052b738268abb19a5faacb95d67f38d5)
2026-02-06 19:33:55 +00:00
Matthijs Kooijman
7910079dce man/systemd.service: Note RestartSteps only works with RestartSec= set
Setting Restart=0 seems reasonable to have no delay on the first
restart, if you do not realize this is impossible with an exponential
restart. So explicitly mention that RestartSec must be set.

(cherry picked from commit af88aa17c71f3072788e7780fa0b16bb241faf9b)
(cherry picked from commit e70240c3d631976ca93aea90bb3b969a774a882a)
2026-02-06 19:33:55 +00:00
Matthijs Kooijman
8d61e2bdd7 man/systemd.service: Note RestartSteps are exponential
(cherry picked from commit 2102511f4a5f52b6fa8091941c2495e7236f9b48)
(cherry picked from commit d703b1e42b56e409b4cbe370a8ca236c4a804444)
2026-02-06 19:33:55 +00:00
Alexis-Emmanuel Haeringer
27c7a443f9 man/kernel-install: /proc/cmdline is not used as a fallback in container
(cherry picked from commit adfa4b6b749662d11fb77bb85b952e4eabd58a78)
(cherry picked from commit 96a00e60eab33ac83653ccf0890162b164acf3fd)
2026-02-06 19:33:55 +00:00
Yu Watanabe
808e846e0c man: fix typo
(cherry picked from commit 9bad7610f84b66089bb2ad362d55be1ecdbff4b0)
(cherry picked from commit 6498cc60cf88f73fecf8e9692457ab92d35e1e47)
2026-02-06 19:33:55 +00:00
Tobias Stoeckmann
da079b8e33 sysusers: document u! version support
Document at which version the exclamation mark suffix is supported.
Version 215 at the end of the list item is a bit misleading.

(cherry picked from commit a6ef85885076d3827a1bf00275309285834ddcc0)
(cherry picked from commit ab764a3e3967dcab438a64b2a280dcf3f930f71a)
2026-02-06 19:33:55 +00:00
Zbigniew Jędrzejewski-Szmek
46a1a366a1 NEWS: fix typo
(cherry picked from commit 4a74a48c230e42d1b77ee8d9cc823498399b98e3)
(cherry picked from commit 8295d3f8ce9115388b224779ee2df7ed38c69b0c)
2026-02-06 19:33:54 +00:00
Yu Watanabe
a1ee506315 TEST-13-NSPAWN: remove pulled image on exit
Otherwise, if the VM is unexpectedly rebooted, then `importctl --user pull-tar`
may fail as the file may already exist.
```
[  123.351751] TEST-13-NSPAWN.sh[3946]: + run0 -u testuser importctl --user pull-tar file:///var/tmp/image-tar/kurps.tar.gz nurps --verify=checksum -m
[  123.541603] TEST-13-NSPAWN.sh[4311]: Enqueued transfer job 3. Press C-c to continue download in background.
[  123.552456] TEST-13-NSPAWN.sh[4311]: Pulling 'file:///var/tmp/image-tar/kurps.tar.gz', saving as 'nurps'.
[  123.552788] TEST-13-NSPAWN.sh[4311]: Operating on image directory '/home/testuser/.local/state/machines'.
[  123.819942] TEST-13-NSPAWN.sh[4311]: Got 1% of file:///var/tmp/image-tar/kurps.tar.gz.
[  124.156557] TEST-13-NSPAWN.sh[4311]: * shutting down connection #0
[  124.156896] TEST-13-NSPAWN.sh[4311]: * Could not open file /var/tmp/image-tar/kurps.tar.gz.sha256
[  124.157223] TEST-13-NSPAWN.sh[4311]: * closing connection #-1
[  124.159198] TEST-13-NSPAWN.sh[4311]: * Could not open file /var/tmp/image-tar/kurps.nspawn
[  124.159493] TEST-13-NSPAWN.sh[4311]: * closing connection #-1
[  124.159818] TEST-13-NSPAWN.sh[4311]: Acquired 68.5M.
[  124.160395] TEST-13-NSPAWN.sh[4311]: Download of file:///var/tmp/image-tar/kurps.tar.gz complete.
[  124.160664] TEST-13-NSPAWN.sh[4311]: Transfer failed: Could not read a file:// file
[  124.160923] TEST-13-NSPAWN.sh[4311]: Settings file could not be retrieved, proceeding without.
[  124.404733] TEST-13-NSPAWN.sh[4311]: * shutting down connection #1
[  124.405162] TEST-13-NSPAWN.sh[4311]: Acquired 79B.
[  124.406170] TEST-13-NSPAWN.sh[4311]: Download of file:///var/tmp/image-tar/SHA256SUMS complete.
[  124.406734] TEST-13-NSPAWN.sh[4311]: SHA256 checksum of file:///var/tmp/image-tar/kurps.tar.gz is valid.
[  124.455446] TEST-13-NSPAWN.sh[4311]: Failed to rename to final image name to /home/testuser/.local/state/machines/.tar-file:\x2f\x2f\x2fvar\x2ftmp\x2fimage-tar\x2fkurps\x2etar\x2egz: File exists
[  124.457251] TEST-13-NSPAWN.sh[4311]: Exiting.
```
Workaround for issue #38240.

(cherry picked from commit fc48bf0c6bc363eff993c3ed54a73a268d489914)
(cherry picked from commit f399faf60af8bd5707c2624a181d274678ef2954)
2026-02-06 19:33:54 +00:00
Cathy Hu
2c1aac7d41 journal-remote test: add -Z in mkdir for journal-{remote,upload}.conf.d
Otherwise on SELinux enabled systems with the "targeted" policy
the type is not set correctly when run via unconfined user and
the test fails.

(cherry picked from commit 57202fd1810fde2743a068c05126dbc51d2916b1)
(cherry picked from commit 99debe91cdc5dc9a89d1256db7fc6415ae3a54e4)
2026-02-06 19:33:54 +00:00
Nick Rosbrook
420c166a4b ukify: omit .osrel section when --os-release= is empty
The primary motivation for this is to allow users of ukify to build
UKI-like objects, without having them later be detected as a UKI by
tools like kernel-install and bootctl.

The common code used by these tools to determine if a PE binary is a UKI
checks that both .osrel and .linux sections are present. Hence, adding
a mechansim to skip .osrel provides a way to avoid being labeled a UKI.

(cherry picked from commit 75890d949f92c412c0936b8536b2e0dc8f7dfb40)
(cherry picked from commit 798a27a5b421e45842f1938efa2a7808009b7afa)
2026-02-06 19:33:54 +00:00
Pablo Fraile Alonso
74c75c3cf5 shared/edit-util: ignore ENOTDIR when trying editors
(cherry picked from commit fd8d4026d4e7b4664571e923166693642794b505)
(cherry picked from commit 778963a0a2418b2a9367d903b7514fa45f506107)
2026-02-06 19:33:54 +00:00
Tobias Stoeckmann
2eefe852ee nss-systemd: add unit test for sg_adm/sg_mem
Add a test for getsgnam_r to verify that sg_adm and sg_mem always point
to a NULL-terminated string vector.

Extend the gr_mem check of struct group for non-NULL values as well.

(cherry picked from commit 2eaca3ea5f0de702382d388d3bbc753c000ada4b)
(cherry picked from commit cbcf51881c5273295a9334caa27a2aa6f8da0b9e)
2026-02-06 19:33:54 +00:00
Tobias Stoeckmann
716f93bc07 nss-systemd: set sg_adm/sg_mem for all groups
Fill sg_adm and sg_mem in nss_pack_group_record_shadow to stay
compatible with other NSS getsgnam implementations which set these
members to NULL terminated string arrays.

Tools like shadow's sg would trigger a NULL pointer dereference with
groups only found through nss-systemd otherwise.

(cherry picked from commit 57682793dac269994d6e69f7a5a937f5ad459cc8)
(cherry picked from commit dbbb79f55019d1b6882a9fb7139572fe7684b533)
2026-02-06 19:33:54 +00:00
Tobias Stoeckmann
eb3119d50d nss-systemd: set sg_adm/sg_mem in intrinsic groups
The sg_adm and sg_mem fields are supposed to point to a NULL terminated
string array. If these are NULL, some foreign tools like shadow's sg
trigger NULL pointer dereferences (or fortunately their asset() calls).

(cherry picked from commit 239903d44c12f10b5fe7c1f8457ae5203e47d8cc)
(cherry picked from commit bcdb791e9ceb0f1f8be63ce8eb632e5551fda2a4)
2026-02-06 19:33:54 +00:00
DaanDeMeyer
62c7780f7c repart: Don't silence mkfs.erofs if on a tty
mkfs.erofs is only sometimes verbose when not on a TTY, so let's not
silence it if we're on a TTY.

(cherry picked from commit 4d6274a6f4b7394e74320ed118d6b5fe43145034)
(cherry picked from commit fcb1c33d69e0e6ca625cfa9a0028749bf97c4005)
2026-02-06 19:33:54 +00:00
Ulrich Ölmann
3c3acb910a man/systemctl: fix typo
(cherry picked from commit dc3078e3a921bff8007d9fd7266408145e23172a)
(cherry picked from commit a55845239b76c7fd477f1583007f1ac117034976)
2026-02-06 19:33:54 +00:00
tuhaowen
fdd5afed34 udev/scsi_id: increase MAX_SERIAL_LEN from 256 to 512
The current MAX_SERIAL_LEN value of 256 is insufficient for some SCSI
devices with non-standard serial number lengths. In do_scsi_page80_inquiry(),
the required buffer length is calculated as:

    len = 1 + VENDOR_LENGTH + MODEL_LENGTH + buf[3]
        = 1 + 8 + 16 + buf[3]
        = 25 + buf[3]

where buf[3] contains the serial number length reported by the device.
According to the SCSI specification, this field is an unsigned 8-bit
value, meaning it can theoretically be up to 255 bytes. This results
in a maximum required length of 280 bytes, exceeding the current limit
of 256 bytes.

When this occurs, scsi_id fails with an error message like:
    "length 256 too short - need 280"

This has been observed with certain vendor devices that report unusually
long serial numbers in VPD page 0x80.

Increase MAX_SERIAL_LEN to 512 to accommodate the maximum possible
serial number length plus all required prefixes (vendor, model, and
type identifiers), providing sufficient headroom for non-compliant
devices while maintaining reasonable memory usage.

Signed-off-by: tuhaowen <tuhaowen@uniontech.com>
(cherry picked from commit 3c586354aae65bdbecfab8f8263f48a2c4200c92)
(cherry picked from commit 103baee487eeb925a3885b3c894a3113b6b7d718)
2026-02-06 19:33:54 +00:00
Franck Bui
4f4640ff1f core/transaction: when isolating, keep triggered units only if their triggers are actually active
Follow-up for 32d6707dd1692d41e12f5469dfdcbc10f14d6619.

Co-authored-by: Mike Yuan <me@yhndnzj.com>
(cherry picked from commit 8e92910b980ebf33c32aa11e8e07db968379fe82)
(cherry picked from commit 9a83eee32f71903e348afae8f17afeccaa25828f)
2026-02-06 19:33:54 +00:00
Ben Boeckel
b536ad10fc docs/PASSWORD_AGENTS: document the AcceptCached= field
(cherry picked from commit 0d15b2304bd76459d338429e6a6ef1b08e8c1b0d)
(cherry picked from commit 487ad1c9db7c4da59131650e8de17386264af788)
2026-02-06 19:33:54 +00:00
Ben Boeckel
af93b676fc docs/PASSWORD_AGENTS: document the Silent= field
(cherry picked from commit 9f4606c3617bf47015c7bf9f63f5c44d9866ec1f)
(cherry picked from commit 59d7895d487e322cad0ffdab589a275a7341258b)
2026-02-06 19:33:54 +00:00
Ben Boeckel
a7f1811c6f docs/PASSWORD_AGENTS: clarify that Echo=0 may obscure
(cherry picked from commit dc08cb1eb83072666a4ff21e1db8d35712e29121)
(cherry picked from commit f5a743ebe88a6a2fc37336ccbb4b1506e678d3b7)
2026-02-06 19:33:54 +00:00
Ben Boeckel
ee37bb2bf2 docs/PASSWORD_AGENTS: note that the user directory may be created
(cherry picked from commit 19d7ce2f7b8c74ffd81acafb3205e3184bef5d01)
(cherry picked from commit d526f7ce75188f59d038fc46aca5bc1368f4aa92)
2026-02-06 19:33:54 +00:00
DaanDeMeyer
176dbb299a docs: Add explicit reference to unprivileged userns docs of mkosi
Fixes #40216

(cherry picked from commit f3c67f7e16e23d385113461033f06e76789df1cd)
(cherry picked from commit 0c12b14d2c75bc648cc950ec858a3731fa25055b)
2026-02-06 19:33:54 +00:00
Lennart Poettering
5374e7fe5c userdbctl: add missing --uuid= to --help text
Follow-up for: 466562c69b75cec197176f556b940a43bb8350f2

(cherry picked from commit f42ac2477258987cf6982c19b05cb46fabca16c9)
(cherry picked from commit e94f44085f9bdec9394b0d331e416b8ca45e7f40)
2026-02-06 19:33:54 +00:00
Luca Boccassi
6d858c794a tools: use -f in mkosi summary in fetch-distro.py
$ ./tools/fetch-distro.py -u fedora
+ mkosi --json -d fedora summary
‣ Ignoring --distribution from the CLI. Run with -f to rebuild the image with this setting

Follow-up for 35f6e5c3278bda935b67249a9ee61e9f6252bb6f

(cherry picked from commit 2791af18e41d7410023943197ed4470f865cb5fd)
(cherry picked from commit 8fe6f3bcb14ea5cadc61aa01b44216f74346096e)
2026-02-06 19:33:54 +00:00
seidlerv
701009f314 man/org.freedesktop.systemd1.xml: Fix wording
(cherry picked from commit bd6d8eec5e2b2a76e119b34dcf8034ff578c1595)
(cherry picked from commit 24a51e02ac6fae917930fc0e18c968e15024ed29)
2026-02-06 19:33:54 +00:00
Mike Yuan
b6754b04df logs-show: match init.scope rather than _PID=1 for UNIT=
We should consider the whole init.scope trusted, and any
process trying to log on behalf of a unit there should be
attributed as so.

Follow-up for 4f25248b6e69855b4da6d01690821b9359928edc
Only with this commit is the change in effect.

(cherry picked from commit 7f9e3c5919e533a73f1f25c5ada436a99251a769)
(cherry picked from commit f2f2c2c9bf1c9b97a0f12c31bf9b1d51e05d1504)
2026-02-06 19:33:54 +00:00
Franck Bui
0f4301ab77 man: generate systemd-tpm2-generator man page only when ENABLE_BOOTLOADER is enabled
(cherry picked from commit 25393c7c907b2c460a8a34d7dc6a1bdbcac8e9d4)
(cherry picked from commit f8c5b96c847a94bad33e9072db5689c15b9e4911)
2026-02-06 19:33:54 +00:00
Luca Boccassi
57631a2be2 fido2: fix enrolling when UV is required ('alwaysUv')
When a Yubikey or other fido2 device has FIPS mode enabled, UV will
always be required and cannot be disabled. Unhelpfully, when it is not
sent down, the hardware token (not the library) returns a generic
FIDO_ERR_MISSING_PARAMETER:

$ systemd-cryptenroll --fido2-device=auto --fido2-with-client-pin=no foo
<...>
libfido2: rx: payload_len=1
libfido2: fido_rx: buf=0x55c9ce170940, len=1
libfido2: 0000: 14
libfido2: cbor_parse_reply: blob[0]=0x14
libfido2: fido_dev_get_assert_rx: adjust_assert_count
Failed to ask token for assertion: FIDO_ERR_MISSING_PARAMETER

This can be set even when the token doesn't support UV (as in, fingerprint
reader), in which case using the PIN is required.

Check if 'alwaysUv' is set, and if not already configured, force
either UV (if available) or PIN when enrolling.

(cherry picked from commit 9a349714219361b79ab9caf2d4a68a3ca8909d2a)
(cherry picked from commit 269460bcb2a761059dfa1f7a2e0ce03e7abf31df)
2026-02-06 19:33:54 +00:00
Lennart Poettering
c83e4596d5 bash: clarfiy what 80-systemd-osc-context.sh is about in the spec
(cherry picked from commit 18d90c1628c5a0934591ce862eefc9cbb9c23a24)
(cherry picked from commit f6dcbc0828af8defe5e767e81098e217bbc5d2f6)
2026-02-06 19:33:54 +00:00
Lennart Poettering
2c995ad5ea docs: add redirection of the osc context to uapi website
(cherry picked from commit d91aed3b55f01707c02e72b61734df009eb9c08a)
(cherry picked from commit 36dd990ee2f77c24c730949e972674f718d9fa43)
2026-02-06 19:33:54 +00:00
Mike Yuan
ea8b6c6df3 core/dbus-execute: respect write flags for empty assignments too
(cherry picked from commit 16bae207c2b2efef82799ded8732a955555a5191)
(cherry picked from commit 985952c920f010097dd43ab8100f30b4e9986055)
2026-02-06 19:33:54 +00:00
Yu Watanabe
50f2daea7b test: introduce our own sleep command for testing
(cherry picked from commit 4c98063d6e16ca51a76c67069461be1e7d09ba05)
(cherry picked from commit 11453a6be074340830b34a8e0d9fecf05550c7fa)
2026-02-06 19:33:54 +00:00
Yu Watanabe
a2b12ea34e time-util: make usleep_safe() support USEC_INFINITY
(cherry picked from commit 78385b8e9466d688b1e57e06cb7ec91277d1b94d)
(cherry picked from commit b1e6cce08595d2babb8eb1fb3d1e5e706abd6a7d)
2026-02-06 19:33:54 +00:00
Yu Watanabe
7aec6c08fd time-util: continue sleeping when clock_nanosleep() fail with EINTR
The function clock_nanosleep() provides remaining time when failed with
EINTR. Let's continue sleeping in that case.

(cherry picked from commit b8241d3ca57b7a307be1dfa39bdf3202372c1841)
(cherry picked from commit 7898d04c3477ba09010abc81c60e4931090fb5e9)
2026-02-06 19:33:54 +00:00
Luca Boccassi
dccaf46420 firstboot/homectl: hide plymouth splashscreen when asking questions
When plymouth is enabled, the screen gets all garbled when firstboot
runs and asks questions. Disable the splash screen, but only when
actually asking questions.

(cherry picked from commit 75cb25c0b9250555212014e3ece14e5aadace6d4)
(cherry picked from commit 560677fcbb92a36be8e7ad70d4d1c564e6c2c42e)
2026-02-06 19:33:54 +00:00
Luca Boccassi
d9d6868d01 vmspawn: do not pass console=hvc0 in GUI mode
This breaks when using qemu's GUI mode. Follow mkosi's example.

Follow-up for 773ca1def8f79a8509bf0846de9d75902ca31f79

(cherry picked from commit 610d8c3dfc80811e92e6f89101b1b42987c84fdc)
(cherry picked from commit 2214421f9e3786851969f377662e62de5c218b75)
2026-02-06 19:33:54 +00:00
Antonio Alvarez Feijoo
e77137e4f1 import-generator: fix sysext/confext ordering in initrd
In the initrd, order the generated `systemd-import@.service` units before the
initrd-specific sysext/confext units.

(cherry picked from commit 2f76b10b94c053cedd4fe1b28983993eaa498403)
(cherry picked from commit c15c18114f6b4d14b24b4e5ea42894922fcca295)
2026-02-06 19:33:54 +00:00
Luca Boccassi
26a6879a91 ask-password: install polkit policy
The policy was added, but never hooked into meson to be installed,
so it's unused. Install it.

Follow-up for 066f6bfb6278962e288cce2ba522a2e400980e7c

(cherry picked from commit ce41216e49738959391c290f7bd1048c907b8d88)
(cherry picked from commit fd9cea4d94fed45244e1caf60c03e0b45e5dddb7)
2026-02-06 19:33:54 +00:00
Zbigniew Jędrzejewski-Szmek
10bfd7dc4e ask-password: remove files in /run when query is aborted
Because of the missing 'goto', if the query was aborted, we
would leave behind the ask.* ini file.

(cherry picked from commit 65f72f5dbbb2cd9c75b8ebca96f0e92d4a8e8b4f)
(cherry picked from commit 93021d397dcedffd404e5bb42ce5aed3ea9b58b2)
2026-02-06 19:33:54 +00:00
Zbigniew Jędrzejewski-Szmek
5ad1fcb6da ask-password: reject control chars and quotes in query description
As reported in https://yeswehack.com/vulnerability-center/reports/705270,
YesWeHack issue #YWH-PGM9780-66, if a newline is injected into the message
field, it is passed through unmolested and lands in the .ini file. This
obviously would cause the parser to be confused.

Let's forbid any control characters or quotes in those fields. If we want
something more complicated in the future, we can add a custom validation
function and allow some escaping mechanism.

(cherry picked from commit f01c99c67ede1f3df92993b91b8176cebb5e656a)
(cherry picked from commit 0ed548e334c732586c006a12b2a440baa4e48f83)
2026-02-06 19:33:54 +00:00
Yu Watanabe
7d1c5df3c0 bus-unit-util: convert StandardInputText to StandardInputData
Fixes #40527.

(cherry picked from commit c3540c80a51635c114d338b286857a05893f7ab6)
(cherry picked from commit 61587a6c16319c725fdb61b395fb62d30289edd5)
2026-02-06 19:33:54 +00:00
Ivan Shapovalov
1f821072f4 network: fix max MTU check for IPv6 MTU adjustments
When link MTU is being adjusted in an IPv6 context (e.g., according to
the MTU received in an RA), the new MTU is clamped against link's
current MTU than link's max MTU. This means that the link MTU can never
be increased via an RA:

    systemd-networkd[10068]: eth1: Reducing requested IPv6 MTU 8900 to the interface's maximum MTU 1500.
    systemd-networkd[10068]: Setting '/proc/sys/net/ipv6/conf/eth1/mtu' to '1500'
    systemd-networkd[10068]: No change in value '1500', suppressing write

Fix this check to make logical sense, and also to match a similar check
in src/network/networkd-setlink.c:link_adjust_mtu().

(cherry picked from commit 32417c172383847ec78b672c537594e3efe8f0e0)
(cherry picked from commit a54d78841b4a79f936e8d73d93f4160b112e4de8)
2026-02-06 19:33:54 +00:00
Yu Watanabe
35e18bd96f bus-unit-util: make ExecSearchPath= accepts colon separated list
Unlike other settings that takes multiple values, the setting takes
colon separated list of paths, but when specified as a DBus property,
it previously accepted space separated list of paths.
Let's also make the DBus property accepts colon separated lists.

Fixes #40513.

(cherry picked from commit da912e7f2fdda3d2ee1acd0b923e8a417838e27c)
(cherry picked from commit 29f62eeedfd82c5246c8a5406988517aa0dae79f)
2026-02-06 19:33:54 +00:00
Michael Vogt
54fb6ce22d vmspawn: keep stderr fd connected when running ssh-keygen
When vmspawn executes ssh-keygen it currently hides all std{out,err}.
This is not ideal when errors happen, so this commit tweaks the
code to include stderr in the output.

My use case is that I recently ran into the issue that inside a
`mkosi box` my systemd-homed user was not available so ssh-keygen
errored with `No user exists for uid 1000` [0] but that error was
not visible, only the generic:
`'/usr/bin/ssh-keygen' failed with exit status 255.`
was displayed.

This also adds FORK_REOPEN_LOG to the pidref_safe_fork flags,
thanks to Mike Yuan for the suggestion.

[0] Arguably this is also an issue in ssh-keygen because it does
not need to do the user lookup when `-f /path/` is passed.

(cherry picked from commit 8c5c04ed279ff15d398120e70f327f705725e521)
(cherry picked from commit 39ff19e7debad7f95f9acf5e8e648630643b06f2)
2026-02-06 19:33:54 +00:00
Franck Bui
ebde9e4f99 pam_systemd: fix regression introduced in v258 by preserving the FIFO fd
Upstream commit 3180c4d introduced a version incompatibility between
pam_systemd.so v258 and logind v257. This is problematic because such version
mismatches can occur in practice: logind still cannot be restarted during a
systemd package upgrade (it's a long-standing limitation, see
https://github.com/systemd/systemd/issues/17308).

When pam_systemd requests a new session, logind v257 returns a FIFO
fd. pam_systemd.so v258 ignores this fd and closes it. logind interprets the
closure as the session leader exiting and immediately terminates the session.

This patch partially reverts commit 3180c4d and restores the handling of the
FIFO fd in pam_systemd. The change is limited to the D-Bus APIs, since the
varlink API was only introduced in logind v258.

Follow-up for 3180c4d46151673a9c985e60f205d4c76a81573f.

(cherry picked from commit 49f7149947e963a94d15c51e4505d2ddd24b872d)
(cherry picked from commit 016c269b5903b11fe7a54608f8652765161c115f)
2026-02-06 19:33:54 +00:00
Mike Yuan
8e06efdc3b install-file: add a generalized parser for $SOURCE_DATE_EPOCH
(cherry picked from commit 2f7fdef55e89ffff83a418ae674e893dd6e0a044)
(cherry picked from commit 2f7df6c8ebbbf6a277cbbd9a78f9a194231bcf73)
2026-02-06 19:33:54 +00:00
Yu Watanabe
8b5e58978d stat-util: make proc_mounted() not update errno
Typically, proc_mounted() is used in error handling. Hence, it is better
to make it not update the original errno.

Currently, there are two places that returns wrong error code:
- pidref_get_capability() in src/basic/capability-util.c
```c
        _cleanup_fclose_ FILE *f = fopen(path, "re");
        if (!f) {
                if (errno == ENOENT && proc_mounted() == 0)
                        return -ENOSYS;

                return -errno;
        }
```
- fdset_new_fill() in src/shared/fdset.c
```c
        d = opendir("/proc/self/fd");
        if (!d) {
                if (errno == ENOENT && proc_mounted() == 0)
                        return -ENOSYS;

                return -errno;
        }
```

Rather than fixing them, let's make proc_mounted() not update errno,
otherwise we may make a similar failure in a future.

(cherry picked from commit e6a25c2fc7556b97406367bd1c9516ea621e1c07)
(cherry picked from commit 17819a0c712b267620a0c4b8934aa14cacbc0cf3)
2026-02-06 19:33:54 +00:00
Mike Yuan
d2a53e730c bless-boot-generator: skip if current system is entered via soft-reboot
Fixes #40386

(cherry picked from commit ae039016f4c6f9bd3d3fb88418932695442bdc0a)
(cherry picked from commit 2242a2a77f38996fa1f3ace247aa7b7c613efef6)
2026-02-06 19:33:54 +00:00
Yu Watanabe
16618bbbb5 journal/audit: do not use strjoina() for arbitrary length of received string
Otherwise, when a long message is received, the assertion in strjoina()
may be triggered.

Fixes oss-fuzz#476768320 (https://issues.oss-fuzz.com/issues/476768320).
Fixes #40388.

(cherry picked from commit 3d2284c7db15872e9002d8f7ee58c43765858b22)
(cherry picked from commit dac716e083fb725362487069fe7a399e597e6475)
2026-02-06 19:33:54 +00:00
Yu Watanabe
7c8aee0dbd journal-file: do not trigger assertion on removed or corrupted journal file
When a journal file is removed or corrupted, then the value `p`, which is
read from Object.data.entry_offset, may be zero.

Note, journal_file_move_to_object() checks the passed offset and return
-EBADMSG if it is invalid.

Fixes the issue reported at
https://github.com/systemd/systemd/pull/40372#issuecomment-3762907261.

(cherry picked from commit 112cbc37906fb97afe0ad04164262cf62d0af5e9)
(cherry picked from commit 4d63cbe970eb3b0ea80803b6717675b45ba02d58)
2026-02-06 19:33:54 +00:00
Lennart Poettering
0b8ba908c0 string-util: accept ":" when stripping ANSI color sequences
Since 6eabe9f2ff48c1b6924724d5afe64e7b661ccdbf we generate sequences
with ":", hence we better also know how to strip them.

(Without this patch we'd strip simple ANSI colors, but not RGB ones that
use ":" syntax).

(While we are at it, also drop a duplicate "0" in the list of valid
chars)

(cherry picked from commit e09b5366e57cbe06c32a7607236e1383a2e4d533)
(cherry picked from commit 9c133c583bd8f3127342f6a5c0641f661c74ac7a)
2026-02-06 19:33:54 +00:00
Lennart Poettering
af2e185775 ansi-color: convert one more ANSI sequence from ";" to ":" separators
This is a follow-up for 6eabe9f2ff48c1b6924724d5afe64e7b661ccdbf where
one sequence was forgotten.

(cherry picked from commit 24c315e9113b85c498915b37b2363308c340492e)
(cherry picked from commit 373029c79238395b68179693eec0cfd87bcadbe0)
2026-02-06 19:33:54 +00:00
Heran Yang
fbc354d424 core/unit: re-find dropin paths of a unit after writting settings
Fixes: ab932a622d57 ("core: simplify unit_need_daemon_reload() a bit")
Fixes #35710

Co-authored-by: Jian Wen <wenjianhn@gmail.com>
(cherry picked from commit c55aadc13e1ec0b1772ff927994a75601864ec09)
(cherry picked from commit 19fafd3ba9fbb0725a5cd0a49e87d3f3f26d86e8)
2026-02-06 19:33:54 +00:00
calm329
a1f5102d8f basic: move BPF_JMP_A to override/linux/bpf_insn.h
Move the BPF_JMP_A macro from override/linux/bpf.h to
override/linux/bpf_insn.h. The bpf.h override conflicts with libbpf's
-I/usr/include/bpf/uapi include path. Since bpf_insn.h is not typically
installed at /usr/include/linux/ or /usr/include/bpf/uapi/linux/, the
override works without conflicts.

Fixes #40331

(cherry picked from commit ac2b5f6cbf24455fb1827f6001b286aeef0a2660)
(cherry picked from commit d9c1f16b1d543fdaebfc2e11ec203422f7eccbd6)
2026-02-06 19:33:54 +00:00
Hans de Goede
671c9fab5e stub: Fix NULL pointer deref when there are no initrds
When n_all_initrds == 0, then all_initrds is unmodified from its initial
value of:

	_cleanup_free_ struct iovec *all_initrds = NULL;

and in the else block of the "if (n_all_initrds > 1)" the NULL is
dereferenced:

		final_initrd = all_initrds[0];

Leading to the stub crashing due to a NULL pointer deref.

Fix this by initializing final_initrd to all 0s and only
running the else block if (n_all_initrds == 1).

(cherry picked from commit 3f4279829eb6c15bdbc0d4252bbefe0c4fd9ec23)
(cherry picked from commit dbb23bb50925b045a7a8f652a42468f1e78813ef)
2026-02-06 19:33:54 +00:00
Yu Watanabe
0b34ee03f0 network: ignore -EINVAL from bpf_get_current_comm()
Hopefully fixes #40051.

(cherry picked from commit 9e36307a8a2f852d1533cc5b7ec896cf9acc8761)
(cherry picked from commit 417352d14659ada518c219573063b9bc42f9e0ea)
2026-02-06 19:33:54 +00:00
Michal Sekletar
a19bc49736 core: only activate transaction that contain useful jobs
If no real jobs were added to the transaction, do not activate it.
The JOB_NOP anchor does not perform any useful work and activating
such transaction only wastes resources.

Fixes #9751

(cherry picked from commit bcbf80c43d107ad233edc990a60bdc40f517085a)
(cherry picked from commit 63d9a3b83703208d83ea256e40ccbf3a5cb2a439)
2026-02-06 19:33:53 +00:00
Yu Watanabe
86c8f4e19a compress: do not call lzma_end_wrapper() when failed to load liblzma
Fixes a bug in 3fc72d54132151c131301fc7954e0b44cdd3c860 (v256).
Fixes #40277.

(cherry picked from commit 76ed202b7f6736d2b9a52b4255d8bb11da0a2100)
(cherry picked from commit 0a4460d10d247b2f0b4cd9bc1946fec2c41ed638)
2026-02-06 19:33:53 +00:00
Yu Watanabe
ce4513b520 udev: downgrade log level about failure in notification
These may fail on shutdown/reboot, as the notification socket is already
closed.

Closes #39943.

(cherry picked from commit 472404aca5357b7e65cdddf418342070b0ccd4d2)
(cherry picked from commit cc9832bcc349f1d11827d360a000f878bcf341ea)
2026-02-06 19:33:53 +00:00
Yu Watanabe
9d76803b3c daemon-util: introduce notify_remove_fd()
It is equivalent to notify_remove_fd_warn() but logs in debug level on
failure.

(cherry picked from commit 36c557f7d41441bbd98a8965348dfe8050fc9c98)
(cherry picked from commit 727528d99c2843f98e62344de7a81edb9715b9a0)
2026-02-06 19:33:53 +00:00
Zbigniew Jędrzejewski-Szmek
e3794ba2e7 shared/install: ignore aliasing failure when doing presets
In recent Fedora, preset-all fails:
[  155s] Failed to preset unit: File '/buildroot/etc/systemd/user/dbus.service'
         already exists and is a symlink to /usr/lib/systemd/user/dbus-broker.service
[  155s] ‣ "systemctl --root=/buildroot --global preset-all" returned non-zero exit code 1.

Strictly speaking, this is an error in configuration. The presets specify that
both dbus-broker.service and dbus-daemon.service shall be enabled and they both
claim the 'dbus.service' alias. But this kind of error is very easy to make.
Failing the preset operation is too harsh, since in most cases the system will
work fine without an alias and changes in unrelated components can cause the
conflict.

Let's reuse the same logic that was added in
ad5fdd391248432e0c105003a8a13f821bde0b8e: when enabling the unit through
'preset' or 'preset-all', print the message, but suppress the error. When
enabling through 'enable', fail the operation.

(cherry picked from commit 8a27100d0696d971525efcd8e59b504f56a0b6f8)
(cherry picked from commit 0cae1a008973360edabd38c4c7cc64eefbd0ed7e)
2026-02-06 19:33:53 +00:00
Yu Watanabe
642b801bfe calendarspec: day of month also needs to be reset when year is changed
Fixes #40260.

(cherry picked from commit cf79f61238fa812d1850987e04d3767ce71dd972)
(cherry picked from commit 32a283b5c253098e506742f37310bd634dbf43b5)
2026-02-06 19:33:53 +00:00
Yu Watanabe
887bea3c6b core: do not provide non-dynamic user through DBus/Varlink
With a service with DynamicUser= with static user or group, e.g.,
```
$ systemd-run -p DynamicUser=yes -p Group=disk sleep infinity
```
previously the lookup by name and ID through DBus/Varlink are inconsistent:
```
$ busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LookupDynamicUserByUID "u" 6
Call failed: Dynamic user ID 6 does not exist.

$ busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LookupDynamicUserByName "s" disk
u 6

$ userdbctl group 6
  Group name: disk
 Disposition: system
         GID: 6
   Passwords: 1
     Service: io.systemd.NameServiceSwitch

$ userdbctl group disk
  Group name: disk
 Disposition: dynamic
         GID: 6
 Description: Dynamic Group
     Service: io.systemd.DynamicUser
```

With this change, the results of these methods are consistent.

Fixes #40228.

(cherry picked from commit cb39d66ec837dc36b4f6719f15e7573a6fc68ce6)
(cherry picked from commit a8c1405d3e5c47218b1489493d5d0b8281d52e5c)
2026-02-06 19:33:53 +00:00
Mike Yuan
c77ae94b63 udev,sysupdated: fix pidfd leak
Follow-up for 179dcf924f7d0ac9398f54baeb39b47abd23aeaf

After the mentioned commit, event_add_child_pidref() duplicates
the pidfd internally, hence the original pidfd would be leaked
with TAKE_PIDREF.

(cherry picked from commit ca6b65991ce38d73eb785eb187da8adcec8ad1d1)
(cherry picked from commit 59aafdcfa64d2c23a764115465755ff000c96aa2)
2026-02-06 19:33:53 +00:00
Lennart Poettering
c6de135648 terminal-util: use the right ANSI ST sequence
There are multiple ways to encode ANSI ST, and we generally prefer ESC \
for it, for reasons explained in terminal-util.h. Hence, let's actually
follow this rule in the terminal reset logic, and use the ANSI_ST macro.

This will change the byte sequence generated (as it means we use ESC \
rather than BEL), but it doesn't change behaviour, as the two sequences
should be equivalent.

(cherry picked from commit ceaa36c21e89aac1d9370b804ee74223bd96f943)
(cherry picked from commit 4dc27928e2c4a1230a3556f9b078728126af1ad3)
2026-02-06 19:33:53 +00:00
Jörg Behrmann
a6e65a45af terminal-util: also send ANSI_NORMAL in terminal_reset_ansi_seq
Certain terminal emulators (alacritty, ghostty and kitty) require ANSI_NORMAL
to be sent to reset the colours.

Followup for 3d97db8f3c3e86b70d09444965ebfddd051df39c.

Fixes: #40163
(cherry picked from commit 1afe5c7b4ba93dd56d65d4da44377f02613d6333)
(cherry picked from commit 94cff26c06883556c65322cc5f83fca56c412f00)
2026-02-06 19:33:53 +00:00
Haiyue Wang
9e10325ddc meson: fix BPF build warnings due to MS extensions
Fix BPF program build warnings on Linux-6.19.0-rc1, more detail is [1]:

A). clang-bpf

[781/2458] Generating src/network/bpf/sysctl-monitor/sysctl-monitor.bpf.unstripped.o with a custom command
In file included from ../src/network/bpf/sysctl-monitor/sysctl-monitor.bpf.c:3:
./vmlinux.h:60263:3: warning: declaration does not declare anything [-Wmissing-declarations]
 60263 |                 struct ns_tree;
       |                 ^~~~~~~~~~~~~~
./vmlinux.h:80251:2: warning: declaration does not declare anything [-Wmissing-declarations]
 80251 |         struct __fs_path;
       |         ^~~~~~~~~~~~~~~~
./vmlinux.h:96184:2: warning: declaration does not declare anything [-Wmissing-declarations]
 96184 |         struct freelist_tid;
       |         ^~~~~~~~~~~~~~~~~~~
./vmlinux.h:114441:2: warning: declaration does not declare anything [-Wmissing-declarations]
 114441 |         struct renamedata;
        |         ^~~~~~~~~~~~~~~~~
./vmlinux.h:118480:2: warning: declaration does not declare anything [-Wmissing-declarations]
 118480 |         union pipe_index;
        |         ^~~~~~~~~~~~~~~~
./vmlinux.h:130452:4: warning: declaration does not declare anything [-Wmissing-declarations]
 130452 |                         struct freelist_counters;
        |                         ^~~~~~~~~~~~~~~~~~~~~~~~
6 warnings generated.

B). gcc-bpf

meson setup -Dbpf-compiler=gcc build

[1040/2458] Generating src/network/bpf/sysctl-monitor/sysctl-monitor.bpf.unstripped.o with a custom command
In file included from ../src/network/bpf/sysctl-monitor/sysctl-monitor.bpf.c:3:
./vmlinux.h:60263:31: warning: declaration does not declare anything
60263 |                 struct ns_tree;
      |                               ^
./vmlinux.h:80251:25: warning: declaration does not declare anything
80251 |         struct __fs_path;
      |                         ^
./vmlinux.h:96184:28: warning: declaration does not declare anything
96184 |         struct freelist_tid;
      |                            ^
./vmlinux.h:114441:26: warning: declaration does not declare anything
114441 |         struct renamedata;
       |                          ^
./vmlinux.h:118480:25: warning: declaration does not declare anything
118480 |         union pipe_index;
       |                         ^
./vmlinux.h:130452:49: warning: declaration does not declare anything
130452 |                         struct freelist_counters;
       |                                                 ^

[1] https://git.kernel.org/torvalds/c/639f58a0f480
    "bpftool: Fix build warnings due to MS extensions"

Signed-off-by: Haiyue Wang <haiyuewa@163.com>
(cherry picked from commit 568fe0294ddf273a6036fec6a4e9a962c036b5b4)
2026-02-06 19:33:53 +00:00
Mike Yuan
523c6f9ca0 bus-unit-util: ReloadSignal is a Service property
Follow-up for c133545430897ece77a2066bc740c4a8f7b781e5

(cherry picked from commit fd993483531d6ca7c4a5e58eb6194936cf04b386)
2026-02-06 19:33:53 +00:00
Mike Yuan
c6e4b50bea core/service: set unit log context in helper processes that bypass cgroup
Since these helper processes aren't spawned in the unit cgroup,
let's explicitly attach unit log context so that all logging gets
attributed to the unit, including the ones done in library calls.

(cherry picked from commit 4f25248b6e69855b4da6d01690821b9359928edc)
2026-02-06 19:33:53 +00:00
Fletcher Woodruff
93cbec8108 resolve: use strcmp when comparing DnsServer names
This fixes an issue where duplicate DNS Servers are added to
to resolv.conf files even when all fields are the same.

(cherry picked from commit 65eebee9bfd167266d51d6b777955f74a4ec67d0)
2026-02-06 19:33:53 +00:00
Luca Boccassi
8d1c5af03f core: gracefully skip unknown policy designators in RootImagePolicy et al (#40060)
Usually we gracefully ignore unknown configuration parameters, so that
service files can be written by upstreams and used across a variegated
range of distributions with various versions of systemd, to avoid
forcing users to the minimum common denominator and only adding settings
that are supported by the oldest distro supported.

Image policies do not behave like this, and any unknown partition or
policy designator causes the whole unit to fail to parse and a hard
error.

Change it so that parsing RootImagePolicy and friends via unit file or
D-Bus logs but otherwise ignores unknown specifiers, like other options
do.

This allows us to add new specifiers in the future, and users to adopt
them immediately.

Follow-up for d452335aa47fb1f1b11dc75bc462697431e64af3

(cherry picked from commit 7c0afcdde22d3d94fd23bfd0e473c263aaf54e8a)
2026-02-06 19:33:53 +00:00
Antonio Alvarez Feijoo
ee3d304c64 vmspawn: fix typo in log specifier
Follow-up for 179dcf924f7d0ac9398f54baeb39b47abd23aeaf

(cherry picked from commit 2ed0cc458f333f8f15ae6e9012050738ab8a1e3c)
2026-02-06 19:33:53 +00:00
Luca Boccassi
a9d621af05 mkosi: drop gh from mkosi-tools debian/ubuntu
It was removed from testing so building images fails

(cherry picked from commit c78d18096df480c6e0d3ed0a29833492ae865e54)
2026-02-06 19:33:53 +00:00
Luca Boccassi
ff9c387f19 basic: add GUEST_MEMFD_MAGIC from 6.19
1/1815 systemd:kernel-filesystem-magics FAIL 0.05s exit status 1
――――――――――――――――――――――――――――――――――――― ✀  ―――――――――――――――――――
stderr:
kernel knows additional filesystem magics: GUEST_MEMFD_MAGIC

(cherry picked from commit f9a6c04d144a3574f379f72e0b73559dedb5d5c2)
2026-02-06 19:33:53 +00:00
Luca Boccassi
546d13deba include: update kernel headers from v6.19~rc1
(cherry picked from commit e20e9d29687efe681d2980872557ff22d733757b)
2026-02-06 19:33:53 +00:00
208 changed files with 2126 additions and 1029 deletions

View File

@ -20,8 +20,7 @@
(nxml-mode . ((nxml-child-indent . 2)
(fill-column . 109)))
(meson-mode . ((meson-indent-basic . 8)))
(sh-mode . ((sh-basic-offset . 4)
(sh-indentation . 4)))
(sh-mode . ((sh-indentation . 4)))
(awk-mode . ((c-basic-offset . 8)))
(nil . ((indent-tabs-mode . nil)
(tab-width . 8)

View File

@ -18,6 +18,8 @@ body:
If a distro build is used, please just paste the package version, e.g. `systemd-257.3-7.fc42.x86_64`.
See https://github.com/systemd/systemd-stable/tags for the list of most recent releases.
For older version please use distribution trackers (see https://systemd.io/CONTRIBUTING#filing-issues).
A repository with packages built from latest main for the major distributions and architectures is available from our
[OBS project for testing purposes.](https://software.opensuse.org//download.html?project=system%3Asystemd&package=systemd)
placeholder: '257.x'
validations:
required: true

View File

@ -51,9 +51,9 @@ jobs:
env: ${{ matrix.env }}
steps:
- name: Repository checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Setup python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
with:
python-version: ${{ matrix.python-version }}
- name: Build check

View File

@ -61,14 +61,14 @@ jobs:
sanitizer: ${{ matrix.sanitizer }}
output-sarif: true
- name: Upload Crash
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
if: failure() && steps.build.outcome == 'success'
with:
name: ${{ matrix.sanitizer }}-${{ matrix.architecture }}-artifacts
path: ./out/artifacts
- name: Upload Sarif
if: always() && steps.build.outcome == 'success'
uses: github/codeql-action/upload-sarif@51f77329afa6477de8c49fc9c7046c15b9a4e79d
uses: github/codeql-action/upload-sarif@b20883b0cd1f46c72ae0ba6d1090936928f9fa30
with:
# Path to SARIF file relative to the root of the repository
sarif_file: cifuzz-sarif/results.sarif

View File

@ -42,10 +42,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Initialize CodeQL
uses: github/codeql-action/init@51f77329afa6477de8c49fc9c7046c15b9a4e79d
uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql-config.yml
@ -60,7 +60,7 @@ jobs:
fi
- name: Autobuild
uses: github/codeql-action/autobuild@51f77329afa6477de8c49fc9c7046c15b9a4e79d
uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@51f77329afa6477de8c49fc9c7046c15b9a4e79d
uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30

View File

@ -24,8 +24,8 @@ jobs:
if: github.repository == 'systemd/systemd' || github.repository == 'systemd/systemd-stable'
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: systemd/mkosi@5a476a92deca8ad54869e5d416217aa1bb137b25
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- uses: systemd/mkosi@14d2d37a1923c03062f55454b2b61d0c64db6238
# Freeing up disk space with rm -rf can take multiple minutes. Since we don't need the extra free space
# immediately, we remove the files in the background. However, we first move them to a different location
@ -127,7 +127,7 @@ jobs:
--max-lines 300
- name: Archive failed test journals
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
if: failure() && (github.repository == 'systemd/systemd' || github.repository == 'systemd/systemd-stable')
with:
name: ci-coverage-${{ github.run_id }}-${{ github.run_attempt }}-arch-rolling-failed-test-journals

View File

@ -22,7 +22,7 @@ jobs:
COVERITY_SCAN_NOTIFICATION_EMAIL: "${{ secrets.COVERITY_SCAN_NOTIFICATION_EMAIL }}"
steps:
- name: Repository checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
# Reuse the setup phase of the unit test script to avoid code duplication
- name: Install build dependencies
run: |

View File

@ -30,7 +30,7 @@ jobs:
name: Pull Request Metadata
- name: Repository checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
fetch-depth: 0

View File

@ -23,12 +23,12 @@ jobs:
steps:
- name: Repository checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
fetch-depth: 0
- name: Differential ShellCheck
uses: redhat-plumbers-in-action/differential-shellcheck@dd551ce780d8af741f8cd8bab6982667b906b457
uses: redhat-plumbers-in-action/differential-shellcheck@d965e66ec0b3b2f821f75c8eff9b12442d9a7d1e
with:
# exclude all `.in` files because they may contain unsupported syntax, and they have to be preprocessed first
# TEMPORARY: exclude bash completion files, they would generate too many defects in Code scanning dashboard (600+)

View File

@ -16,14 +16,14 @@ jobs:
steps:
- name: Repository checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- id: metadata
name: Gather Pull Request Metadata
uses: redhat-plumbers-in-action/gather-pull-request-metadata@5da2967931dd7c4b9ccd22f49b045e2c1f05165b
uses: redhat-plumbers-in-action/gather-pull-request-metadata@b86d1eaf7038cf88a56b26ba3e504f10e07b0ce5
- name: Upload Pull Request Metadata artifact
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
with:
name: Pull Request Metadata
path: ${{ steps.metadata.outputs.metadata-file }}

View File

@ -20,7 +20,7 @@ jobs:
template: [ bug_report.yml, feature_request.yml ]
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Parse issue form
uses: stefanbuck/github-issue-parser@1e5bdee70d4b3e066a33aa0669ab782943825f94
@ -29,7 +29,7 @@ jobs:
template-path: .github/ISSUE_TEMPLATE/${{ matrix.template }}
- name: Set labels based on component field
uses: redhat-plumbers-in-action/advanced-issue-labeler@0db433d412193574252480b4fc22f2e4319a4ea3
uses: redhat-plumbers-in-action/advanced-issue-labeler@b80ae64e3e156e9c111b075bfa04b295d54e8e2e
with:
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
template: ${{ matrix.template }}

View File

@ -30,11 +30,11 @@ jobs:
steps:
- name: Repository checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
if: github.event_name == 'pull_request'
- name: Label PR based on policy in labeler.yml
uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9
uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b
if: startsWith(github.event_name, 'pull_request') && github.base_ref == 'main' && github.event.action != 'closed'
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
@ -42,7 +42,7 @@ jobs:
sync-labels: false
- name: Set or remove labels based on systemd development workflow
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd
if: startsWith(github.event_name, 'pull_request') && github.event.action != 'closed' && !github.event.pull_request.draft
with:
script: |
@ -83,7 +83,7 @@ jobs:
}
- name: Add please-review label on command in issue comment
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd
if: github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/please-review')
with:
script: |
@ -95,7 +95,7 @@ jobs:
})
- name: Remove specific labels when PR is closed or merged
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd
if: startsWith(github.event_name, 'pull_request') && github.event.action == 'closed'
with:
script: |

View File

@ -23,13 +23,13 @@ jobs:
steps:
- name: Repo checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
# We need a full repo clone
fetch-depth: 0
- name: Lint Code Base
uses: super-linter/super-linter/slim@502f4fe48a81a392756e173e39a861f8c8efe056
uses: super-linter/super-linter/slim@12562e48d7059cf666c43a4ecb0d3b5a2b31bd9e
env:
DEFAULT_BRANCH: main
MULTI_STATUS: false
@ -37,8 +37,9 @@ jobs:
VALIDATE_GITHUB_ACTIONS: true
LINTER_RULES_PATH: .github/linters
GITHUB_ACTIONS_CONFIG_FILE: actionlint.yml
ENABLE_GITHUB_PULL_REQUEST_SUMMARY_COMMENT: false
- uses: systemd/mkosi@5a476a92deca8ad54869e5d416217aa1bb137b25
- uses: systemd/mkosi@14d2d37a1923c03062f55454b2b61d0c64db6238
- name: Check that tabs are not used in Python code
run: sh -c '! git grep -P "\\t" -- src/core/generate-bpf-delegate-configs.py src/boot/generate-hwids-section.py src/ukify/ukify.py test/integration-tests/integration-test-wrapper.py'

View File

@ -166,8 +166,8 @@ jobs:
shim: 0
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: systemd/mkosi@5a476a92deca8ad54869e5d416217aa1bb137b25
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- uses: systemd/mkosi@14d2d37a1923c03062f55454b2b61d0c64db6238
# Freeing up disk space with rm -rf can take multiple minutes. Since we don't need the extra free space
# immediately, we remove the files in the background. However, we first move them to a different location
@ -311,7 +311,7 @@ jobs:
"${MAX_LINES[@]}"
- name: Archive failed test journals
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
if: failure() && (github.repository == 'systemd/systemd' || github.repository == 'systemd/systemd-stable')
with:
name: ci-mkosi-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.distro }}-${{ matrix.release }}-${{ matrix.runner }}-failed-test-journals

View File

@ -1,6 +1,6 @@
meson==1.8.3 \
--hash=sha256:ef02b806ce0c5b6becd5bb5dc9fa67662320b29b337e7ace73e4354500590233 \
--hash=sha256:f118aa910fc0a137cc2dd0122232dbf82153d9a12fb5b0f5bb64896f6a157abf
meson==1.10.1 \
--hash=sha256:c42296f12db316a4515b9375a5df330f2e751ccdd4f608430d41d7d6210e4317 \
--hash=sha256:fe43d1cc2e6de146fbea78f3a062194bcc0e779efc8a0f0d7c35544dfb86731f
ninja==1.11.1.4 \
--hash=sha256:055f386fb550c2c9d6157e45e20a84d29c47968876b9c5794ae2aec46f952306 \
--hash=sha256:096487995473320de7f65d622c3f1d16c3ad174797602218ca8c967f51ec38a0 \

View File

@ -29,12 +29,12 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Run analysis
uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
with:
results_file: results.sarif
results_format: sarif

View File

@ -40,7 +40,7 @@ jobs:
runner: ubuntu-24.04-s390x
steps:
- name: Repository checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Install build dependencies
run: |
# Drop XDG_* stuff from /etc/environment, so we don't get the user

View File

@ -36,6 +36,9 @@ Daniel Stekloff <dsteklof@us.ibm.com>
Daniel Șerbănescu <dasj19@users.noreply.github.com>
Dann Frazier <dann.frazier@canonical.com>
Dave Reisner <dreisner@archlinux.org> <d@falconindy.com>
David Rheinsberg <david@readahead.eu>
David Rheinsberg <dh.herrmann@gmail.com>
David Rheinsberg <dh.herrmann@googlemail.com>
David Santamaría Rogado <howl.nsp@gmail.com>
David Zeuthen <david@fubar.dk>
David Zeuthen <david@fubar.dk> <davidz@redhat.com>
@ -91,7 +94,9 @@ José Bollo <jose.bollo@iot.bzh> <jobol@nonadev.net>
Jun Bo Bi <jambonmcyeah@gmail.com>
Justin Capella <justincapella@gmail.com> <b1tninja@users.noreply.github.com>
Jérémy Rosen <jeremy.rosen@enst-bretagne.fr>
Jörg Behrmann <behrmann@physik.fu-berlin.de>
Jürg Billeter <j@bitron.ch>
Kai Lüke <kailuke@microsoft.com>
Karl Kraus <karl.kraus@tum.de> <laqueray@gmail.com>
Kay Sievers <kay@vrfy.org>
Kay Sievers <kay@vrfy.org> <kay.sievers@suse.de>

2
NEWS
View File

@ -4048,7 +4048,7 @@ CHANGES WITH 255:
* A new component "systemd-storagetm" has been added, which exposes all
local block devices as NVMe-TCP devices, fully automatically. It's
hooked into a new target unit storage-target-mode.target that is
suppsoed to be booted into via
supposed to be booted into via
rd.systemd.unit=storage-target-mode.target on the kernel command
line. This is intended to be used for installers and debugging to
quickly get access to the local disk. It's inspired by MacOS "target

5
README
View File

@ -123,7 +123,8 @@ REQUIREMENTS:
CONFIG_SECCOMP
CONFIG_SECCOMP_FILTER (required for seccomp support)
CONFIG_KCMP (for the kcmp() syscall, used to be under
CONFIG_CHECKPOINT_RESTORE before ~5.12)
CONFIG_CHECKPOINT_RESTORE before ~5.12;
not needed after 6.10)
CONFIG_NET_SCHED
CONFIG_NET_SCH_FQ_CODEL
@ -191,7 +192,7 @@ REQUIREMENTS:
This is shipped by default, see modprobe.d/systemd.conf.
Required for systemd-nspawn:
CONFIG_DEVPTS_MULTIPLE_INSTANCES or Linux kernel >= 4.7
CONFIG_DEVPTS_MULTIPLE_INSTANCES (removed and unneeded since 4.7)
Required for systemd-oomd:
CONFIG_PSI

View File

@ -234,6 +234,24 @@ SPDX-License-Identifier: LGPL-2.1-or-later
const char *input);
```
- When passing `NULL` or another value meaning "unset" to a function, use a comment
to indicate the argument name to make it more clear where we're passing an "unset"
value.
Bad:
```c
myfunction(NULL, NULL, NULL);
```
Good:
```c
myfunction(/* a= */ NULL, /* b= */ NULL, /* c= */ NULL);
```
This guidance should be applied tree-wide, including in test files.
- Please do not introduce new circular dependencies between header files.
Effectively this means that if a.h includes b.h, then b.h cannot include a.h,
directly or transitively via another header. Circular header dependencies can

View File

@ -36,6 +36,10 @@ or via your distribution's package manager. Note that systemd regularly adopts
newer mkosi features that are not in an official release yet so there's a good
chance that your distribution's packaged version of mkosi will be too old.
Make sure to read the "Unprivileged User Namespaces" section in the mkosi documentation
(run `mkosi documentation` to view the mkosi docs) and apply any necessary instructions
to make sure unprivileged user namespaces work on your system.
Then, you can build, run and test systemd executables as follows:
```sh

View File

@ -1,339 +1 @@
---
title: OSC 3008: Hierarchical Context Signalling
category: Interfaces
layout: default
SPDX-License-Identifier: LGPL-2.1-or-later
---
# OSC 3008: Hierarchical Context Signalling
A terminal connects a user with programs. Control of the program side of
terminals is typically passed around to various different components while the
user is active: a shell might pass control to a process it invokes. If that
process is `run0` then primary control is passed to the privileged session of
the target user. If `systemd-nspawn` is invoked to start a container, primary
control is passed to that container, and so on.
A terminal emulator might be interested to know which component is currently in
primary control of the program side of a terminal. OSC 3008 is a mechanism to
inform it about such contexts. Each component taking over control can inform
the terminal emulators that a new context begins now, and then use the terminal
or pass control down to further apps, which can introduce contexts. Each
context may carry various descriptive metadata fields.
## Status
This OSC sequence has been invented by the systemd project and is generated by
systemd. Currently, no terminal application is known that consumes these
sequences.
## Use Cases
Terminal emulators can use hierarchical context information:
1. To introduce markers/bookmarks in the output that the user can jump between.
2. To visually identify output from different contexts. For example the
background of the associated output can be tinted in a reddish tone when
privileges are acquired, and similar.
3. Meta information on specific output can be shown in a tooltip or similar
4. Programs (and all subcontexts) can be killed via a right-click menu on the
output they generate.
5. Similar, a right-click menu might offer an item to offer opening a new
interactive shell in the same working directory that was current on the
selected context.
6. Failed commands or aborted sessions can be marked requesting user attention.
## Context Types
There are various types of contexts defined by this specification:
1. `boot` → a booted system initiates this context early at boot. (systemd's
PID 1 generates this on `/dev/console`.)
2. `container` → a container manager initialized an interactive connection to a
container. (`systemd-nspawn` generates this when interactively invoking a
container. `machinectl login`, `machinectl shell` do this too.)
3. `vm` → a VM manager initialized a terminal connection to a
VM. (`systemd-vmspawn` generates this when interactively invoking a VM, as
one example.)
4. `elevate` → when the user interactively acquired higher privileges. (`run0`
initiates a context of this type whenever the user invokes it to acquire
root privileges.)
5. `chpriv` → similar, but when the user acquired *different* privileges, not
necessarily higher ones. (`run0` initiates a context of this type whenever
the user invokes it to acquire non-root privileges of another user.)
5. `subcontext` → similar, but the source and target privileges where
identical. (`run0` initiates a context of this type whenever the user
invokes it to acquire privileges of the user itself.)
6. `remote` → a user invoked a tool such as `ssh` to connect to a remote
system.
7. `shell` → an interactive terminal shell initiates this context
8. `command` → a shell interactively invokes a new program.
9. `app` → an interactive program may initiate this context.
10. `service` → the service manager invokes an interactive service on the terminal
11. `session` → a login session of the user is initialized.
## Semantics
Contexts in the sense of OSC 3008 are hierarchical, and describe a tree
structure: whenever a new context is opened it becomes the new active context,
and the previously active context becomes its parent (if there is one). Only
one context is currently active, but previously opened contexts remain valid in
the background. Any other data written or read should be considered associated
with the currently active context.
Each context carries an identifier, chosen by the component opening the
context. The identifier can chosen freely, but must not be longer than 64
characters. The characters may be in the 32…126 byte range. Identifiers should
be universally unique, for example randomly generated. A freshly generated UUID
would work well for this, but this could also be something like the Linux boot
ID combined with the 64bit inode number of Linux pidfds, or something hashed
from it.
Fundamentally, there are two OSC 3008 commands defined:
1. OSC "`3008;start=`" … (the *start sequence*) → this initiates, updates or
indicates a return to a context. It carries a context identifier, and
typically some metadata. This may be sent to first initiate a context. If
sent again for the same context ID that was initiated already this indicates
an update of the existing context. In this case, *any* previously set
metadata fields for the context are flushed out, reset to their defaults,
and then reinitialized from the newly supplied data. Also, in this case any
subcontexts of the contexts are implicitly terminated.
2. OSC "`3008;end=`" … (the *end sequence*) → this terminates a context. It
carries a context identifier to close, initiated before with OSC
"`3008;start=`". It may also carry additional metadata.
## General Syntax
This builds on ECMA-48, and reuses the OSC and ST concepts introduced there.
For sequences following this specification it is recommended to encode OSC as
0x1B 0x5D, and ST as 0x1B 0x5C.
ECMA-48 only allows characters from the range 0x20…0x7e (i.e. 32…126) inside
OSC sequences. However, most terminal emulators nowadays allow the ASCII byte
range > 0x7f in the OSC sequences they process, and so does this
specification. Control characters (< 0x20 and 0x7f) are not allowed. The
semicolon character ("`;`") which is used as field separator by this
specification shall be replaced by "`\x3b`" and the backslash character
("`\`") shall be replaced by "`\x5c`". All textual fields must be encoded in
UTF-8, and then escaped with these two replacements.
The start sequence begins with OSC, followed by the string `3008;start=`,
followed by the context ID. This is then followed by any number of metadata
fields, including none. Metadata fields begin with a semicolon (`;`) followed
by in a string identifying the type of field, followed by an equal sign (`=`),
and the field value. The sequence ends in ST.
The end sequence begins with OSC, followed by the string `3008;end=`, followed
by the context ID, and a series of metadata fields in the same syntax as for
the start sequence. The sequence ends in ST.
## Metadata Fields
The following fields are currently defined for the start sequence:
| Field | Context Types | Description |
|---------------|---------------|-------------------------------------------------------------------------------------------------------------|
| `type=` | *all* | Declares the context type, one of the types described above |
| `user=` | *all* | UNIX user name the process issuing the sequence runs as |
| `hostname=` | *all* | UNIX host name of the system the process issuing the sequence runs on |
| `machineid=` | *all* | The machine ID (i.e. `/etc/machine-id`) of the system the process issuing the sequence runs on |
| `bootid=` | *all* | The boot ID (i.e. `/proc/sys/kernel/random/boot_id`) of the system the process issuing the sequence runs on |
| `pid=` | *all* | The numeric PID of the process issuing the sequence, in decimal notation |
| `pidfdid=` | *all* | The 64bit inode number of the pidfd of the process issuing the sequence, in decimal notation |
| `comm=` | *all* | The process name (i.e. `/proc/$PID/comm`, `PR_GET_NAME`) of the process issuing the sequence |
| `cwd=` | `shell`, `command` | The current working directory |
| `cmdline=` | `command` | The full command line of the invoked command |
| `vm=` | `vm` | The name of the VM being invoked |
| `container=` | `container` | The name of the container being invoked |
| `targetuser=` | `elevate`, `chpriv`, `vm`, `container`, `remote`, `session` | Target UNIX user name |
| `targethost=` | `remote` | Target UNIX, DNS host name, or IP address |
| `sessionid=` | `session` | New allocated session ID |
The following fields are currently defined for the end sequence:
| Field | Context Types | Description |
|---------------|---------------|-------------------------------------------------------------------------------------------------------------|
| `exit=` | `command` | One of `success`, `failure`, `crash`, `interrupt`, indicating how the program terminated |
| `status=` | `command` | The command's numeric exit status, i.e. the 0…255 value a program returns |
| `signal=` | `command` | The termination signal of the command, if it died abnormally. A symbolic signal name. (`SIGKILL`, …) |
All fields are optional, including the context type. However, it is generally
recommended to always include the first 7 fields listed above, to make it easy
to pinpoint the origin of a context in a race-free fashion, without any
ambiguities.
The order of the metadata fields is undefined, they may appear in any order
(including that `type=` is specified at the very end or in the middle!). Note
that `start=` and `end=` are not considered metadata fields but part of the
start sequence, and hence must always appear right after OSC.
## Processing, Limits, Security
All context information provided like this should be considered auxiliary and
to some degree redundant information. Hence, it would be wise for a terminal
to enforce limits on various resources, dropping additional data once these
limits are hit. Most importantly, a maximum stacking depth should probably
enforced: any attempts to initiate further contexts should be ignored once the
stack limit is hit (i.e. the earlier contexts should be kept, the later
contexts be discarded, not the opposite). Overly long fields should be
discarded (or potentially truncated, depending on the field type). This
specification does not recommend any specific stack or string limits for now.
The usual terminal reset sequences should *not* affect the stack of contexts
(this is a safety feature: a program down the stack should not be able to
affect the stack further up, possibly hiding relevant information). A temporary
TTY hangup (`vhangup()`) should result in a full reset of the stack.
All provided data should be processed in a lenient, graceful fashion: if a
sequence contains invalid fields, those fields should be ignored, but the rest
of the fields should still be used. In particular, unknown fields should be
ignored.
The fields provided in these sequences should not contain sensitive
information. Context IDs should not be considered confidential, but it is
strongly recommended to generate them in a fashion that guarantees their
sufficient uniqueness and avoids accidental or intended clashes with other
contents.
## Examples
1. A new container `foobar` has been invoked by user `lennart` on host `zeta`:
`OSC "3008;start=bed86fab93af4328bbed0a1224af6d40;type=container;user=lennart;hostname=zeta;machineid=3deb5353d3ba43d08201c136a47ead7b;bootid=d4a3d0fdf2e24fdea6d971ce73f4fbf2;pid=1062862;pidfdid=1063162;comm=systemd-nspawn;container=foobar" ST`
2. This context ends: `OSC "3008;end=bed86fab93af4328bbed0a1224af6d40" ST`
## Syntax in ABNF
```abnf
OSC = %x1B %x5D
ST = %x1B %x5C
DECIMAL = "0"-"9"
HEX = "0"-"9" / "A"-"F" / "a-f"
ID128 = 32*36(HEX / "-")
UINT64 = 1*20DECIMAL
ESCSEMICOLON = "\x3b"
ESCBACKSLASH = "\x5c"
SAFE = %x20-3a / %x3c-5b / %x5d-7e / ESCSEMICOLON / ESCBACKSLASH
CTXID = 1*64SAFE
TYPEENUM = "service" / "session" / "shell" / "command" / "vm" / "container" / "elevate" / "chpriv" / "subcontext" / "remote" / "boot" / "app"
TYPE = "type=" TYPEENUM
USER = "user=" 1*255SAFE
HOSTNAME = "hostname=" 1*255SAFE
MACHINEID = "machineid=" 1D128
BOOTID = "bootid=" ID128
PID = "pid=" UINT64
PIDFDID = "pidfdid=" UINT64
COMM = "comm=" 1*255SAFE
CWD = "cwd=" 1*255SAFE
CMDLINE = "cmdline=" *255SAFE
VM = "vm=" 1*255SAFE
CONTAINER = "container=" 1*255SAFE
TARGETUSER = "targetuser=" 1*255SAFE
TARGETHOST = "targethost=" 1*255SAFE
SESSIONID = "sessionid=" 1*255SAFE
STARTFIELD = TYPE / USER / HOSTNAME / MACHINEID / BOOTID / PID / PIDFDID / COMM / CWD / CMDLINE / VM / CONTAINER / TARGETUSER / TARGETHOST / SESSIONID
STARTSEQ = OSC "3008;start=" CTXID *(";" STARTFIELD) ST
EXITENUM = "success" / "failure" / "crash" / "interrupt"
SIGNALENUM = "SIGBUS" / "SIGTRAP" / "SIGABRT" / "SIGSEGV" / …
EXIT = "exit=" EXITENUM
STATUS = "status=" UINT64
SIGNAL = "signal=" SIGNALENUM
ENDFIELD = EXIT / STATUS / SIGNAL
ENDSEQ = OSC "3008;end=" CTXID *(";" ENDFIELD) ST
```
## Known OSC Prefixes
Here's a list of OSC prefixes used by the various sequences currently in public
use in various terminal emulators. It's not going to be complete, but I tried
to do some reasonably thorough research to avoid conflicts with the new OSC
sequence defined above.
| OSC Prefix | Purpose |
|----------------:|------------------------------------------------------------|
| `OSC "0;…"` | Icon name + window title |
| `OSC "1;…"` | Icon name |
| `OSC "2;…"` | Window title |
| `OSC "3;…"` | X11 property |
| `OSC "4;…"` | Palette |
| `OSC "5;…"` | Special palette |
| `OSC "6;…"` | Disable special color |
| `OSC "7;…"` | Report cwd |
| `OSC "8;…"` | Hyperlink |
| `OSC "9;…"` | Progress bar (conemu) [conflict: also growl notifications] |
| `OSC "10;…"` | Change colors |
| `OSC "11;…"` | " |
| `OSC "12;…"` | " |
| `OSC "13;…"` | " |
| `OSC "14;…"` | " |
| `OSC "15;…"` | " |
| `OSC "16;…"` | " |
| `OSC "17;…"` | " |
| `OSC "18;…"` | " |
| `OSC "19;…"` | " |
| `OSC "21;…"` | Query colors (kitty) |
| `OSC "22;…"` | Cursor shape |
| `OSC "46;…"` | Log file |
| `OSC "50;…"` | Set font |
| `OSC "51;…"` | Emacs shell |
| `OSC "52;…"` | Manipulate selection data (aka clipboard) |
| `OSC "60;…"` | Query allowed |
| `OSC "61;…"` | Query disallowed |
| `OSC "99;…"` | Notifications (kitty) |
| `OSC "104;…"` | Reset color |
| `OSC "105;…"` | Enable/disable special color |
| `OSC "110;…"` | Reset colors |
| `OSC "111;…"` | " |
| `OSC "112;…"` | " |
| `OSC "113;…"` | " |
| `OSC "114;…"` | " |
| `OSC "115;…"` | " |
| `OSC "116;…"` | " |
| `OSC "117;…"` | " |
| `OSC "118;…"` | " |
| `OSC "119;…"` | " |
| `OSC "133;…"` | Prompt/command begin/command end (finalterm/iterm2) |
| `OSC "440;…"` | Audio (mintty) |
| `OSC "633;…"` | vscode action (Windows Terminal) |
| `OSC "666;…"` | "termprop" (vte) |
| `OSC "701;…"` | Locale (mintty) |
| `OSC "777;…"` | Notification (rxvt) |
| `OSC "3008;…"` | This specification |
| `OSC "7704;…"` | ANSI colors (mintty) |
| `OSC "7750;…"` | Emoji style (mintty) |
| `OSC "7770;…"` | Font size (mintty) |
| `OSC "7771;…"` | Glyph coverage (mintty) |
| `OSC "7721:…"` | Copy window title (mintty) |
| `OSC "7777;…"` | Window size (mintty) |
| `OSC "9001;…"` | Action (Windows Terminal) |
| `OSC "1337;…"` | iterm2 multiplex seeuqnece |
| `OSC "5522;…"` | Clipboard (kitty) |
| `OSC "30001;…"` | Push color onto stack (kitty) |
| `OSC "30101;…"` | Pop color from stack (kitty) |
| `OSC "77119;…"` | Wide chars (mintty) |
[This content has moved to the UAPI group website](https://uapi-group.org/specifications/specs/osc_context/)

View File

@ -40,7 +40,9 @@ It is easy to write additional agents. The basic algorithm to follow looks like
* You'll find the PID of the client asking the question in the `PID=` field in the `[Ask]` section
(Before asking your question use `kill(PID, 0)` and ignore the file if this returns `ESRCH`;
there's no need to show the data of this field but if you want to you may)
* `Echo=` specifies whether the input should be obscured. If this field is missing or is `Echo=0`, the input should not be shown.
* `Echo=` specifies whether the input should be obscured. If this field is missing or is `Echo=0`, the input should not be shown as-is.
* `Silent=` specifies whether the input should have any indication. If this field is `Silent=1`, nothing should be printed for any input.
* `AcceptCached=` specifies whether a cached password is acceptable or not. If this field is missing or is `AcceptCached=0`, the password should not be provided from a cache.
* The socket to send the response to is configured via `Socket=` in the `[Ask]` section. It is a `AF_UNIX`/`SOCK_DGRAM` socket in the file system.
* Ignore files where the time specified in the `NotAfter=` field in the `[Ask]` section is in the past.
The time is specified in usecs, and refers to the `CLOCK_MONOTONIC` clock. If `NotAfter=` is `0`, no such check should take place.
@ -100,4 +102,4 @@ now available, with the same protocol as the system-wide
counterpart. Unprivileged, per-directory agents should watch this directory in
parallel to the system-wide one. Unprivileged queriers (i.e. clients to these
agents) should pick the per-user directory to place their password request
files in.
files in. If the directory does not exist, agents may create it.

851
docs/sysupdate-objects.svg Normal file
View File

@ -0,0 +1,851 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="316.28293mm"
height="306.23108mm"
viewBox="0 0 316.28293 306.23108"
version="1.1"
id="svg1"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
sodipodi:docname="drawing.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.74118967"
inkscape:cx="540.34752"
inkscape:cy="712.36826"
inkscape:window-width="1920"
inkscape:window-height="1043"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1">
<marker
style="overflow:visible"
id="marker10"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Triangle arrow"
markerWidth="3"
markerHeight="3"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path10" />
</marker>
<marker
style="overflow:visible"
id="Triangle"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Triangle arrow"
markerWidth="3"
markerHeight="3"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path135" />
</marker>
<marker
style="overflow:visible"
id="Triangle-8"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Triangle arrow"
markerWidth="3"
markerHeight="3"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path135-9" />
</marker>
<marker
style="overflow:visible"
id="marker10-2"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Triangle arrow"
markerWidth="3"
markerHeight="3"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path10-6" />
</marker>
<marker
style="overflow:visible"
id="Triangle-8-6"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Triangle arrow"
markerWidth="3"
markerHeight="3"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path135-9-3" />
</marker>
<marker
style="overflow:visible"
id="marker10-2-1"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Triangle arrow"
markerWidth="3"
markerHeight="3"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path10-6-7" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-6.3824526,-3.5266833)">
<rect
style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
id="rect3"
width="131.36539"
height="128.86658"
x="6.7824521"
y="61.045975"
rx="5.0009999"
ry="5" />
<g
id="g2">
<g
id="g1">
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1"
width="52.697277"
height="12.002567"
x="15.773956"
y="100.73308"
rx="6.8996673"
ry="4.9446111" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="64.392487"
y="110.51707"
id="text1"><tspan
sodipodi:role="line"
id="tspan1"
style="stroke-width:0.264583"
x="64.392487"
y="110.51707">Instance</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="113.87379"
y="110.50744"
id="text2"><tspan
sodipodi:role="line"
id="tspan2"
style="stroke-width:0.264583"
x="113.87379"
y="110.50744">pattern</tspan></text>
</g>
<g
id="g2-3"
transform="translate(0,17.732698)">
<g
id="g1-5">
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-6"
width="52.697277"
height="12.002567"
x="15.773956"
y="100.73308"
rx="6.8996673"
ry="4.9446111" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="64.392487"
y="110.51707"
id="text1-2"><tspan
sodipodi:role="line"
id="tspan1-9"
style="stroke-width:0.264583"
x="64.392487"
y="110.51707">Instance</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="113.87379"
y="110.50744"
id="text2-1"><tspan
sodipodi:role="line"
id="tspan2-2"
style="stroke-width:0.264583"
x="113.87379"
y="110.50744">pattern</tspan></text>
</g>
<g
id="g3">
<g
id="g1-0"
transform="translate(0,35.465397)">
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-62"
width="52.697277"
height="12.002567"
x="15.773956"
y="100.73308"
rx="6.8996673"
ry="4.9446111" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="64.392487"
y="110.51707"
id="text1-6"><tspan
sodipodi:role="line"
id="tspan1-1"
style="stroke-width:0.264583"
x="64.392487"
y="110.51707">Instance</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="113.87379"
y="145.97284"
id="text2-8"><tspan
sodipodi:role="line"
id="tspan2-7"
style="stroke-width:0.264583"
x="113.87379"
y="145.97284">pattern</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="47.416828"
y="162.0649"
id="text3"><tspan
sodipodi:role="line"
id="tspan3"
style="stroke-width:0.264583"
x="47.416828"
y="162.0649">⋮</tspan></text>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="59.971153"
y="74.610878"
id="text4"><tspan
sodipodi:role="line"
id="tspan4"
style="stroke-width:0.264583"
x="59.971153"
y="74.610878">Resource</tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="118.45662"
y="86.030052"
id="text5"><tspan
sodipodi:role="line"
id="tspan5"
style="font-size:6.35px;stroke-width:0.264583"
x="118.45662"
y="86.030052">Partially loaded from .transfer file</tspan></text>
<g
id="g5"
transform="translate(0,-16.876938)">
<rect
style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
id="rect3-3"
width="131.36539"
height="128.86658"
x="190.90001"
y="77.922913"
rx="5.0009999"
ry="5" />
<g
id="g2-7"
transform="translate(184.11755,16.87694)">
<g
id="g1-59">
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-2"
width="52.697277"
height="12.002567"
x="15.773956"
y="100.73308"
rx="6.8996673"
ry="4.9446111" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="64.392487"
y="110.51707"
id="text1-28"><tspan
sodipodi:role="line"
id="tspan1-97"
style="stroke-width:0.264583"
x="64.392487"
y="110.51707">Instance</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="113.87379"
y="110.50744"
id="text2-3"><tspan
sodipodi:role="line"
id="tspan2-6"
style="stroke-width:0.264583"
x="113.87379"
y="110.50744">pattern</tspan></text>
</g>
<g
id="g2-3-1"
transform="translate(184.11755,34.609638)">
<g
id="g1-5-2">
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-6-9"
width="52.697277"
height="12.002567"
x="15.773956"
y="100.73308"
rx="6.8996673"
ry="4.9446111" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="64.392487"
y="110.51707"
id="text1-2-3"><tspan
sodipodi:role="line"
id="tspan1-9-1"
style="stroke-width:0.264583"
x="64.392487"
y="110.51707">Instance</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="113.87379"
y="110.50744"
id="text2-1-9"><tspan
sodipodi:role="line"
id="tspan2-2-4"
style="stroke-width:0.264583"
x="113.87379"
y="110.50744">pattern</tspan></text>
</g>
<g
id="g3-7"
transform="translate(184.11755,16.87694)">
<g
id="g1-0-8"
transform="translate(0,35.465397)">
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-62-4"
width="52.697277"
height="12.002567"
x="15.773956"
y="100.73308"
rx="6.8996673"
ry="4.9446111" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="64.392487"
y="110.51707"
id="text1-6-5"><tspan
sodipodi:role="line"
id="tspan1-1-0"
style="stroke-width:0.264583"
x="64.392487"
y="110.51707">Instance</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="113.87379"
y="145.97284"
id="text2-8-3"><tspan
sodipodi:role="line"
id="tspan2-7-6"
style="stroke-width:0.264583"
x="113.87379"
y="145.97284">pattern</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="231.53438"
y="178.94183"
id="text3-1"><tspan
sodipodi:role="line"
id="tspan3-0"
style="stroke-width:0.264583"
x="231.53438"
y="178.94183">⋮</tspan></text>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="244.0887"
y="91.487816"
id="text4-6"><tspan
sodipodi:role="line"
id="tspan4-3"
style="stroke-width:0.264583"
x="244.0887"
y="91.487816">Resource</tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="302.57416"
y="102.90699"
id="text5-2"><tspan
sodipodi:role="line"
id="tspan5-0"
style="font-size:6.35px;stroke-width:0.264583"
x="302.57416"
y="102.90699">Partially loaded from .transfer file</tspan></text>
</g>
<rect
style="fill:#ff7f2a;fill-opacity:1;stroke:#b56f0d;stroke-width:0.880404;stroke-opacity:1"
id="rect6"
width="111.65157"
height="42.399162"
x="6.8226547"
y="3.9668853"
rx="4.9974012"
ry="6.0599365" />
<text
xml:space="preserve"
style="font-size:6.35px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="92.622543"
y="28.901594"
id="text5-8"><tspan
sodipodi:role="line"
id="tspan5-8"
style="font-size:6.35px;stroke-width:0.264583"
x="92.622543"
y="28.901594">Loaded from .transfer file</tspan></text>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="55.061909"
y="16.949841"
id="text6"><tspan
sodipodi:role="line"
id="tspan6"
style="stroke-width:0.264583"
x="55.061913"
y="16.949841">Transfer</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="39.600597"
y="41.837189"
id="text7"><tspan
sodipodi:role="line"
id="tspan7"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
x="39.600597"
y="41.837189">source</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="113.82346"
y="41.837189"
id="text8"><tspan
sodipodi:role="line"
id="tspan8"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
x="113.82346"
y="41.837189">target</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Triangle)"
d="m 27.129808,44.621394 -0.356973,18.91947"
id="path8"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10)"
d="m 116.01562,40.337739 75.67789,23.203125"
id="path9"
sodipodi:nodetypes="cc" />
<g
id="g16"
transform="translate(-194.19231,210.25601)">
<rect
style="fill:#55d400;fill-opacity:1;stroke:#58b50d;stroke-width:1.12104;stroke-opacity:1"
id="rect10"
width="121.40612"
height="78.56958"
x="217.91293"
y="4.087204"
rx="5.8448224"
ry="8.4007883" />
<text
xml:space="preserve"
style="font-size:6.35px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;stroke-width:0.264583"
x="222.03329"
y="28.901594"
id="text5-8-9"><tspan
sodipodi:role="line"
id="tspan5-8-2"
style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
x="222.03329"
y="28.901594">Set of Instances taken from across</tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
x="222.03329"
y="36.839092"
id="tspan11">all Transfers, matching a certain</tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
x="222.03329"
y="44.776592"
id="tspan12">version; either all source Instances</tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
x="222.03329"
y="52.714092"
id="tspan13">or all target Instances.</tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
x="222.03329"
y="60.651592"
id="tspan14" /><tspan
sodipodi:role="line"
style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
x="222.03329"
y="68.589096"
id="tspan15">For example: verity, root FS,</tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;text-align:start;text-anchor:start;stroke-width:0.264583"
x="222.03329"
y="76.526596"
id="tspan16">and kernel boot image</tspan></text>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="277.00961"
y="16.949841"
id="text10"><tspan
sodipodi:role="line"
id="tspan10"
style="stroke-width:0.264583"
x="277.00961"
y="16.949841">UpdateSet</tspan></text>
</g>
<g
id="g19"
transform="matrix(0.26299485,0,0,0.26299485,127.72763,135.80969)">
<rect
style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
id="rect3-9"
width="131.36539"
height="128.86658"
x="202.28317"
y="291.19574"
rx="5.0009999"
ry="5" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-8"
width="52.697277"
height="12.002567"
x="211.27467"
y="330.88284"
rx="6.8996673"
ry="4.9446111" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-6-1"
width="52.697277"
height="12.002567"
x="211.27467"
y="348.61554"
rx="6.8996673"
ry="4.9446111" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-62-9"
width="52.697277"
height="12.002567"
x="211.27467"
y="366.34824"
rx="6.8996673"
ry="4.9446111" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="242.91754"
y="392.21466"
id="text3-7"><tspan
sodipodi:role="line"
id="tspan3-1"
style="stroke-width:0.264583"
x="242.91754"
y="392.21466">⋮</tspan></text>
<rect
style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
id="rect3-3-6"
width="131.36539"
height="128.86658"
x="386.40073"
y="291.19574"
rx="5.0009999"
ry="5" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-2-6"
width="52.697277"
height="12.002567"
x="395.39221"
y="330.88284"
rx="6.8996673"
ry="4.9446111" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-6-9-1"
width="52.697277"
height="12.002567"
x="395.39221"
y="348.61554"
rx="6.8996673"
ry="4.9446111" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-62-4-8"
width="52.697277"
height="12.002567"
x="395.39221"
y="366.34824"
rx="6.8996673"
ry="4.9446111" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="427.0351"
y="392.21466"
id="text3-1-3"><tspan
sodipodi:role="line"
id="tspan3-0-8"
style="stroke-width:0.264583"
x="427.0351"
y="392.21466">⋮</tspan></text>
<rect
style="fill:#ff7f2a;fill-opacity:1;stroke:#b56f0d;stroke-width:0.880404;stroke-opacity:1"
id="rect6-5"
width="111.65157"
height="42.399162"
x="202.32336"
y="234.11665"
rx="4.9974012"
ry="6.0599365" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Triangle-8)"
d="m 222.63053,274.77115 -0.35698,18.91947"
id="path8-4"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10-2)"
d="m 311.51634,270.4875 75.67789,23.20312"
id="path9-4"
sodipodi:nodetypes="cc" />
</g>
<g
id="g19-6"
transform="matrix(0.26299485,0,0,0.26299485,127.72763,199.17835)">
<rect
style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
id="rect3-9-2"
width="131.36539"
height="128.86658"
x="202.28317"
y="291.19574"
rx="5.0009999"
ry="5" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-8-1"
width="52.697277"
height="12.002567"
x="211.27467"
y="330.88284"
rx="6.8996673"
ry="4.9446111" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-6-1-7"
width="52.697277"
height="12.002567"
x="211.27467"
y="348.61554"
rx="6.8996673"
ry="4.9446111" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-62-9-8"
width="52.697277"
height="12.002567"
x="211.27467"
y="366.34824"
rx="6.8996673"
ry="4.9446111" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="242.91754"
y="392.21466"
id="text3-7-5"><tspan
sodipodi:role="line"
id="tspan3-1-7"
style="stroke-width:0.264583"
x="242.91754"
y="392.21466">⋮</tspan></text>
<rect
style="fill:#008075;fill-opacity:1;stroke:#0d64b5;stroke-width:0.799999;stroke-opacity:1"
id="rect3-3-6-4"
width="131.36539"
height="128.86658"
x="386.40073"
y="291.19574"
rx="5.0009999"
ry="5" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-2-6-1"
width="52.697277"
height="12.002567"
x="395.39221"
y="330.88284"
rx="6.8996673"
ry="4.9446111" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-6-9-1-8"
width="52.697277"
height="12.002567"
x="395.39221"
y="348.61554"
rx="6.8996673"
ry="4.9446111" />
<rect
style="fill:#f13900;stroke:#a93019;stroke-width:0.93445"
id="rect1-62-4-8-5"
width="52.697277"
height="12.002567"
x="395.39221"
y="366.34824"
rx="6.8996673"
ry="4.9446111" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583"
x="427.0351"
y="392.21466"
id="text3-1-3-9"><tspan
sodipodi:role="line"
id="tspan3-0-8-7"
style="stroke-width:0.264583"
x="427.0351"
y="392.21466">⋮</tspan></text>
<rect
style="fill:#ff7f2a;fill-opacity:1;stroke:#b56f0d;stroke-width:0.880404;stroke-opacity:1"
id="rect6-5-5"
width="111.65157"
height="42.399162"
x="202.32336"
y="234.11665"
rx="4.9974012"
ry="6.0599365" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Triangle-8-6)"
d="m 222.63053,274.77115 -0.35698,18.91947"
id="path8-4-3"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10-2-1)"
d="m 311.51634,270.4875 75.67789,23.20312"
id="path9-4-8"
sodipodi:nodetypes="cc" />
</g>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10)"
d="m 142.02963,226.88607 c 29.98558,-7.85336 26.92872,-47.36399 27.13167,-52.37021 2.14182,-52.83172 30.34254,-50.6899 30.34254,-50.6899"
id="path19"
sodipodi:nodetypes="csc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10)"
d="m 142.03149,232.34519 c 29.27163,16.0637 88.04009,-2.54025 88.04009,-2.54025"
id="path20"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10)"
d="m 142.07294,241.56334 c 55.80936,38.16624 88.27271,50.05886 88.27271,50.05886"
id="path21"
sodipodi:nodetypes="cc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -71,3 +71,7 @@ dmi:bvnLENOVO*
# Microsoft Surface 1's chassis type
dmi:bvnMicrosoft Corporation*:pvrSurface with Windows 8 Pro*
ID_CHASSIS=tablet
# GPD Pocket 4 chassis type
dmi:bvnAmericanMegatrendsInternational*:rvnGPD:rnG1628-04*
ID_CHASSIS=convertible

View File

@ -132,6 +132,13 @@ evdev:input:b0003v05ACp025B*
EVDEV_ABS_35=::94
EVDEV_ABS_36=::92
# MacbookPro12,1 (unibody, Early 2015)
evdev:input:b0003v05ACp0273*
EVDEV_ABS_00=::97
EVDEV_ABS_01=::92
EVDEV_ABS_35=::97
EVDEV_ABS_36=::92
# MacBook8,1 (2015), MacBook9,1 (2016), MacBook10,1 (2017)
evdev:name:Apple SPI Touchpad:dmi:*:svnAppleInc.:pnMacBook8,1:*
evdev:name:Apple SPI Touchpad:dmi:*:svnAppleInc.:pnMacBook9,1:*
@ -697,6 +704,13 @@ evdev:name:AlpsPS/2 ALPS GlidePoint:dmi:*svnLENOVO:*pvrLenovoideapadY700-14ISK:*
EVDEV_ABS_35=::27
EVDEV_ABS_36=::29
#Lenovo Y50-70
evdev:name:AlpsPS/2 ALPS GlidePoint:dmi:*svnLENOVO:*pvrLenovoY50-70**
EVDEV_ABS_00=164:3918:37
EVDEV_ABS_01=120:1935:26
EVDEV_ABS_35=164:3918:37
EVDEV_ABS_36=120:1935:26
# Lenovo Ideapad 310S-14ISK
evdev:name:AlpsPS/2 ALPS GlidePoint:dmi:*svnLENOVO:*pvrLenovoideapad310S-14ISK:*
EVDEV_ABS_00=113:3960:37
@ -746,12 +760,15 @@ evdev:name:AlpsPS/2 ALPS GlidePoint:dmi:*svnLENOVO:*pvrLenovoU41-70:*
EVDEV_ABS_35=117:3958:36
EVDEV_ABS_36=104:1960:26
# Lenovo Thinkpad T490 and T14/P14s Gen1/2
# Lenovo Thinkpad T490/T495 and T14/P14s Gen1/2 (identical chassis)
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadT490:*
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadT495:*
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadT14Gen1:*
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadT14Gen2a:*
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadT14Gen2i:*
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadP14sGen1:*
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadP14sGen2a:*
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadP14sGen2i:*
EVDEV_ABS_00=::44
EVDEV_ABS_01=::52
EVDEV_ABS_35=::44

View File

@ -320,6 +320,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAYANEO:pnKUN:pvr*
# multi-scancode sequence. The specific preceding codes
# depend on the model, but the final scancode is always the
# same.
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnAYA NEO:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnAYADEVICE:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnAYANEO:*
KEYBOARD_KEY_66=f15 # LC (All models)
KEYBOARD_KEY_67=f16 # RC (All models)
@ -665,6 +667,11 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[tT][aA][bB][lL][eE][tT]*:*
KEYBOARD_KEY_86=pageup
KEYBOARD_KEY_87=pagedown
# OmniBook Ultra Flip Laptop 14-fh0xxx
evdev:atkbd:dmi:*:svnHP:pnHPOmniBookUltraFlipLaptop14-fh0xxx:*
KEYBOARD_KEY_82=unknown # Mic mute, handled by hp-wmi
KEYBOARD_KEY_ab=!unknown # Brightness Down and Up keys, handled by acpi-video
# Pavilion
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[pP][aA][vV][iI][lL][iI][oO][nN]*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pn*[pP][aA][vV][iI][lL][iI][oO][nN]*:*
@ -811,6 +818,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteBook*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPElite*x360*:*
# HP Elite Dragonfly
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteDragonfly*:*
# HP EliteBoard
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteBoard*:*
# HP ProBook 440 G2
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP440G2:*
# HP ProBook
@ -1163,18 +1172,48 @@ evdev:input:b0003v04B3p301B*
KEYBOARD_KEY_90007=mail
KEYBOARD_KEY_90008=www
# Lenovo Ideapad D330-10IGM
evdev:name:SIPODEV Lenovo HID Device:dmi:*:svnLENOVO:*:pvrLenovoideapadD330-10IGM:*
KEYBOARD_KEY_70073=touchpad_toggle # Fn+Supr (Touchpad toggle)
# Lenovo Ideapad D330-10IGM and D330-10IGL
# (Tablet buttons)
evdev:atkbd:dmi:*:svnLENOVO:*:pvrLenovoideapadD330-10IG[ML]:*
KEYBOARD_LED_NUMLOCK=0 # Lacks Num-Lock LED
KEYBOARD_LED_CAPSLOCK=0 # Lacks Caps-Lock LED
evdev:name:SIPODEV Lenovo HID Device Consumer Control:dmi:*:svnLENOVO:*:pvrLenovoideapadD330-10IGM:*
KEYBOARD_KEY_c00ff=fn_esc # Fn+Tab (FnLk toggle)
# Lenovo Ideapad D330-10IGM and D330-10IGL
# (Dock keyboard) "* Lenovo HID Device"
evdev:input:b0003v17EFp60C[368]*-e0,1,4,11,14,k*,C2,*ram4,l0,1,2,sfw
# Touchpad key acts as LEFTCTRL+LEFTMETA+F24 (C2) Windows shortcut for touchpad toggle,
# with this as LEFTCTRL+LEFTMETA+TOUCHPAD_TOGGLE but just works.
KEYBOARD_KEY_70073=touchpad_toggle # Fn+Supr (Touchpad toggle).
KEYBOARD_LED_NUMLOCK=0 # Lacks Num-Lock LED
KEYBOARD_LED_CAPSLOCK=0 # Lacks Caps-Lock LED
# Lenovo Ideapad D330-10IGM and D330-10IGL
# (Dock keyboard: volume, brightness and FnLk keys) "* Lenovo HID Device Consumer Control"
evdev:input:b0003v17EFp60C[368]*-e0,1,4,k*,F0,*ram4,lsfw
KEYBOARD_KEY_c00ff=fn_esc # Fn+Tab (FnLk toggle). Default is UNKNOWN (F0).
# Lenovo Thinkbook 16 G6+ 2024
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn21LG:pvr*
KEYBOARD_KEY_0a=!9
KEYBOARD_KEY_0b=!0
# Lenovo Legion Go Translated
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83E1:*
# Lenovo Legion Go S Translated
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83L3:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83N6:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83Q2:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83Q3:*
# Lenovo Legion Go 2 Translated
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83N0:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83N1:*
KEYBOARD_KEY_67=f16 # Power button long press
# Lenovo Legion Go 2 Raw
evdev:name:AT Raw Set 2 keyboard:dmi:*:svnLENOVO:pn83N0:*
evdev:name:AT Raw Set 2 keyboard:dmi:*:svnLENOVO:pn83N1:*
KEYBOARD_KEY_20=f16 # Power button long press
###########################################################
# LG
###########################################################
@ -2360,21 +2399,21 @@ evdev:input:b0003v05FEp1010*
######################### LACK OF MODIFIER LEDS ############################
# This section lists keyboard which do not have their own LEDs for some
# modifiers. Only Caps-Lock (KEYBOARD_LED_CAPSLOCK) and Num-Lock
# (KEYBOARD_LED_CAPSLOCK) are currently handled and need their values set
# (KEYBOARD_LED_NUMLOCK) are currently handled and need their values set
# to "0" to indicate the absence of LED.
#
# Presence of a LED is implicit when the property is absent.
# Apple Wireless keyboards
evdev:input:b0005v05aCp022C*
evdev:input:b0005v05aCp022D*
evdev:input:b0005v05aCp022E*
evdev:input:b0005v05aCp0239*
evdev:input:b0005v05aCp023A*
evdev:input:b0005v05aCp023B*
evdev:input:b0005v05aCp0255*
evdev:input:b0005v05aCp0256*
evdev:input:b0005v05aCp0257*
evdev:input:b0005v05ACp022C*
evdev:input:b0005v05ACp022D*
evdev:input:b0005v05ACp022E*
evdev:input:b0005v05ACp0239*
evdev:input:b0005v05ACp023A*
evdev:input:b0005v05ACp023B*
evdev:input:b0005v05ACp0255*
evdev:input:b0005v05ACp0256*
evdev:input:b0005v05ACp0257*
KEYBOARD_LED_NUMLOCK=0
# Logitech K750

View File

@ -41,7 +41,9 @@
# PROXIMITY_NEAR_LEVEL=<value>
#
# where <matrix> is a mount-matrix in the format specified in the IIO
# subsystem[1]. The default, when unset, is equivalent to:
# subsystem[1]. The default, when unset, is the one defined by the ACPI
# found in /sys/bus/iio/devices/iio\:deviceXXX/in_mount_matrix or, in
# absence of it, is equivalent to:
# ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1
# eg. the identity matrix,
# and <value> is an integer value above or equal to which an object is
@ -158,10 +160,6 @@ sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100TAS:*
sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT200TA:*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
# Asus Transformer Mini T103HAF
sensor:modalias:platform:HID-SENSOR-200073*:dmi:*svn*ASUSTeK*:pnT103HAF:*
ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, -1
sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnTP201SA:*
sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pn*E205SA:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
@ -756,6 +754,14 @@ sensor:modalias:acpi:BMA250E*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-1030:*
sensor:modalias:acpi:SMO8500*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-830:*
ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
# IdeaPad D330-10IGM (81H3) and (81MD) product names
# Panel mounted at -90º. ACPI in_mount_matrix 0, -1, 0; 1, 0, 0; 0, 0, 1
# IdeaPad Duet 3 10IGL5 (82AT) and 10IGL5-LTE (82HK)
# Panel mounted at -90º. ACPI in_mount_matrix unknown, if someone knows please report it
sensor:modalias:acpi:BOSC0200*:dmi:*:svnLENOVO:*:pvrLenovoideapadD330-10IGM:*
sensor:modalias:acpi:SMO8B30*:dmi:*:svnLENOVO:*:pvrIdeaPadDuet310IGL5*:*
ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1
# IdeaPad Miix 300
sensor:modalias:acpi:SMO8500*:dmi:bvnLENOVO:*:pvrMIIX300-*:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1

View File

@ -20,6 +20,65 @@
# Allowed properties are:
# ID_HARDWARE_WALLET=0|1
################
# Blockstream Jade Hardware Wallets
################
# Jade UART (Silicon Labs)
usb:v10C4pEA60*
ID_HARDWARE_WALLET=1
# Jade UART (WCH)
usb:v1A86p55D4*
ID_HARDWARE_WALLET=1
################
# Coinkite Hardware Wallets
################
# Coldcard
usb:vD13EpCC10*
ID_HARDWARE_WALLET=1
################
# Digital Bitbox Hardware Wallets
################
# Digital Bitbox (dbb)
usb:v03EBp2402*
ID_HARDWARE_WALLET=1
# BitBox02
usb:v03EBp2403*
ID_HARDWARE_WALLET=1
################
# KeepKey Hardware Wallets
################
# KeepKey HID Firmware/Bootloader
usb:v2B24p0001*
ID_HARDWARE_WALLET=1
# KeepKey WebUSB Firmware/Bootloader
usb:v2B24p0002*
ID_HARDWARE_WALLET=1
################
# Ledger Hardware Wallets
################
# Ledger HW.1 / Nano series
usb:v2581p1B7C*
usb:v2581p2B7C*
usb:v2581p3B7C*
usb:v2581p4B7C*
ID_HARDWARE_WALLET=1
# Ledger Nano S/X/Blue/Stax and related devices
usb:v2C97*
ID_HARDWARE_WALLET=1
################
# Trezor Hardware Wallets
################
@ -30,7 +89,5 @@ usb:v534Cp0001*
# Trezor v2
usb:v1209p53C0*
ID_HARDWARE_WALLET=1
usb:v1209p53C1*
ID_HARDWARE_WALLET=1

View File

@ -26,11 +26,11 @@
# Logitech
################
# Litra Beam
bluetooth:v046dpc901*
usb:v046dpc901*
bluetooth:v046DpC901*
usb:v046DpC901*
ID_AV_LIGHTS=1
# Litra Glow
bluetooth:v046dpc900*
usb:v046dpc900*
bluetooth:v046DpC900*
usb:v046DpC900*
ID_AV_LIGHTS=1

View File

@ -43,18 +43,32 @@ usb:v045Ep091E*
# Arctis Headsets
usb:v1038p12B3*
usb:v1038p12B6*
usb:v1038p12D7*
usb:v1038p1260*
usb:v1038p12AD*
usb:v1038p1252*
usb:v1038p1280*
usb:v1038p12D5*
usb:v1038p12D7*
usb:v1038p12AD*
usb:v1038p220E*
usb:v1038p2212*
usb:v1038p2216*
usb:v1038p2236*
usb:v1038p12C2*
usb:v1038p1290*
usb:v1038p12EC*
usb:v1038p2269*
usb:v1038p226D*
usb:v1038p2232*
usb:v1038p2253*
usb:v1038p2202*
usb:v1038p2206*
usb:v1038p220A*
usb:v1038p1290*
usb:v1038p2258*
usb:v1038p223A*
usb:v1038p227A*
usb:v1038p22A1*
usb:v1038p227E*
usb:v1038p229E*
usb:v1038p12E0*
usb:v1038p12E5*
SOUND_FORM_FACTOR=headset

View File

@ -52,6 +52,12 @@ touchpad:usb:v05acp0324:*
touchpad:usb:v044ep1221:*
ID_INPUT_TOUCHPAD_INTEGRATION=external
###########################################################
# Lenovo IdeaPad Duet3 10IGL5 (82AT)
###########################################################
touchpad:bluetooth:v17efp60fa:*
ID_INPUT_TOUCHPAD_INTEGRATION=internal
###########################################################
# Logitech
###########################################################

View File

@ -268,6 +268,10 @@
<!-- add Index link at top of page -->
<xsl:template name="user.header.content">
<style>
:root {
color-scheme: light dark;
}
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
@ -312,6 +316,13 @@
<xsl:text>"</xsl:text>
</xsl:template>
<!-- copied from docbook to remove the static color declarations -->
<xsl:template name="body.attributes">
<xsl:if test="starts-with($writing.mode, 'rl')">
<xsl:attribute name="dir">rtl</xsl:attribute>
</xsl:if>
</xsl:template>
<!-- Switch things to UTF-8, ISO-8859-1 is soo yesteryear -->
<xsl:output method="html" encoding="UTF-8" indent="no"/>

View File

@ -616,6 +616,7 @@
<term><filename>/proc/cmdline</filename></term>
<listitem>
<para>Specifies the kernel command line to use. The first of the files that is found will be used.
When running in a container, <filename>/proc/cmdline</filename> is ignored.
<varname>$KERNEL_INSTALL_CONF_ROOT</varname> may be used to override the search path; see below for
details.</para>

View File

@ -4860,7 +4860,7 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
has no main PID. The control PID is the PID of the current start/stop/reload process running and is 0
if no such process is currently running. That means that <varname>ExecMainPID</varname> and
<varname>MainPID</varname> differ in the way that the latter immediately reflects whether a main
process is currently running while the latter possible contains information collected from the last run
process is currently running while the former possibly contains information collected from the last run
even if the process is no longer around.</para>
<para><varname>StatusText</varname>, <varname>StatusErrno</varname>, <varname>StatusBusError</varname>,

View File

@ -1171,7 +1171,7 @@ manpages = [
'systemd-tmpfiles-setup.service'],
''],
['systemd-tpm2-clear.service', '8', [], 'ENABLE_BOOTLOADER'],
['systemd-tpm2-generator', '8', [], ''],
['systemd-tpm2-generator', '8', [], 'ENABLE_BOOTLOADER'],
['systemd-tpm2-setup.service',
'8',
['systemd-tpm2-setup', 'systemd-tpm2-setup-early.service'],

View File

@ -1696,7 +1696,7 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
<listitem>
<para>Shut down and reboot the system.</para>
<para>This command mostly equivalent to <command>systemctl start reboot.target
<para>This command is mostly equivalent to <command>systemctl start reboot.target
--job-mode=replace-irreversibly --no-block</command>, but also prints a wall message to all
users. This command is asynchronous; it will return after the reboot operation is enqueued,
without waiting for it to complete.</para>

View File

@ -722,7 +722,7 @@
<listitem><para>Show a list of candidate block devices this command may operate on. Specifically,
this enumerates block devices currently present that contain a LUKS superblock, and shows their
device node paths along with any of their symlinks. The devices must implement the
<option>hmac-secret</option> extension to be useable.</para>
<option>hmac-secret</option> extension to be usable.</para>
<xi:include href="version-info.xml" xpointer="v257"/></listitem>
</varlistentry>

View File

@ -85,8 +85,8 @@
initrd. This accepts a device node path (usually <filename>/dev/disk/by-uuid/…</filename> or
<filename>/dev/disk/by-label/…</filename> or similar), or the special values
<literal>gpt-auto</literal>, <literal>gpt-auto-force</literal>, <literal>dissect</literal>,
<literal>dissect-force</literal>, <literal>fstab</literal>, <literal>fstab</literal>, and
<literal>off</literal>.</para>
<literal>dissect-force</literal>, <literal>fstab</literal>, <literal>tmpfs</literal>,
<literal>bind:…</literal>, and <literal>off</literal>.</para>
<para>Set to <literal>gpt-auto</literal>, <literal>gpt-auto-force</literal>,
<literal>dissect</literal>, <literal>dissect-force</literal> to explicitly request automatic root

View File

@ -317,7 +317,7 @@
<citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
<para>Defaults to true. (Note that this is unlike the option of the same name to
<citerefentry><refentrytitle>systemd-vmspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
<citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
that defaults to false.)</para>
<xi:include href="version-info.xml" xpointer="v258"/></listitem>

View File

@ -579,11 +579,12 @@
<varlistentry>
<term><varname>RestartSteps=</varname></term>
<listitem><para>Configures the number of steps to take to increase the interval
<listitem><para>Configures the number of exponential steps to take to increase the interval
of auto-restarts from <varname>RestartSec=</varname> to <varname>RestartMaxDelaySec=</varname>.
Takes a positive integer or 0 to disable it. Defaults to 0.</para>
<para>This setting is effective only if <varname>RestartMaxDelaySec=</varname> is also set.</para>
<para>This setting is effective only if <varname>RestartMaxDelaySec=</varname> is also set and
<varname>RestartSec=</varname> is not zero.</para>
<xi:include href="version-info.xml" xpointer="v254"/></listitem>
</varlistentry>
@ -595,7 +596,8 @@
in the same format as <varname>RestartSec=</varname>, or <literal>infinity</literal>
to disable the setting. Defaults to <literal>infinity</literal>.</para>
<para>This setting is effective only if <varname>RestartSteps=</varname> is also set.</para>
<para>This setting is effective only if <varname>RestartSteps=</varname> is also set and
<varname>RestartSec=</varname> is not zero.</para>
<xi:include href="version-info.xml" xpointer="v254"/></listitem>
</varlistentry>

View File

@ -119,13 +119,15 @@ r - 500-900
bearing the same name unless the ID field specifies it. The account will be
created disabled, so that logins are not allowed.</para>
<xi:include href="version-info.xml" xpointer="v215"/>
<para>Type <varname>u</varname> may be suffixed with an exclamation mark (<literal>u!</literal>) to
create a fully locked account. This is recommended, since logins should typically not be allowed
for system users. With or without the exclamation mark an invalid password is set. For
<literal>u!</literal>, the account is also locked, which makes a difference for non-password forms
of authentication, such as SSH or similar.</para>
<xi:include href="version-info.xml" xpointer="v215"/></listitem>
<xi:include href="version-info.xml" xpointer="v257"/></listitem>
</varlistentry>
<varlistentry>

View File

@ -357,7 +357,10 @@
<listitem><para>The os-release description (the <literal>.osrel</literal> section). The argument
may be a literal string, or <literal>@</literal> followed by a path name. If not specified, the
<citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry> file
will be picked up from the host system.</para>
will be picked up from the host system. If explicitly set to an empty string, the ".osrel" section
is omitted from the UKI (this is not recommended in most cases, and causes the resulting artifact
to not be recognized as a UKI by other tools like <command>kernel-install</command>
and <command>bootctl</command>).</para>
<xi:include href="version-info.xml" xpointer="v253"/></listitem>
</varlistentry>

View File

@ -1694,6 +1694,8 @@ if conf.get('BPF_FRAMEWORK') == 1
bpf_clang_flags = [
'-std=gnu17',
'-Wno-compare-distinct-pointer-types',
'-Wno-microsoft-anon-tag',
'-fms-extensions',
'-fno-stack-protector',
'-O2',
'-target',
@ -1704,6 +1706,7 @@ if conf.get('BPF_FRAMEWORK') == 1
bpf_gcc_flags = [
'-std=gnu17',
'-fms-extensions',
'-fno-stack-protector',
'-fno-ssa-phiopt',
'-O2',

View File

@ -1 +1 @@
258.3
258.4

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Config]
MinimumVersion=commit:5a476a92deca8ad54869e5d416217aa1bb137b25
MinimumVersion=commit:14d2d37a1923c03062f55454b2b61d0c64db6238
Dependencies=
exitrd
initrd

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
logger --journald <<EOF

View File

@ -0,0 +1,10 @@
# This is a workaround for the issue observed with mdadm-4.5 + linux-6.18.
# ===
# + mdadm --create /dev/md/mdmirror ...
# mdadm: size set to 64512K
# mdadm: Can't open /sys/module/md_mod/parameters/legacy_async_del_gendisk
# mdadm: init md module parameters fail
# ===
# See also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1125390
# Fixed by https://github.com/md-raid-utilities/mdadm/pull/228
md_mod

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: CC-0
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e

View File

@ -1,4 +1,4 @@
#!/usr/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -eux

View File

@ -1,10 +1,10 @@
#!/bin/bash
#!/usr/bin/env bash
set -e
# We don't use mkosi.extra because /usr/sbin could be a symlink and cp doesn't handle that properly until
# coreutils 9.5 or newer.
cat >"$BUILDROOT/sbin/init" <<EOF
#!/bin/bash
#!/usr/bin/env bash
echo "Hello from dummy init, beautiful day, innit?"
ip link
EOF

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
set -o nounset

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
set -o nounset

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
set -o nounset

View File

@ -8,7 +8,6 @@ Distribution=|ubuntu
PrepareScripts=%D/mkosi/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.prepare
Packages=
clang-tools
gh
iwyu
lcov
mypy

View File

@ -10,6 +10,10 @@
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
# This implements the UAPI.15 "OSC 3008: Hierarchical Context Signalling"
# specification for the shell prompt. For details see:
# https://uapi-group.org/specifications/specs/osc_context/
# Not bash?
[ -n "${BASH_VERSION:-}" ] || return 0

View File

@ -103,7 +103,7 @@ int verb_image_policy(int argc, char *argv[], void *userdata) {
else if (streq(argv[i], "@host"))
p = &image_policy_host;
else {
r = image_policy_from_string(argv[i], &pbuf);
r = image_policy_from_string(argv[i], /* graceful= */ false, &pbuf);
if (r < 0)
return log_error_errno(r, "Failed to parse image policy '%s': %m", argv[i]);

View File

@ -282,10 +282,10 @@ typedef struct MethodAskParameters {
static int vl_method_ask(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
static const sd_json_dispatch_field dispatch_table[] = {
{ "message", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, offsetof(MethodAskParameters, message), 0 },
{ "keyname", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, offsetof(MethodAskParameters, keyring), 0 },
{ "icon", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, offsetof(MethodAskParameters, icon), 0 },
{ "id", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, offsetof(MethodAskParameters, id), 0 },
{ "message", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, offsetof(MethodAskParameters, message), SD_JSON_STRICT },
{ "keyname", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, offsetof(MethodAskParameters, keyring), SD_JSON_STRICT },
{ "icon", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, offsetof(MethodAskParameters, icon), SD_JSON_STRICT },
{ "id", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, offsetof(MethodAskParameters, id), SD_JSON_STRICT },
{ "timeoutUSec", _SD_JSON_VARIANT_TYPE_INVALID, sd_json_dispatch_uint64, offsetof(MethodAskParameters, timeout_usec), 0 },
{ "untilUSec", _SD_JSON_VARIANT_TYPE_INVALID, sd_json_dispatch_uint64, offsetof(MethodAskParameters, until_usec), 0 },
{ "acceptCached", SD_JSON_VARIANT_BOOLEAN, sd_json_dispatch_tristate, offsetof(MethodAskParameters, accept_cached), 0 },

View File

@ -7,3 +7,6 @@ executables += [
'sources' : files('ask-password.c'),
},
]
install_data('io.systemd.ask-password.policy',
install_dir : polkitpolicydir)

View File

@ -48,7 +48,7 @@ void reset_ansi_feature_caches(void);
#define ANSI_BRIGHT_CYAN "\x1B[0;96m"
#define ANSI_BRIGHT_WHITE "\x1B[0;97m"
#define ANSI_GREY "\x1B[0;38;5;245m"
#define ANSI_GREY "\x1B[0;38:5:245m"
/* Bold/highlighted */
#define ANSI_HIGHLIGHT_BLACK "\x1B[0;1;30m"

View File

@ -38,7 +38,7 @@
/* The structure to pass to name_to_handle_at() on cgroupfs2 */
typedef union {
struct file_handle file_handle;
uint8_t space[offsetof(struct file_handle, f_handle) + sizeof(uint64_t)];
uint8_t space[MAX_HANDLE_SZ];
} cg_file_handle;
#define CG_FILE_HANDLE_INIT \

View File

@ -349,20 +349,18 @@ int decompress_blob_xz(
assert(dst_size);
#if HAVE_XZ
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
lzma_ret ret;
size_t space;
int r;
r = dlopen_lzma();
if (r < 0)
return r;
ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
lzma_ret ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
if (ret != LZMA_OK)
return -ENOMEM;
space = MIN(src_size * 2, dst_max ?: SIZE_MAX);
size_t space = MIN(src_size * 2, dst_max ?: SIZE_MAX);
if (!greedy_realloc(dst, space, 1))
return -ENOMEM;
@ -544,23 +542,21 @@ int decompress_startswith_xz(
assert(prefix);
#if HAVE_XZ
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
size_t allocated;
lzma_ret ret;
int r;
r = dlopen_lzma();
if (r < 0)
return r;
ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
lzma_ret ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
if (ret != LZMA_OK)
return -EBADMSG;
if (!(greedy_realloc(buffer, ALIGN_8(prefix_len + 1), 1)))
return -ENOMEM;
allocated = MALLOC_SIZEOF_SAFE(*buffer);
size_t allocated = MALLOC_SIZEOF_SAFE(*buffer);
s.next_in = src;
s.avail_in = src_size;
@ -766,22 +762,21 @@ int compress_stream_xz(int fdf, int fdt, uint64_t max_bytes, uint64_t *ret_uncom
assert(fdt >= 0);
#if HAVE_XZ
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
lzma_ret ret;
uint8_t buf[BUFSIZ], out[BUFSIZ];
lzma_action action = LZMA_RUN;
int r;
r = dlopen_lzma();
if (r < 0)
return r;
ret = sym_lzma_easy_encoder(&s, LZMA_PRESET_DEFAULT, LZMA_CHECK_CRC64);
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
lzma_ret ret = sym_lzma_easy_encoder(&s, LZMA_PRESET_DEFAULT, LZMA_CHECK_CRC64);
if (ret != LZMA_OK)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Failed to initialize XZ encoder: code %u",
ret);
uint8_t buf[BUFSIZ], out[BUFSIZ];
lzma_action action = LZMA_RUN;
for (;;) {
if (s.avail_in == 0 && action == LZMA_RUN) {
size_t m = sizeof(buf);
@ -946,23 +941,21 @@ int decompress_stream_xz(int fdf, int fdt, uint64_t max_bytes) {
assert(fdt >= 0);
#if HAVE_XZ
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
lzma_ret ret;
uint8_t buf[BUFSIZ], out[BUFSIZ];
lzma_action action = LZMA_RUN;
int r;
r = dlopen_lzma();
if (r < 0)
return r;
ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
lzma_ret ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
if (ret != LZMA_OK)
return log_debug_errno(SYNTHETIC_ERRNO(ENOMEM),
"Failed to initialize XZ decoder: code %u",
ret);
uint8_t buf[BUFSIZ], out[BUFSIZ];
lzma_action action = LZMA_RUN;
for (;;) {
if (s.avail_in == 0 && action == LZMA_RUN) {
ssize_t n;

View File

@ -56,6 +56,7 @@ NAME_TO_MAGIC = {
# gfs is an old version of gfs2 and reuses the magic
'gfs': ['GFS2_MAGIC'],
'gfs2': ['GFS2_MAGIC'],
'gmem': ['GUEST_MEMFD_MAGIC'],
'hostfs': ['HOSTFS_SUPER_MAGIC'],
'hpfs': ['HPFS_SUPER_MAGIC'],
'hugetlbfs': ['HUGETLBFS_MAGIC'],

View File

@ -61,7 +61,7 @@ int parse_tristate_full(const char *v, const char *third, int *ret) {
return 0;
}
int parse_pid(const char *s, pid_t* ret_pid) {
int parse_pid(const char *s, pid_t *ret) {
unsigned long ul = 0;
pid_t pid;
int r;
@ -80,8 +80,8 @@ int parse_pid(const char *s, pid_t* ret_pid) {
if (!pid_is_valid(pid))
return -ERANGE;
if (ret_pid)
*ret_pid = pid;
if (ret)
*ret = pid;
return 0;
}

View File

@ -10,7 +10,7 @@ int parse_tristate_full(const char *v, const char *third, int *ret);
static inline int parse_tristate(const char *v, int *ret) {
return parse_tristate_full(v, NULL, ret);
}
int parse_pid(const char *s, pid_t* ret_pid);
int parse_pid(const char *s, pid_t *ret);
int parse_mode(const char *s, mode_t *ret);
int parse_ifindex(const char *s);
int parse_mtu(int family, const char *s, uint32_t *ret);

View File

@ -239,7 +239,7 @@ int pidfd_get_inode_id_impl(int fd, uint64_t *ret) {
if (file_handle_supported) {
union {
struct file_handle file_handle;
uint8_t space[offsetof(struct file_handle, f_handle) + sizeof(uint64_t)];
uint8_t space[MAX_HANDLE_SZ];
} fh = {
.file_handle.handle_bytes = sizeof(uint64_t),
.file_handle.handle_type = FILEID_KERNFS,

View File

@ -4,6 +4,7 @@
#include <pthread.h>
#include <spawn.h>
#include <stdio.h>
#include <sys/mman.h>
#include <sys/mount.h>
#include <sys/personality.h>
#include <sys/prctl.h>
@ -20,6 +21,7 @@
#include "alloc-util.h"
#include "architecture.h"
#include "argv-util.h"
#include "capability-util.h"
#include "cgroup-util.h"
#include "dirent-util.h"
#include "env-file.h"
@ -2289,6 +2291,26 @@ int proc_dir_read_pidref(DIR *d, PidRef *ret) {
return 0;
}
int safe_mlockall(int flags) {
int r;
/* When dealing with sensitive data, let's lock ourselves into memory. We do this only when
* privileged however, as otherwise the amount of lockable memory that RLIMIT_MEMLOCK grants us is
* frequently too low to make this work. The resource limit has no effect on CAP_IPC_LOCK processes,
* hence that's the capability we check for. */
r = have_effective_cap(CAP_IPC_LOCK);
if (r < 0)
return log_debug_errno(r, "Failed to determine if we have CAP_IPC_LOCK: %m");
if (r == 0)
return log_debug_errno(SYNTHETIC_ERRNO(EPERM), "Lacking CAP_IPC_LOCK, skipping mlockall().");
if (mlockall(flags) < 0)
return log_debug_errno(errno, "Failed to call mlockall(): %m");
log_debug("Successfully called mlockall().");
return 0;
}
static const char *const sigchld_code_table[] = {
[CLD_EXITED] = "exited",
[CLD_KILLED] = "killed",

View File

@ -265,5 +265,7 @@ int proc_dir_open(DIR **ret);
int proc_dir_read(DIR *d, pid_t *ret);
int proc_dir_read_pidref(DIR *d, PidRef *ret);
int safe_mlockall(int flags);
_noreturn_ void report_errno_and_exit(int errno_fd, int error);
int read_errno(int errno_fd);

View File

@ -415,6 +415,8 @@ int path_is_network_fs(const char *path) {
}
int proc_mounted(void) {
/* This is typically used in error path. So, it is better to not overwrite the original errno. */
PROTECT_ERRNO;
int r;
/* A quick check of procfs is properly mounted */

View File

@ -735,7 +735,7 @@ char* strip_tab_ansi(char **ibuf, size_t *_isz, size_t highlight[2]) {
case STATE_CSI:
assert(n_carriage_returns == 0);
if (eot || !strchr("01234567890;m", *i)) { /* EOT or invalid chars in sequence */
if (eot || !strchr(DIGITS ";:m", *i)) { /* EOT or invalid chars in sequence */
fputc('\x1B', f);
fputc('[', f);
advance_offsets(i - *ibuf, highlight, shift, 2);

View File

@ -969,7 +969,8 @@ static int terminal_reset_ansi_seq(int fd) {
k = loop_write_full(fd,
"\033[!p" /* soft terminal reset */
"\033]104\007" /* reset colors */
ANSI_OSC "104" ANSI_ST /* reset color palette via OSC 104 */
ANSI_NORMAL /* reset colors */
"\033[?7h" /* enable line-wrapping */
"\033[1G" /* place cursor at beginning of current line */
"\033[0J", /* erase till end of screen */

View File

@ -1735,6 +1735,39 @@ bool in_utc_timezone(void) {
return timezone == 0 && daylight == 0;
}
int usleep_safe(usec_t usec) {
int r;
/* usleep() takes useconds_t that is (typically?) uint32_t. Also, usleep() may only support the
* range [0, 1000000]. See usleep(3). Let's override usleep() with clock_nanosleep().
*
* Note we are not using plain nanosleep() here, since that operates on CLOCK_REALTIME, not
* CLOCK_MONOTONIC! */
if (usec == 0)
return 0;
if (usec == USEC_INFINITY)
return RET_NERRNO(pause());
struct timespec t;
timespec_store(&t, usec);
for (;;) {
struct timespec remaining;
/* `clock_nanosleep()` does not use `errno`, but returns positive error codes. */
r = -clock_nanosleep(CLOCK_MONOTONIC, /* flags= */ 0, &t, &remaining);
if (r == -EINTR) {
/* Interrupted. Continue sleeping for the remaining time. */
t = remaining;
continue;
}
return r;
}
}
int time_change_fd(void) {
/* We only care for the cancellation event, hence we set the timeout to the latest possible value. */

View File

@ -205,19 +205,7 @@ static inline usec_t usec_sub_signed(usec_t timestamp, int64_t delta) {
return usec_sub_unsigned(timestamp, (usec_t) delta);
}
static inline int usleep_safe(usec_t usec) {
/* usleep() takes useconds_t that is (typically?) uint32_t. Also, usleep() may only support the
* range [0, 1000000]. See usleep(3). Let's override usleep() with clock_nanosleep().
*
* Note we are not using plain nanosleep() here, since that operates on CLOCK_REALTIME, not
* CLOCK_MONOTONIC! */
if (usec == 0)
return 0;
/* `clock_nanosleep()` does not use `errno`, but returns positive error codes. */
return -clock_nanosleep(CLOCK_MONOTONIC, 0, TIMESPEC_STORE(usec), NULL);
}
int usleep_safe(usec_t usec);
/* The last second we can format is 31. Dec 9999, 1s before midnight, because otherwise we'd enter 5 digit
* year territory. However, since we want to stay away from this in all timezones we take one day off. */

View File

@ -26,6 +26,11 @@ static int run(const char *dest, const char *dest_early, const char *dest_late)
return 0;
}
if (generator_soft_rebooted()) {
log_debug("Skipping generator, current system is entered via soft-reboot.");
return 0;
}
if (!is_efi_boot()) {
log_debug("Skipping generator, not an EFI boot.");
return 0;

View File

@ -497,7 +497,8 @@ char* line_get_key_value(char *s, const char *sep, size_t *pos, char **ret_key,
value++;
/* unquote */
if (value[0] == '"' && line[linelen - 1] == '"') {
if ((value[0] == '"' && line[linelen - 1] == '"') ||
(value[0] == '\'' && line[linelen - 1] == '\'')) {
value++;
line[linelen - 1] = '\0';
}

View File

@ -1289,9 +1289,9 @@ static EFI_STATUS run(EFI_HANDLE image) {
/* Combine the initrds into one */
_cleanup_pages_ Pages initrd_pages = {};
struct iovec final_initrd;
struct iovec final_initrd = {};
if (n_all_initrds > 1) {
/* There will always be a base initrd, if this counter is higher, we need to combine them */
/* If there is more then 1 initrd we need to combine them */
err = combine_initrds(all_initrds, n_all_initrds, &initrd_pages, &final_initrd.iov_len);
if (err != EFI_SUCCESS)
return err;
@ -1300,7 +1300,7 @@ static EFI_STATUS run(EFI_HANDLE image) {
/* Given these might be large let's free them explicitly before we pass control to Linux */
initrds_free(&initrds);
} else
} else if (n_all_initrds == 1)
final_initrd = all_initrds[0];
struct iovec kernel = IOVEC_MAKE(

View File

@ -3925,7 +3925,7 @@ int bus_exec_context_set_transient_property(
if (r < 0)
return r;
if (empty) {
if (!UNIT_WRITE_FLAGS_NOOP(flags) && empty) {
bind_mount_free_many(c->bind_mounts, c->n_bind_mounts);
c->bind_mounts = NULL;
c->n_bind_mounts = 0;
@ -3970,7 +3970,7 @@ int bus_exec_context_set_transient_property(
if (r < 0)
return r;
if (empty) {
if (!UNIT_WRITE_FLAGS_NOOP(flags) && empty) {
temporary_filesystem_free_many(c->temporary_filesystems, c->n_temporary_filesystems);
c->temporary_filesystems = NULL;
c->n_temporary_filesystems = 0;
@ -4319,7 +4319,7 @@ int bus_exec_context_set_transient_property(
if (r < 0)
return r;
r = image_policy_from_string(s, &p);
r = image_policy_from_string(s, /* graceful= */ true, &p);
if (r < 0)
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Failed to parse image policy string: %s", s);

View File

@ -1199,7 +1199,7 @@ static int property_get_cpu_usage(
r = unit_get_cpu_usage(u, &ns);
if (r < 0 && r != -ENODATA)
log_unit_warning_errno(u, r, "Failed to get cpuacct.usage attribute: %m");
log_unit_warning_errno(u, r, "Failed to get CPU usage: %m");
return sd_bus_message_append(reply, "t", ns);
}

View File

@ -736,11 +736,20 @@ int dynamic_user_lookup_name(Manager *m, const char *name, uid_t *ret) {
if (!d)
return -ESRCH;
r = dynamic_user_current(d, ret);
uid_t uid;
r = dynamic_user_current(d, &uid);
if (r == -EAGAIN) /* not realized yet? */
return -ESRCH;
if (r < 0)
return r;
if (!uid_is_dynamic(uid))
return -ESRCH;
if (ret)
*ret = uid;
return 0;
}
int dynamic_creds_make(Manager *m, const char *user, const char *group, DynamicCreds **ret) {

View File

@ -3726,21 +3726,21 @@ static int exec_context_deserialize(ExecContext *c, FILE *f) {
if (c->root_image_policy)
return -EINVAL; /* duplicated */
r = image_policy_from_string(val, &c->root_image_policy);
r = image_policy_from_string(val, /* graceful= */ true, &c->root_image_policy);
if (r < 0)
return r;
} else if ((val = startswith(l, "exec-context-mount-image-policy="))) {
if (c->mount_image_policy)
return -EINVAL; /* duplicated */
r = image_policy_from_string(val, &c->mount_image_policy);
r = image_policy_from_string(val, /* graceful= */ true, &c->mount_image_policy);
if (r < 0)
return r;
} else if ((val = startswith(l, "exec-context-extension-image-policy="))) {
if (c->extension_image_policy)
return -EINVAL; /* duplicated */
r = image_policy_from_string(val, &c->extension_image_policy);
r = image_policy_from_string(val, /* graceful= */ true, &c->extension_image_policy);
if (r < 0)
return r;
} else

View File

@ -789,7 +789,7 @@ static void job_emit_done_message(Unit *u, uint32_t job_id, JobType t, JobResult
log_unit_struct(
u,
job_done_messages[result].log_level,
LOG_MESSAGE("%s was skipped because no trigger condition checks were met.",
LOG_MESSAGE("%s skipped, no trigger condition checks were met.",
ident),
LOG_ITEM("JOB_ID=%" PRIu32, job_id),
LOG_ITEM("JOB_TYPE=%s", job_type_to_string(t)),
@ -800,7 +800,7 @@ static void job_emit_done_message(Unit *u, uint32_t job_id, JobType t, JobResult
log_unit_struct(
u,
job_done_messages[result].log_level,
LOG_MESSAGE("%s was skipped because of an unmet condition check (%s=%s%s).",
LOG_MESSAGE("%s skipped, unmet condition check %s=%s%s",
ident,
condition_type_to_string(c->type),
c->negate ? "!" : "",

View File

@ -2805,7 +2805,7 @@ static void determine_default_oom_score_adjust(void) {
return (void) log_warning_errno(r, "Failed to determine current OOM score adjustment value, ignoring: %m");
assert_cc(100 <= OOM_SCORE_ADJ_MAX);
b = a >= OOM_SCORE_ADJ_MAX - 100 ? OOM_SCORE_ADJ_MAX : a + 100;
b = saturate_add(a, 100, OOM_SCORE_ADJ_MAX);
if (a == b)
return;

View File

@ -2269,6 +2269,11 @@ int manager_propagate_reload(Manager *m, Unit *unit, JobMode mode, sd_bus_error
tr->anchor_job,
mode == JOB_IGNORE_DEPENDENCIES ? TRANSACTION_IGNORE_ORDER : 0);
/* Only activate the transaction if it contains jobs other than NOP anchor.
* Short-circuiting here avoids unnecessary processing, such as emitting D-Bus signals. */
if (hashmap_size(tr->jobs) <= 1)
return 0;
r = transaction_activate(tr, m, mode, NULL, e);
if (r < 0)
return r;

Some files were not shown because too many files have changed in this diff Show More