mirror of
https://github.com/systemd/systemd
synced 2026-03-13 16:44:48 +01:00
Compare commits
No commits in common. "11ce1e903f368b97407b106c2f4359fab338d3bc" and "a35965f85436f2c30f1b3344ee7ee829a9f28a65" have entirely different histories.
11ce1e903f
...
a35965f854
@ -20,7 +20,8 @@
|
|||||||
(nxml-mode . ((nxml-child-indent . 2)
|
(nxml-mode . ((nxml-child-indent . 2)
|
||||||
(fill-column . 109)))
|
(fill-column . 109)))
|
||||||
(meson-mode . ((meson-indent-basic . 8)))
|
(meson-mode . ((meson-indent-basic . 8)))
|
||||||
(sh-mode . ((sh-indentation . 4)))
|
(sh-mode . ((sh-basic-offset . 4)
|
||||||
|
(sh-indentation . 4)))
|
||||||
(awk-mode . ((c-basic-offset . 8)))
|
(awk-mode . ((c-basic-offset . 8)))
|
||||||
(nil . ((indent-tabs-mode . nil)
|
(nil . ((indent-tabs-mode . nil)
|
||||||
(tab-width . 8)
|
(tab-width . 8)
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -18,8 +18,6 @@ body:
|
|||||||
If a distro build is used, please just paste the package version, e.g. `systemd-257.3-7.fc42.x86_64`.
|
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.
|
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).
|
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'
|
placeholder: '257.x'
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
4
.github/workflows/build-test.yml
vendored
4
.github/workflows/build-test.yml
vendored
@ -51,9 +51,9 @@ jobs:
|
|||||||
env: ${{ matrix.env }}
|
env: ${{ matrix.env }}
|
||||||
steps:
|
steps:
|
||||||
- name: Repository checkout
|
- name: Repository checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
- name: Setup python
|
- name: Setup python
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
- name: Build check
|
- name: Build check
|
||||||
|
|||||||
4
.github/workflows/cifuzz.yml
vendored
4
.github/workflows/cifuzz.yml
vendored
@ -61,14 +61,14 @@ jobs:
|
|||||||
sanitizer: ${{ matrix.sanitizer }}
|
sanitizer: ${{ matrix.sanitizer }}
|
||||||
output-sarif: true
|
output-sarif: true
|
||||||
- name: Upload Crash
|
- name: Upload Crash
|
||||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
|
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
|
||||||
if: failure() && steps.build.outcome == 'success'
|
if: failure() && steps.build.outcome == 'success'
|
||||||
with:
|
with:
|
||||||
name: ${{ matrix.sanitizer }}-${{ matrix.architecture }}-artifacts
|
name: ${{ matrix.sanitizer }}-${{ matrix.architecture }}-artifacts
|
||||||
path: ./out/artifacts
|
path: ./out/artifacts
|
||||||
- name: Upload Sarif
|
- name: Upload Sarif
|
||||||
if: always() && steps.build.outcome == 'success'
|
if: always() && steps.build.outcome == 'success'
|
||||||
uses: github/codeql-action/upload-sarif@b20883b0cd1f46c72ae0ba6d1090936928f9fa30
|
uses: github/codeql-action/upload-sarif@51f77329afa6477de8c49fc9c7046c15b9a4e79d
|
||||||
with:
|
with:
|
||||||
# Path to SARIF file relative to the root of the repository
|
# Path to SARIF file relative to the root of the repository
|
||||||
sarif_file: cifuzz-sarif/results.sarif
|
sarif_file: cifuzz-sarif/results.sarif
|
||||||
|
|||||||
8
.github/workflows/codeql.yml
vendored
8
.github/workflows/codeql.yml
vendored
@ -42,10 +42,10 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30
|
uses: github/codeql-action/init@51f77329afa6477de8c49fc9c7046c15b9a4e79d
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
config-file: ./.github/codeql-config.yml
|
config-file: ./.github/codeql-config.yml
|
||||||
@ -60,7 +60,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30
|
uses: github/codeql-action/autobuild@51f77329afa6477de8c49fc9c7046c15b9a4e79d
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30
|
uses: github/codeql-action/analyze@51f77329afa6477de8c49fc9c7046c15b9a4e79d
|
||||||
|
|||||||
6
.github/workflows/coverage.yml
vendored
6
.github/workflows/coverage.yml
vendored
@ -24,8 +24,8 @@ jobs:
|
|||||||
if: github.repository == 'systemd/systemd' || github.repository == 'systemd/systemd-stable'
|
if: github.repository == 'systemd/systemd' || github.repository == 'systemd/systemd-stable'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
- uses: systemd/mkosi@14d2d37a1923c03062f55454b2b61d0c64db6238
|
- uses: systemd/mkosi@5a476a92deca8ad54869e5d416217aa1bb137b25
|
||||||
|
|
||||||
# Freeing up disk space with rm -rf can take multiple minutes. Since we don't need the extra free space
|
# 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
|
# 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
|
--max-lines 300
|
||||||
|
|
||||||
- name: Archive failed test journals
|
- name: Archive failed test journals
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v4
|
||||||
if: failure() && (github.repository == 'systemd/systemd' || github.repository == 'systemd/systemd-stable')
|
if: failure() && (github.repository == 'systemd/systemd' || github.repository == 'systemd/systemd-stable')
|
||||||
with:
|
with:
|
||||||
name: ci-coverage-${{ github.run_id }}-${{ github.run_attempt }}-arch-rolling-failed-test-journals
|
name: ci-coverage-${{ github.run_id }}-${{ github.run_attempt }}-arch-rolling-failed-test-journals
|
||||||
|
|||||||
2
.github/workflows/coverity.yml
vendored
2
.github/workflows/coverity.yml
vendored
@ -22,7 +22,7 @@ jobs:
|
|||||||
COVERITY_SCAN_NOTIFICATION_EMAIL: "${{ secrets.COVERITY_SCAN_NOTIFICATION_EMAIL }}"
|
COVERITY_SCAN_NOTIFICATION_EMAIL: "${{ secrets.COVERITY_SCAN_NOTIFICATION_EMAIL }}"
|
||||||
steps:
|
steps:
|
||||||
- name: Repository checkout
|
- name: Repository checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
# Reuse the setup phase of the unit test script to avoid code duplication
|
# Reuse the setup phase of the unit test script to avoid code duplication
|
||||||
- name: Install build dependencies
|
- name: Install build dependencies
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
2
.github/workflows/development-freeze.yml
vendored
2
.github/workflows/development-freeze.yml
vendored
@ -30,7 +30,7 @@ jobs:
|
|||||||
name: Pull Request Metadata
|
name: Pull Request Metadata
|
||||||
|
|
||||||
- name: Repository checkout
|
- name: Repository checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
@ -23,12 +23,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Repository checkout
|
- name: Repository checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Differential ShellCheck
|
- name: Differential ShellCheck
|
||||||
uses: redhat-plumbers-in-action/differential-shellcheck@d965e66ec0b3b2f821f75c8eff9b12442d9a7d1e
|
uses: redhat-plumbers-in-action/differential-shellcheck@dd551ce780d8af741f8cd8bab6982667b906b457
|
||||||
with:
|
with:
|
||||||
# exclude all `.in` files because they may contain unsupported syntax, and they have to be preprocessed first
|
# 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+)
|
# TEMPORARY: exclude bash completion files, they would generate too many defects in Code scanning dashboard (600+)
|
||||||
|
|||||||
6
.github/workflows/gather-pr-metadata.yml
vendored
6
.github/workflows/gather-pr-metadata.yml
vendored
@ -16,14 +16,14 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Repository checkout
|
- name: Repository checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
|
|
||||||
- id: metadata
|
- id: metadata
|
||||||
name: Gather Pull Request Metadata
|
name: Gather Pull Request Metadata
|
||||||
uses: redhat-plumbers-in-action/gather-pull-request-metadata@b86d1eaf7038cf88a56b26ba3e504f10e07b0ce5
|
uses: redhat-plumbers-in-action/gather-pull-request-metadata@5da2967931dd7c4b9ccd22f49b045e2c1f05165b
|
||||||
|
|
||||||
- name: Upload Pull Request Metadata artifact
|
- name: Upload Pull Request Metadata artifact
|
||||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
|
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
|
||||||
with:
|
with:
|
||||||
name: Pull Request Metadata
|
name: Pull Request Metadata
|
||||||
path: ${{ steps.metadata.outputs.metadata-file }}
|
path: ${{ steps.metadata.outputs.metadata-file }}
|
||||||
|
|||||||
4
.github/workflows/issue-labeler.yml
vendored
4
.github/workflows/issue-labeler.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
|||||||
template: [ bug_report.yml, feature_request.yml ]
|
template: [ bug_report.yml, feature_request.yml ]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
|
|
||||||
- name: Parse issue form
|
- name: Parse issue form
|
||||||
uses: stefanbuck/github-issue-parser@1e5bdee70d4b3e066a33aa0669ab782943825f94
|
uses: stefanbuck/github-issue-parser@1e5bdee70d4b3e066a33aa0669ab782943825f94
|
||||||
@ -29,7 +29,7 @@ jobs:
|
|||||||
template-path: .github/ISSUE_TEMPLATE/${{ matrix.template }}
|
template-path: .github/ISSUE_TEMPLATE/${{ matrix.template }}
|
||||||
|
|
||||||
- name: Set labels based on component field
|
- name: Set labels based on component field
|
||||||
uses: redhat-plumbers-in-action/advanced-issue-labeler@b80ae64e3e156e9c111b075bfa04b295d54e8e2e
|
uses: redhat-plumbers-in-action/advanced-issue-labeler@0db433d412193574252480b4fc22f2e4319a4ea3
|
||||||
with:
|
with:
|
||||||
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
|
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
|
||||||
template: ${{ matrix.template }}
|
template: ${{ matrix.template }}
|
||||||
|
|||||||
10
.github/workflows/labeler.yml
vendored
10
.github/workflows/labeler.yml
vendored
@ -30,11 +30,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Repository checkout
|
- name: Repository checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
if: github.event_name == 'pull_request'
|
if: github.event_name == 'pull_request'
|
||||||
|
|
||||||
- name: Label PR based on policy in labeler.yml
|
- name: Label PR based on policy in labeler.yml
|
||||||
uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b
|
uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9
|
||||||
if: startsWith(github.event_name, 'pull_request') && github.base_ref == 'main' && github.event.action != 'closed'
|
if: startsWith(github.event_name, 'pull_request') && github.base_ref == 'main' && github.event.action != 'closed'
|
||||||
with:
|
with:
|
||||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
@ -42,7 +42,7 @@ jobs:
|
|||||||
sync-labels: false
|
sync-labels: false
|
||||||
|
|
||||||
- name: Set or remove labels based on systemd development workflow
|
- name: Set or remove labels based on systemd development workflow
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd
|
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea
|
||||||
if: startsWith(github.event_name, 'pull_request') && github.event.action != 'closed' && !github.event.pull_request.draft
|
if: startsWith(github.event_name, 'pull_request') && github.event.action != 'closed' && !github.event.pull_request.draft
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@ -83,7 +83,7 @@ jobs:
|
|||||||
}
|
}
|
||||||
|
|
||||||
- name: Add please-review label on command in issue comment
|
- name: Add please-review label on command in issue comment
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd
|
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea
|
||||||
if: github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/please-review')
|
if: github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/please-review')
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@ -95,7 +95,7 @@ jobs:
|
|||||||
})
|
})
|
||||||
|
|
||||||
- name: Remove specific labels when PR is closed or merged
|
- name: Remove specific labels when PR is closed or merged
|
||||||
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd
|
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea
|
||||||
if: startsWith(github.event_name, 'pull_request') && github.event.action == 'closed'
|
if: startsWith(github.event_name, 'pull_request') && github.event.action == 'closed'
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
|
|||||||
7
.github/workflows/linter.yml
vendored
7
.github/workflows/linter.yml
vendored
@ -23,13 +23,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Repo checkout
|
- name: Repo checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
with:
|
with:
|
||||||
# We need a full repo clone
|
# We need a full repo clone
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Lint Code Base
|
- name: Lint Code Base
|
||||||
uses: super-linter/super-linter/slim@12562e48d7059cf666c43a4ecb0d3b5a2b31bd9e
|
uses: super-linter/super-linter/slim@502f4fe48a81a392756e173e39a861f8c8efe056
|
||||||
env:
|
env:
|
||||||
DEFAULT_BRANCH: main
|
DEFAULT_BRANCH: main
|
||||||
MULTI_STATUS: false
|
MULTI_STATUS: false
|
||||||
@ -37,9 +37,8 @@ jobs:
|
|||||||
VALIDATE_GITHUB_ACTIONS: true
|
VALIDATE_GITHUB_ACTIONS: true
|
||||||
LINTER_RULES_PATH: .github/linters
|
LINTER_RULES_PATH: .github/linters
|
||||||
GITHUB_ACTIONS_CONFIG_FILE: actionlint.yml
|
GITHUB_ACTIONS_CONFIG_FILE: actionlint.yml
|
||||||
ENABLE_GITHUB_PULL_REQUEST_SUMMARY_COMMENT: false
|
|
||||||
|
|
||||||
- uses: systemd/mkosi@14d2d37a1923c03062f55454b2b61d0c64db6238
|
- uses: systemd/mkosi@5a476a92deca8ad54869e5d416217aa1bb137b25
|
||||||
|
|
||||||
- name: Check that tabs are not used in Python code
|
- 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'
|
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'
|
||||||
|
|||||||
6
.github/workflows/mkosi.yml
vendored
6
.github/workflows/mkosi.yml
vendored
@ -166,8 +166,8 @@ jobs:
|
|||||||
shim: 0
|
shim: 0
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
- uses: systemd/mkosi@14d2d37a1923c03062f55454b2b61d0c64db6238
|
- uses: systemd/mkosi@5a476a92deca8ad54869e5d416217aa1bb137b25
|
||||||
|
|
||||||
# Freeing up disk space with rm -rf can take multiple minutes. Since we don't need the extra free space
|
# 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
|
# immediately, we remove the files in the background. However, we first move them to a different location
|
||||||
@ -311,7 +311,7 @@ jobs:
|
|||||||
"${MAX_LINES[@]}"
|
"${MAX_LINES[@]}"
|
||||||
|
|
||||||
- name: Archive failed test journals
|
- name: Archive failed test journals
|
||||||
uses: actions/upload-artifact@v6
|
uses: actions/upload-artifact@v4
|
||||||
if: failure() && (github.repository == 'systemd/systemd' || github.repository == 'systemd/systemd-stable')
|
if: failure() && (github.repository == 'systemd/systemd' || github.repository == 'systemd/systemd-stable')
|
||||||
with:
|
with:
|
||||||
name: ci-mkosi-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.distro }}-${{ matrix.release }}-${{ matrix.runner }}-failed-test-journals
|
name: ci-mkosi-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.distro }}-${{ matrix.release }}-${{ matrix.runner }}-failed-test-journals
|
||||||
|
|||||||
6
.github/workflows/requirements.txt
vendored
6
.github/workflows/requirements.txt
vendored
@ -1,6 +1,6 @@
|
|||||||
meson==1.10.1 \
|
meson==1.8.3 \
|
||||||
--hash=sha256:c42296f12db316a4515b9375a5df330f2e751ccdd4f608430d41d7d6210e4317 \
|
--hash=sha256:ef02b806ce0c5b6becd5bb5dc9fa67662320b29b337e7ace73e4354500590233 \
|
||||||
--hash=sha256:fe43d1cc2e6de146fbea78f3a062194bcc0e779efc8a0f0d7c35544dfb86731f
|
--hash=sha256:f118aa910fc0a137cc2dd0122232dbf82153d9a12fb5b0f5bb64896f6a157abf
|
||||||
ninja==1.11.1.4 \
|
ninja==1.11.1.4 \
|
||||||
--hash=sha256:055f386fb550c2c9d6157e45e20a84d29c47968876b9c5794ae2aec46f952306 \
|
--hash=sha256:055f386fb550c2c9d6157e45e20a84d29c47968876b9c5794ae2aec46f952306 \
|
||||||
--hash=sha256:096487995473320de7f65d622c3f1d16c3ad174797602218ca8c967f51ec38a0 \
|
--hash=sha256:096487995473320de7f65d622c3f1d16c3ad174797602218ca8c967f51ec38a0 \
|
||||||
|
|||||||
4
.github/workflows/scorecards.yml
vendored
4
.github/workflows/scorecards.yml
vendored
@ -29,12 +29,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Run analysis
|
- name: Run analysis
|
||||||
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
|
uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
|
||||||
with:
|
with:
|
||||||
results_file: results.sarif
|
results_file: results.sarif
|
||||||
results_format: sarif
|
results_format: sarif
|
||||||
|
|||||||
2
.github/workflows/unit-tests.yml
vendored
2
.github/workflows/unit-tests.yml
vendored
@ -40,7 +40,7 @@ jobs:
|
|||||||
runner: ubuntu-24.04-s390x
|
runner: ubuntu-24.04-s390x
|
||||||
steps:
|
steps:
|
||||||
- name: Repository checkout
|
- name: Repository checkout
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||||
- name: Install build dependencies
|
- name: Install build dependencies
|
||||||
run: |
|
run: |
|
||||||
# Drop XDG_* stuff from /etc/environment, so we don't get the user
|
# Drop XDG_* stuff from /etc/environment, so we don't get the user
|
||||||
|
|||||||
5
.mailmap
5
.mailmap
@ -36,9 +36,6 @@ Daniel Stekloff <dsteklof@us.ibm.com>
|
|||||||
Daniel Șerbănescu <dasj19@users.noreply.github.com>
|
Daniel Șerbănescu <dasj19@users.noreply.github.com>
|
||||||
Dann Frazier <dann.frazier@canonical.com>
|
Dann Frazier <dann.frazier@canonical.com>
|
||||||
Dave Reisner <dreisner@archlinux.org> <d@falconindy.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 Santamaría Rogado <howl.nsp@gmail.com>
|
||||||
David Zeuthen <david@fubar.dk>
|
David Zeuthen <david@fubar.dk>
|
||||||
David Zeuthen <david@fubar.dk> <davidz@redhat.com>
|
David Zeuthen <david@fubar.dk> <davidz@redhat.com>
|
||||||
@ -94,9 +91,7 @@ José Bollo <jose.bollo@iot.bzh> <jobol@nonadev.net>
|
|||||||
Jun Bo Bi <jambonmcyeah@gmail.com>
|
Jun Bo Bi <jambonmcyeah@gmail.com>
|
||||||
Justin Capella <justincapella@gmail.com> <b1tninja@users.noreply.github.com>
|
Justin Capella <justincapella@gmail.com> <b1tninja@users.noreply.github.com>
|
||||||
Jérémy Rosen <jeremy.rosen@enst-bretagne.fr>
|
Jérémy Rosen <jeremy.rosen@enst-bretagne.fr>
|
||||||
Jörg Behrmann <behrmann@physik.fu-berlin.de>
|
|
||||||
Jürg Billeter <j@bitron.ch>
|
Jürg Billeter <j@bitron.ch>
|
||||||
Kai Lüke <kailuke@microsoft.com>
|
|
||||||
Karl Kraus <karl.kraus@tum.de> <laqueray@gmail.com>
|
Karl Kraus <karl.kraus@tum.de> <laqueray@gmail.com>
|
||||||
Kay Sievers <kay@vrfy.org>
|
Kay Sievers <kay@vrfy.org>
|
||||||
Kay Sievers <kay@vrfy.org> <kay.sievers@suse.de>
|
Kay Sievers <kay@vrfy.org> <kay.sievers@suse.de>
|
||||||
|
|||||||
2
NEWS
2
NEWS
@ -4048,7 +4048,7 @@ CHANGES WITH 255:
|
|||||||
* A new component "systemd-storagetm" has been added, which exposes all
|
* A new component "systemd-storagetm" has been added, which exposes all
|
||||||
local block devices as NVMe-TCP devices, fully automatically. It's
|
local block devices as NVMe-TCP devices, fully automatically. It's
|
||||||
hooked into a new target unit storage-target-mode.target that is
|
hooked into a new target unit storage-target-mode.target that is
|
||||||
supposed to be booted into via
|
suppsoed to be booted into via
|
||||||
rd.systemd.unit=storage-target-mode.target on the kernel command
|
rd.systemd.unit=storage-target-mode.target on the kernel command
|
||||||
line. This is intended to be used for installers and debugging to
|
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
|
quickly get access to the local disk. It's inspired by MacOS "target
|
||||||
|
|||||||
5
README
5
README
@ -123,8 +123,7 @@ REQUIREMENTS:
|
|||||||
CONFIG_SECCOMP
|
CONFIG_SECCOMP
|
||||||
CONFIG_SECCOMP_FILTER (required for seccomp support)
|
CONFIG_SECCOMP_FILTER (required for seccomp support)
|
||||||
CONFIG_KCMP (for the kcmp() syscall, used to be under
|
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_SCHED
|
||||||
CONFIG_NET_SCH_FQ_CODEL
|
CONFIG_NET_SCH_FQ_CODEL
|
||||||
|
|
||||||
@ -192,7 +191,7 @@ REQUIREMENTS:
|
|||||||
This is shipped by default, see modprobe.d/systemd.conf.
|
This is shipped by default, see modprobe.d/systemd.conf.
|
||||||
|
|
||||||
Required for systemd-nspawn:
|
Required for systemd-nspawn:
|
||||||
CONFIG_DEVPTS_MULTIPLE_INSTANCES (removed and unneeded since 4.7)
|
CONFIG_DEVPTS_MULTIPLE_INSTANCES or Linux kernel >= 4.7
|
||||||
|
|
||||||
Required for systemd-oomd:
|
Required for systemd-oomd:
|
||||||
CONFIG_PSI
|
CONFIG_PSI
|
||||||
|
|||||||
@ -234,24 +234,6 @@ SPDX-License-Identifier: LGPL-2.1-or-later
|
|||||||
const char *input);
|
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.
|
- 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,
|
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
|
directly or transitively via another header. Circular header dependencies can
|
||||||
|
|||||||
@ -36,10 +36,6 @@ 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
|
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.
|
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:
|
Then, you can build, run and test systemd executables as follows:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|||||||
@ -1 +1,339 @@
|
|||||||
[This content has moved to the UAPI group website](https://uapi-group.org/specifications/specs/osc_context/)
|
---
|
||||||
|
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) |
|
||||||
|
|||||||
@ -40,9 +40,7 @@ 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
|
* 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`;
|
(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)
|
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 as-is.
|
* `Echo=` specifies whether the input should be obscured. If this field is missing or is `Echo=0`, the input should not be shown.
|
||||||
* `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.
|
* 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.
|
* 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.
|
The time is specified in usecs, and refers to the `CLOCK_MONOTONIC` clock. If `NotAfter=` is `0`, no such check should take place.
|
||||||
@ -102,4 +100,4 @@ now available, with the same protocol as the system-wide
|
|||||||
counterpart. Unprivileged, per-directory agents should watch this directory in
|
counterpart. Unprivileged, per-directory agents should watch this directory in
|
||||||
parallel to the system-wide one. Unprivileged queriers (i.e. clients to these
|
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
|
agents) should pick the per-user directory to place their password request
|
||||||
files in. If the directory does not exist, agents may create it.
|
files in.
|
||||||
|
|||||||
@ -1,851 +0,0 @@
|
|||||||
<?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>
|
|
||||||
|
Before Width: | Height: | Size: 31 KiB |
@ -71,7 +71,3 @@ dmi:bvnLENOVO*
|
|||||||
# Microsoft Surface 1's chassis type
|
# Microsoft Surface 1's chassis type
|
||||||
dmi:bvnMicrosoft Corporation*:pvrSurface with Windows 8 Pro*
|
dmi:bvnMicrosoft Corporation*:pvrSurface with Windows 8 Pro*
|
||||||
ID_CHASSIS=tablet
|
ID_CHASSIS=tablet
|
||||||
|
|
||||||
# GPD Pocket 4 chassis type
|
|
||||||
dmi:bvnAmericanMegatrendsInternational*:rvnGPD:rnG1628-04*
|
|
||||||
ID_CHASSIS=convertible
|
|
||||||
|
|||||||
@ -132,13 +132,6 @@ evdev:input:b0003v05ACp025B*
|
|||||||
EVDEV_ABS_35=::94
|
EVDEV_ABS_35=::94
|
||||||
EVDEV_ABS_36=::92
|
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)
|
# 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.:pnMacBook8,1:*
|
||||||
evdev:name:Apple SPI Touchpad:dmi:*:svnAppleInc.:pnMacBook9,1:*
|
evdev:name:Apple SPI Touchpad:dmi:*:svnAppleInc.:pnMacBook9,1:*
|
||||||
@ -704,13 +697,6 @@ evdev:name:AlpsPS/2 ALPS GlidePoint:dmi:*svnLENOVO:*pvrLenovoideapadY700-14ISK:*
|
|||||||
EVDEV_ABS_35=::27
|
EVDEV_ABS_35=::27
|
||||||
EVDEV_ABS_36=::29
|
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
|
# Lenovo Ideapad 310S-14ISK
|
||||||
evdev:name:AlpsPS/2 ALPS GlidePoint:dmi:*svnLENOVO:*pvrLenovoideapad310S-14ISK:*
|
evdev:name:AlpsPS/2 ALPS GlidePoint:dmi:*svnLENOVO:*pvrLenovoideapad310S-14ISK:*
|
||||||
EVDEV_ABS_00=113:3960:37
|
EVDEV_ABS_00=113:3960:37
|
||||||
@ -760,15 +746,12 @@ evdev:name:AlpsPS/2 ALPS GlidePoint:dmi:*svnLENOVO:*pvrLenovoU41-70:*
|
|||||||
EVDEV_ABS_35=117:3958:36
|
EVDEV_ABS_35=117:3958:36
|
||||||
EVDEV_ABS_36=104:1960:26
|
EVDEV_ABS_36=104:1960:26
|
||||||
|
|
||||||
# Lenovo Thinkpad T490/T495 and T14/P14s Gen1/2 (identical chassis)
|
# Lenovo Thinkpad T490 and T14/P14s Gen1/2
|
||||||
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadT490:*
|
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:*pvrThinkPadT14Gen1:*
|
||||||
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadT14Gen2a:*
|
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:*pvrThinkPadP14sGen1:*
|
||||||
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadP14sGen2a:*
|
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadP14sGen2a:*
|
||||||
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*:svnLENOVO:*pvrThinkPadP14sGen2i:*
|
|
||||||
EVDEV_ABS_00=::44
|
EVDEV_ABS_00=::44
|
||||||
EVDEV_ABS_01=::52
|
EVDEV_ABS_01=::52
|
||||||
EVDEV_ABS_35=::44
|
EVDEV_ABS_35=::44
|
||||||
|
|||||||
@ -320,8 +320,6 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAYANEO:pnKUN:pvr*
|
|||||||
# multi-scancode sequence. The specific preceding codes
|
# multi-scancode sequence. The specific preceding codes
|
||||||
# depend on the model, but the final scancode is always the
|
# depend on the model, but the final scancode is always the
|
||||||
# same.
|
# 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:*
|
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnAYANEO:*
|
||||||
KEYBOARD_KEY_66=f15 # LC (All models)
|
KEYBOARD_KEY_66=f15 # LC (All models)
|
||||||
KEYBOARD_KEY_67=f16 # RC (All models)
|
KEYBOARD_KEY_67=f16 # RC (All models)
|
||||||
@ -667,11 +665,6 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[tT][aA][bB][lL][eE][tT]*:*
|
|||||||
KEYBOARD_KEY_86=pageup
|
KEYBOARD_KEY_86=pageup
|
||||||
KEYBOARD_KEY_87=pagedown
|
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
|
# Pavilion
|
||||||
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[pP][aA][vV][iI][lL][iI][oO][nN]*:*
|
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]*:*
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pn*[pP][aA][vV][iI][lL][iI][oO][nN]*:*
|
||||||
@ -818,8 +811,6 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteBook*:*
|
|||||||
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPElite*x360*:*
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPElite*x360*:*
|
||||||
# HP Elite Dragonfly
|
# HP Elite Dragonfly
|
||||||
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteDragonfly*:*
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteDragonfly*:*
|
||||||
# HP EliteBoard
|
|
||||||
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteBoard*:*
|
|
||||||
# HP ProBook 440 G2
|
# HP ProBook 440 G2
|
||||||
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP440G2:*
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP440G2:*
|
||||||
# HP ProBook
|
# HP ProBook
|
||||||
@ -1172,48 +1163,18 @@ evdev:input:b0003v04B3p301B*
|
|||||||
KEYBOARD_KEY_90007=mail
|
KEYBOARD_KEY_90007=mail
|
||||||
KEYBOARD_KEY_90008=www
|
KEYBOARD_KEY_90008=www
|
||||||
|
|
||||||
# Lenovo Ideapad D330-10IGM and D330-10IGL
|
# Lenovo Ideapad D330-10IGM
|
||||||
# (Tablet buttons)
|
evdev:name:SIPODEV Lenovo HID Device:dmi:*:svnLENOVO:*:pvrLenovoideapadD330-10IGM:*
|
||||||
evdev:atkbd:dmi:*:svnLENOVO:*:pvrLenovoideapadD330-10IG[ML]:*
|
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
|
evdev:name:SIPODEV Lenovo HID Device Consumer Control:dmi:*:svnLENOVO:*:pvrLenovoideapadD330-10IGM:*
|
||||||
# (Dock keyboard) "* Lenovo HID Device"
|
KEYBOARD_KEY_c00ff=fn_esc # Fn+Tab (FnLk toggle)
|
||||||
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
|
# Lenovo Thinkbook 16 G6+ 2024
|
||||||
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn21LG:pvr*
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn21LG:pvr*
|
||||||
KEYBOARD_KEY_0a=!9
|
KEYBOARD_KEY_0a=!9
|
||||||
KEYBOARD_KEY_0b=!0
|
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
|
# LG
|
||||||
###########################################################
|
###########################################################
|
||||||
@ -2399,21 +2360,21 @@ evdev:input:b0003v05FEp1010*
|
|||||||
######################### LACK OF MODIFIER LEDS ############################
|
######################### LACK OF MODIFIER LEDS ############################
|
||||||
# This section lists keyboard which do not have their own LEDs for some
|
# This section lists keyboard which do not have their own LEDs for some
|
||||||
# modifiers. Only Caps-Lock (KEYBOARD_LED_CAPSLOCK) and Num-Lock
|
# modifiers. Only Caps-Lock (KEYBOARD_LED_CAPSLOCK) and Num-Lock
|
||||||
# (KEYBOARD_LED_NUMLOCK) are currently handled and need their values set
|
# (KEYBOARD_LED_CAPSLOCK) are currently handled and need their values set
|
||||||
# to "0" to indicate the absence of LED.
|
# to "0" to indicate the absence of LED.
|
||||||
#
|
#
|
||||||
# Presence of a LED is implicit when the property is absent.
|
# Presence of a LED is implicit when the property is absent.
|
||||||
|
|
||||||
# Apple Wireless keyboards
|
# Apple Wireless keyboards
|
||||||
evdev:input:b0005v05ACp022C*
|
evdev:input:b0005v05aCp022C*
|
||||||
evdev:input:b0005v05ACp022D*
|
evdev:input:b0005v05aCp022D*
|
||||||
evdev:input:b0005v05ACp022E*
|
evdev:input:b0005v05aCp022E*
|
||||||
evdev:input:b0005v05ACp0239*
|
evdev:input:b0005v05aCp0239*
|
||||||
evdev:input:b0005v05ACp023A*
|
evdev:input:b0005v05aCp023A*
|
||||||
evdev:input:b0005v05ACp023B*
|
evdev:input:b0005v05aCp023B*
|
||||||
evdev:input:b0005v05ACp0255*
|
evdev:input:b0005v05aCp0255*
|
||||||
evdev:input:b0005v05ACp0256*
|
evdev:input:b0005v05aCp0256*
|
||||||
evdev:input:b0005v05ACp0257*
|
evdev:input:b0005v05aCp0257*
|
||||||
KEYBOARD_LED_NUMLOCK=0
|
KEYBOARD_LED_NUMLOCK=0
|
||||||
|
|
||||||
# Logitech K750
|
# Logitech K750
|
||||||
|
|||||||
@ -41,9 +41,7 @@
|
|||||||
# PROXIMITY_NEAR_LEVEL=<value>
|
# PROXIMITY_NEAR_LEVEL=<value>
|
||||||
#
|
#
|
||||||
# where <matrix> is a mount-matrix in the format specified in the IIO
|
# where <matrix> is a mount-matrix in the format specified in the IIO
|
||||||
# subsystem[1]. The default, when unset, is the one defined by the ACPI
|
# subsystem[1]. The default, when unset, is equivalent to:
|
||||||
# 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
|
# ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1
|
||||||
# eg. the identity matrix,
|
# eg. the identity matrix,
|
||||||
# and <value> is an integer value above or equal to which an object is
|
# and <value> is an integer value above or equal to which an object is
|
||||||
@ -160,6 +158,10 @@ sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100TAS:*
|
|||||||
sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT200TA:*
|
sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT200TA:*
|
||||||
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
|
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*:*pnTP201SA:*
|
||||||
sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pn*E205SA:*
|
sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pn*E205SA:*
|
||||||
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
|
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
|
||||||
@ -754,14 +756,6 @@ sensor:modalias:acpi:BMA250E*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-1030:*
|
|||||||
sensor:modalias:acpi:SMO8500*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-830:*
|
sensor:modalias:acpi:SMO8500*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-830:*
|
||||||
ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
|
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
|
# IdeaPad Miix 300
|
||||||
sensor:modalias:acpi:SMO8500*:dmi:bvnLENOVO:*:pvrMIIX300-*:*
|
sensor:modalias:acpi:SMO8500*:dmi:bvnLENOVO:*:pvrMIIX300-*:*
|
||||||
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
|
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
|
||||||
|
|||||||
@ -20,65 +20,6 @@
|
|||||||
# Allowed properties are:
|
# Allowed properties are:
|
||||||
# ID_HARDWARE_WALLET=0|1
|
# 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
|
# Trezor Hardware Wallets
|
||||||
################
|
################
|
||||||
@ -89,5 +30,7 @@ usb:v534Cp0001*
|
|||||||
|
|
||||||
# Trezor v2
|
# Trezor v2
|
||||||
usb:v1209p53C0*
|
usb:v1209p53C0*
|
||||||
|
ID_HARDWARE_WALLET=1
|
||||||
|
|
||||||
usb:v1209p53C1*
|
usb:v1209p53C1*
|
||||||
ID_HARDWARE_WALLET=1
|
ID_HARDWARE_WALLET=1
|
||||||
|
|||||||
@ -26,11 +26,11 @@
|
|||||||
# Logitech
|
# Logitech
|
||||||
################
|
################
|
||||||
# Litra Beam
|
# Litra Beam
|
||||||
bluetooth:v046DpC901*
|
bluetooth:v046dpc901*
|
||||||
usb:v046DpC901*
|
usb:v046dpc901*
|
||||||
ID_AV_LIGHTS=1
|
ID_AV_LIGHTS=1
|
||||||
|
|
||||||
# Litra Glow
|
# Litra Glow
|
||||||
bluetooth:v046DpC900*
|
bluetooth:v046dpc900*
|
||||||
usb:v046DpC900*
|
usb:v046dpc900*
|
||||||
ID_AV_LIGHTS=1
|
ID_AV_LIGHTS=1
|
||||||
|
|||||||
@ -43,32 +43,18 @@ usb:v045Ep091E*
|
|||||||
# Arctis Headsets
|
# Arctis Headsets
|
||||||
usb:v1038p12B3*
|
usb:v1038p12B3*
|
||||||
usb:v1038p12B6*
|
usb:v1038p12B6*
|
||||||
|
usb:v1038p12D7*
|
||||||
usb:v1038p1260*
|
usb:v1038p1260*
|
||||||
|
usb:v1038p12AD*
|
||||||
usb:v1038p1252*
|
usb:v1038p1252*
|
||||||
usb:v1038p1280*
|
usb:v1038p1280*
|
||||||
usb:v1038p12D5*
|
|
||||||
usb:v1038p12D7*
|
|
||||||
usb:v1038p12AD*
|
|
||||||
usb:v1038p220E*
|
usb:v1038p220E*
|
||||||
usb:v1038p2212*
|
usb:v1038p2212*
|
||||||
usb:v1038p2216*
|
usb:v1038p2216*
|
||||||
usb:v1038p2236*
|
usb:v1038p2236*
|
||||||
usb:v1038p12C2*
|
usb:v1038p12C2*
|
||||||
usb:v1038p1290*
|
|
||||||
usb:v1038p12EC*
|
|
||||||
usb:v1038p2269*
|
|
||||||
usb:v1038p226D*
|
|
||||||
usb:v1038p2232*
|
|
||||||
usb:v1038p2253*
|
|
||||||
usb:v1038p2202*
|
usb:v1038p2202*
|
||||||
usb:v1038p2206*
|
usb:v1038p2206*
|
||||||
usb:v1038p220A*
|
usb:v1038p220A*
|
||||||
usb:v1038p2258*
|
usb:v1038p1290*
|
||||||
usb:v1038p223A*
|
|
||||||
usb:v1038p227A*
|
|
||||||
usb:v1038p22A1*
|
|
||||||
usb:v1038p227E*
|
|
||||||
usb:v1038p229E*
|
|
||||||
usb:v1038p12E0*
|
|
||||||
usb:v1038p12E5*
|
|
||||||
SOUND_FORM_FACTOR=headset
|
SOUND_FORM_FACTOR=headset
|
||||||
|
|||||||
@ -52,12 +52,6 @@ touchpad:usb:v05acp0324:*
|
|||||||
touchpad:usb:v044ep1221:*
|
touchpad:usb:v044ep1221:*
|
||||||
ID_INPUT_TOUCHPAD_INTEGRATION=external
|
ID_INPUT_TOUCHPAD_INTEGRATION=external
|
||||||
|
|
||||||
###########################################################
|
|
||||||
# Lenovo IdeaPad Duet3 10IGL5 (82AT)
|
|
||||||
###########################################################
|
|
||||||
touchpad:bluetooth:v17efp60fa:*
|
|
||||||
ID_INPUT_TOUCHPAD_INTEGRATION=internal
|
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
# Logitech
|
# Logitech
|
||||||
###########################################################
|
###########################################################
|
||||||
|
|||||||
@ -268,10 +268,6 @@
|
|||||||
<!-- add Index link at top of page -->
|
<!-- add Index link at top of page -->
|
||||||
<xsl:template name="user.header.content">
|
<xsl:template name="user.header.content">
|
||||||
<style>
|
<style>
|
||||||
:root {
|
|
||||||
color-scheme: light dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.headerlink {
|
a.headerlink {
|
||||||
color: #c60f0f;
|
color: #c60f0f;
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
@ -316,13 +312,6 @@
|
|||||||
<xsl:text>"</xsl:text>
|
<xsl:text>"</xsl:text>
|
||||||
</xsl:template>
|
</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 -->
|
<!-- Switch things to UTF-8, ISO-8859-1 is soo yesteryear -->
|
||||||
<xsl:output method="html" encoding="UTF-8" indent="no"/>
|
<xsl:output method="html" encoding="UTF-8" indent="no"/>
|
||||||
|
|
||||||
|
|||||||
@ -616,7 +616,6 @@
|
|||||||
<term><filename>/proc/cmdline</filename></term>
|
<term><filename>/proc/cmdline</filename></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Specifies the kernel command line to use. The first of the files that is found will be used.
|
<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
|
<varname>$KERNEL_INSTALL_CONF_ROOT</varname> may be used to override the search path; see below for
|
||||||
details.</para>
|
details.</para>
|
||||||
|
|
||||||
|
|||||||
@ -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
|
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
|
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
|
<varname>MainPID</varname> differ in the way that the latter immediately reflects whether a main
|
||||||
process is currently running while the former possibly contains information collected from the last run
|
process is currently running while the latter possible contains information collected from the last run
|
||||||
even if the process is no longer around.</para>
|
even if the process is no longer around.</para>
|
||||||
|
|
||||||
<para><varname>StatusText</varname>, <varname>StatusErrno</varname>, <varname>StatusBusError</varname>,
|
<para><varname>StatusText</varname>, <varname>StatusErrno</varname>, <varname>StatusBusError</varname>,
|
||||||
|
|||||||
@ -1171,7 +1171,7 @@ manpages = [
|
|||||||
'systemd-tmpfiles-setup.service'],
|
'systemd-tmpfiles-setup.service'],
|
||||||
''],
|
''],
|
||||||
['systemd-tpm2-clear.service', '8', [], 'ENABLE_BOOTLOADER'],
|
['systemd-tpm2-clear.service', '8', [], 'ENABLE_BOOTLOADER'],
|
||||||
['systemd-tpm2-generator', '8', [], 'ENABLE_BOOTLOADER'],
|
['systemd-tpm2-generator', '8', [], ''],
|
||||||
['systemd-tpm2-setup.service',
|
['systemd-tpm2-setup.service',
|
||||||
'8',
|
'8',
|
||||||
['systemd-tpm2-setup', 'systemd-tpm2-setup-early.service'],
|
['systemd-tpm2-setup', 'systemd-tpm2-setup-early.service'],
|
||||||
|
|||||||
@ -1696,7 +1696,7 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>Shut down and reboot the system.</para>
|
<para>Shut down and reboot the system.</para>
|
||||||
|
|
||||||
<para>This command is mostly equivalent to <command>systemctl start reboot.target
|
<para>This command mostly equivalent to <command>systemctl start reboot.target
|
||||||
--job-mode=replace-irreversibly --no-block</command>, but also prints a wall message to all
|
--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,
|
users. This command is asynchronous; it will return after the reboot operation is enqueued,
|
||||||
without waiting for it to complete.</para>
|
without waiting for it to complete.</para>
|
||||||
|
|||||||
@ -722,7 +722,7 @@
|
|||||||
<listitem><para>Show a list of candidate block devices this command may operate on. Specifically,
|
<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
|
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
|
device node paths along with any of their symlinks. The devices must implement the
|
||||||
<option>hmac-secret</option> extension to be usable.</para>
|
<option>hmac-secret</option> extension to be useable.</para>
|
||||||
|
|
||||||
<xi:include href="version-info.xml" xpointer="v257"/></listitem>
|
<xi:include href="version-info.xml" xpointer="v257"/></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|||||||
@ -85,8 +85,8 @@
|
|||||||
initrd. This accepts a device node path (usually <filename>/dev/disk/by-uuid/…</filename> or
|
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
|
<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>gpt-auto</literal>, <literal>gpt-auto-force</literal>, <literal>dissect</literal>,
|
||||||
<literal>dissect-force</literal>, <literal>fstab</literal>, <literal>tmpfs</literal>,
|
<literal>dissect-force</literal>, <literal>fstab</literal>, <literal>fstab</literal>, and
|
||||||
<literal>bind:…</literal>, and <literal>off</literal>.</para>
|
<literal>off</literal>.</para>
|
||||||
|
|
||||||
<para>Set to <literal>gpt-auto</literal>, <literal>gpt-auto-force</literal>,
|
<para>Set to <literal>gpt-auto</literal>, <literal>gpt-auto-force</literal>,
|
||||||
<literal>dissect</literal>, <literal>dissect-force</literal> to explicitly request automatic root
|
<literal>dissect</literal>, <literal>dissect-force</literal> to explicitly request automatic root
|
||||||
|
|||||||
@ -317,7 +317,7 @@
|
|||||||
<citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
|
<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
|
<para>Defaults to true. (Note that this is unlike the option of the same name to
|
||||||
<citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
<citerefentry><refentrytitle>systemd-vmspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||||
that defaults to false.)</para>
|
that defaults to false.)</para>
|
||||||
|
|
||||||
<xi:include href="version-info.xml" xpointer="v258"/></listitem>
|
<xi:include href="version-info.xml" xpointer="v258"/></listitem>
|
||||||
|
|||||||
@ -579,12 +579,11 @@
|
|||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>RestartSteps=</varname></term>
|
<term><varname>RestartSteps=</varname></term>
|
||||||
<listitem><para>Configures the number of exponential steps to take to increase the interval
|
<listitem><para>Configures the number of steps to take to increase the interval
|
||||||
of auto-restarts from <varname>RestartSec=</varname> to <varname>RestartMaxDelaySec=</varname>.
|
of auto-restarts from <varname>RestartSec=</varname> to <varname>RestartMaxDelaySec=</varname>.
|
||||||
Takes a positive integer or 0 to disable it. Defaults to 0.</para>
|
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 and
|
<para>This setting is effective only if <varname>RestartMaxDelaySec=</varname> is also set.</para>
|
||||||
<varname>RestartSec=</varname> is not zero.</para>
|
|
||||||
|
|
||||||
<xi:include href="version-info.xml" xpointer="v254"/></listitem>
|
<xi:include href="version-info.xml" xpointer="v254"/></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@ -596,8 +595,7 @@
|
|||||||
in the same format as <varname>RestartSec=</varname>, or <literal>infinity</literal>
|
in the same format as <varname>RestartSec=</varname>, or <literal>infinity</literal>
|
||||||
to disable the setting. Defaults to <literal>infinity</literal>.</para>
|
to disable the setting. Defaults to <literal>infinity</literal>.</para>
|
||||||
|
|
||||||
<para>This setting is effective only if <varname>RestartSteps=</varname> is also set and
|
<para>This setting is effective only if <varname>RestartSteps=</varname> is also set.</para>
|
||||||
<varname>RestartSec=</varname> is not zero.</para>
|
|
||||||
|
|
||||||
<xi:include href="version-info.xml" xpointer="v254"/></listitem>
|
<xi:include href="version-info.xml" xpointer="v254"/></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|||||||
@ -119,15 +119,13 @@ r - 500-900
|
|||||||
bearing the same name unless the ID field specifies it. The account will be
|
bearing the same name unless the ID field specifies it. The account will be
|
||||||
created disabled, so that logins are not allowed.</para>
|
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
|
<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
|
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
|
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
|
<literal>u!</literal>, the account is also locked, which makes a difference for non-password forms
|
||||||
of authentication, such as SSH or similar.</para>
|
of authentication, such as SSH or similar.</para>
|
||||||
|
|
||||||
<xi:include href="version-info.xml" xpointer="v257"/></listitem>
|
<xi:include href="version-info.xml" xpointer="v215"/></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
|||||||
@ -357,10 +357,7 @@
|
|||||||
<listitem><para>The os-release description (the <literal>.osrel</literal> section). The argument
|
<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
|
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
|
<citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry> file
|
||||||
will be picked up from the host system. If explicitly set to an empty string, the ".osrel" section
|
will be picked up from the host system.</para>
|
||||||
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>
|
<xi:include href="version-info.xml" xpointer="v253"/></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|||||||
@ -1694,8 +1694,6 @@ if conf.get('BPF_FRAMEWORK') == 1
|
|||||||
bpf_clang_flags = [
|
bpf_clang_flags = [
|
||||||
'-std=gnu17',
|
'-std=gnu17',
|
||||||
'-Wno-compare-distinct-pointer-types',
|
'-Wno-compare-distinct-pointer-types',
|
||||||
'-Wno-microsoft-anon-tag',
|
|
||||||
'-fms-extensions',
|
|
||||||
'-fno-stack-protector',
|
'-fno-stack-protector',
|
||||||
'-O2',
|
'-O2',
|
||||||
'-target',
|
'-target',
|
||||||
@ -1706,7 +1704,6 @@ if conf.get('BPF_FRAMEWORK') == 1
|
|||||||
|
|
||||||
bpf_gcc_flags = [
|
bpf_gcc_flags = [
|
||||||
'-std=gnu17',
|
'-std=gnu17',
|
||||||
'-fms-extensions',
|
|
||||||
'-fno-stack-protector',
|
'-fno-stack-protector',
|
||||||
'-fno-ssa-phiopt',
|
'-fno-ssa-phiopt',
|
||||||
'-O2',
|
'-O2',
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
258.4
|
258.3
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
|
|
||||||
[Config]
|
[Config]
|
||||||
MinimumVersion=commit:14d2d37a1923c03062f55454b2b61d0c64db6238
|
MinimumVersion=commit:5a476a92deca8ad54869e5d416217aa1bb137b25
|
||||||
Dependencies=
|
Dependencies=
|
||||||
exitrd
|
exitrd
|
||||||
initrd
|
initrd
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
|
|
||||||
logger --journald <<EOF
|
logger --journald <<EOF
|
||||||
|
|||||||
@ -1,10 +0,0 @@
|
|||||||
# 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
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: CC-0
|
# SPDX-License-Identifier: CC-0
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# We don't use mkosi.extra because /usr/sbin could be a symlink and cp doesn't handle that properly until
|
# 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.
|
# coreutils 9.5 or newer.
|
||||||
cat >"$BUILDROOT/sbin/init" <<EOF
|
cat >"$BUILDROOT/sbin/init" <<EOF
|
||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
echo "Hello from dummy init, beautiful day, innit?"
|
echo "Hello from dummy init, beautiful day, innit?"
|
||||||
ip link
|
ip link
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
set -o nounset
|
set -o nounset
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
set -o nounset
|
set -o nounset
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
set -e
|
set -e
|
||||||
set -o nounset
|
set -o nounset
|
||||||
|
|||||||
@ -8,6 +8,7 @@ Distribution=|ubuntu
|
|||||||
PrepareScripts=%D/mkosi/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.prepare
|
PrepareScripts=%D/mkosi/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.prepare
|
||||||
Packages=
|
Packages=
|
||||||
clang-tools
|
clang-tools
|
||||||
|
gh
|
||||||
iwyu
|
iwyu
|
||||||
lcov
|
lcov
|
||||||
mypy
|
mypy
|
||||||
|
|||||||
@ -10,10 +10,6 @@
|
|||||||
# the Free Software Foundation; either version 2.1 of the License, or
|
# the Free Software Foundation; either version 2.1 of the License, or
|
||||||
# (at your option) any later version.
|
# (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?
|
# Not bash?
|
||||||
[ -n "${BASH_VERSION:-}" ] || return 0
|
[ -n "${BASH_VERSION:-}" ] || return 0
|
||||||
|
|
||||||
|
|||||||
@ -36,7 +36,7 @@ _systemd_vmspawn() {
|
|||||||
[BIND]='--bind --bind-ro'
|
[BIND]='--bind --bind-ro'
|
||||||
[SSH_KEY]='--ssh-key'
|
[SSH_KEY]='--ssh-key'
|
||||||
[CONSOLE]='--console'
|
[CONSOLE]='--console'
|
||||||
[ARG]='--cpus --ram --vsock-cid -M --machine --uuid --private-users --background --set-credential --load-credential'
|
[ARG]='--cpus --ram --vsock-cid -M --machine --uuid--private-users --background --set-credential --load-credential'
|
||||||
)
|
)
|
||||||
|
|
||||||
_init_completion || return
|
_init_completion || return
|
||||||
|
|||||||
@ -103,7 +103,7 @@ int verb_image_policy(int argc, char *argv[], void *userdata) {
|
|||||||
else if (streq(argv[i], "@host"))
|
else if (streq(argv[i], "@host"))
|
||||||
p = &image_policy_host;
|
p = &image_policy_host;
|
||||||
else {
|
else {
|
||||||
r = image_policy_from_string(argv[i], /* graceful= */ false, &pbuf);
|
r = image_policy_from_string(argv[i], &pbuf);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to parse image policy '%s': %m", argv[i]);
|
return log_error_errno(r, "Failed to parse image policy '%s': %m", argv[i]);
|
||||||
|
|
||||||
|
|||||||
@ -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 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[] = {
|
static const sd_json_dispatch_field dispatch_table[] = {
|
||||||
{ "message", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, offsetof(MethodAskParameters, message), SD_JSON_STRICT },
|
{ "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), SD_JSON_STRICT },
|
{ "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), SD_JSON_STRICT },
|
{ "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), SD_JSON_STRICT },
|
{ "id", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, offsetof(MethodAskParameters, id), 0 },
|
||||||
{ "timeoutUSec", _SD_JSON_VARIANT_TYPE_INVALID, sd_json_dispatch_uint64, offsetof(MethodAskParameters, timeout_usec), 0 },
|
{ "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 },
|
{ "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 },
|
{ "acceptCached", SD_JSON_VARIANT_BOOLEAN, sd_json_dispatch_tristate, offsetof(MethodAskParameters, accept_cached), 0 },
|
||||||
|
|||||||
@ -7,6 +7,3 @@ executables += [
|
|||||||
'sources' : files('ask-password.c'),
|
'sources' : files('ask-password.c'),
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
install_data('io.systemd.ask-password.policy',
|
|
||||||
install_dir : polkitpolicydir)
|
|
||||||
|
|||||||
@ -48,7 +48,7 @@ void reset_ansi_feature_caches(void);
|
|||||||
#define ANSI_BRIGHT_CYAN "\x1B[0;96m"
|
#define ANSI_BRIGHT_CYAN "\x1B[0;96m"
|
||||||
#define ANSI_BRIGHT_WHITE "\x1B[0;97m"
|
#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 */
|
/* Bold/highlighted */
|
||||||
#define ANSI_HIGHLIGHT_BLACK "\x1B[0;1;30m"
|
#define ANSI_HIGHLIGHT_BLACK "\x1B[0;1;30m"
|
||||||
|
|||||||
@ -38,7 +38,7 @@
|
|||||||
/* The structure to pass to name_to_handle_at() on cgroupfs2 */
|
/* The structure to pass to name_to_handle_at() on cgroupfs2 */
|
||||||
typedef union {
|
typedef union {
|
||||||
struct file_handle file_handle;
|
struct file_handle file_handle;
|
||||||
uint8_t space[MAX_HANDLE_SZ];
|
uint8_t space[offsetof(struct file_handle, f_handle) + sizeof(uint64_t)];
|
||||||
} cg_file_handle;
|
} cg_file_handle;
|
||||||
|
|
||||||
#define CG_FILE_HANDLE_INIT \
|
#define CG_FILE_HANDLE_INIT \
|
||||||
|
|||||||
@ -349,18 +349,20 @@ int decompress_blob_xz(
|
|||||||
assert(dst_size);
|
assert(dst_size);
|
||||||
|
|
||||||
#if HAVE_XZ
|
#if HAVE_XZ
|
||||||
|
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
|
||||||
|
lzma_ret ret;
|
||||||
|
size_t space;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
r = dlopen_lzma();
|
r = dlopen_lzma();
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
|
ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
|
||||||
lzma_ret ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
|
|
||||||
if (ret != LZMA_OK)
|
if (ret != LZMA_OK)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
size_t space = MIN(src_size * 2, dst_max ?: SIZE_MAX);
|
space = MIN(src_size * 2, dst_max ?: SIZE_MAX);
|
||||||
if (!greedy_realloc(dst, space, 1))
|
if (!greedy_realloc(dst, space, 1))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
@ -542,21 +544,23 @@ int decompress_startswith_xz(
|
|||||||
assert(prefix);
|
assert(prefix);
|
||||||
|
|
||||||
#if HAVE_XZ
|
#if HAVE_XZ
|
||||||
|
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
|
||||||
|
size_t allocated;
|
||||||
|
lzma_ret ret;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
r = dlopen_lzma();
|
r = dlopen_lzma();
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
|
ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
|
||||||
lzma_ret ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
|
|
||||||
if (ret != LZMA_OK)
|
if (ret != LZMA_OK)
|
||||||
return -EBADMSG;
|
return -EBADMSG;
|
||||||
|
|
||||||
if (!(greedy_realloc(buffer, ALIGN_8(prefix_len + 1), 1)))
|
if (!(greedy_realloc(buffer, ALIGN_8(prefix_len + 1), 1)))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
size_t allocated = MALLOC_SIZEOF_SAFE(*buffer);
|
allocated = MALLOC_SIZEOF_SAFE(*buffer);
|
||||||
|
|
||||||
s.next_in = src;
|
s.next_in = src;
|
||||||
s.avail_in = src_size;
|
s.avail_in = src_size;
|
||||||
@ -762,21 +766,22 @@ int compress_stream_xz(int fdf, int fdt, uint64_t max_bytes, uint64_t *ret_uncom
|
|||||||
assert(fdt >= 0);
|
assert(fdt >= 0);
|
||||||
|
|
||||||
#if HAVE_XZ
|
#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;
|
int r;
|
||||||
|
|
||||||
r = dlopen_lzma();
|
r = dlopen_lzma();
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
|
ret = sym_lzma_easy_encoder(&s, LZMA_PRESET_DEFAULT, LZMA_CHECK_CRC64);
|
||||||
lzma_ret ret = sym_lzma_easy_encoder(&s, LZMA_PRESET_DEFAULT, LZMA_CHECK_CRC64);
|
|
||||||
if (ret != LZMA_OK)
|
if (ret != LZMA_OK)
|
||||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
"Failed to initialize XZ encoder: code %u",
|
"Failed to initialize XZ encoder: code %u",
|
||||||
ret);
|
ret);
|
||||||
|
|
||||||
uint8_t buf[BUFSIZ], out[BUFSIZ];
|
|
||||||
lzma_action action = LZMA_RUN;
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (s.avail_in == 0 && action == LZMA_RUN) {
|
if (s.avail_in == 0 && action == LZMA_RUN) {
|
||||||
size_t m = sizeof(buf);
|
size_t m = sizeof(buf);
|
||||||
@ -941,21 +946,23 @@ int decompress_stream_xz(int fdf, int fdt, uint64_t max_bytes) {
|
|||||||
assert(fdt >= 0);
|
assert(fdt >= 0);
|
||||||
|
|
||||||
#if HAVE_XZ
|
#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;
|
int r;
|
||||||
|
|
||||||
r = dlopen_lzma();
|
r = dlopen_lzma();
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
_cleanup_(lzma_end_wrapper) lzma_stream s = LZMA_STREAM_INIT;
|
ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
|
||||||
lzma_ret ret = sym_lzma_stream_decoder(&s, UINT64_MAX, 0);
|
|
||||||
if (ret != LZMA_OK)
|
if (ret != LZMA_OK)
|
||||||
return log_debug_errno(SYNTHETIC_ERRNO(ENOMEM),
|
return log_debug_errno(SYNTHETIC_ERRNO(ENOMEM),
|
||||||
"Failed to initialize XZ decoder: code %u",
|
"Failed to initialize XZ decoder: code %u",
|
||||||
ret);
|
ret);
|
||||||
|
|
||||||
uint8_t buf[BUFSIZ], out[BUFSIZ];
|
|
||||||
lzma_action action = LZMA_RUN;
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (s.avail_in == 0 && action == LZMA_RUN) {
|
if (s.avail_in == 0 && action == LZMA_RUN) {
|
||||||
ssize_t n;
|
ssize_t n;
|
||||||
|
|||||||
@ -56,7 +56,6 @@ NAME_TO_MAGIC = {
|
|||||||
# gfs is an old version of gfs2 and reuses the magic
|
# gfs is an old version of gfs2 and reuses the magic
|
||||||
'gfs': ['GFS2_MAGIC'],
|
'gfs': ['GFS2_MAGIC'],
|
||||||
'gfs2': ['GFS2_MAGIC'],
|
'gfs2': ['GFS2_MAGIC'],
|
||||||
'gmem': ['GUEST_MEMFD_MAGIC'],
|
|
||||||
'hostfs': ['HOSTFS_SUPER_MAGIC'],
|
'hostfs': ['HOSTFS_SUPER_MAGIC'],
|
||||||
'hpfs': ['HPFS_SUPER_MAGIC'],
|
'hpfs': ['HPFS_SUPER_MAGIC'],
|
||||||
'hugetlbfs': ['HUGETLBFS_MAGIC'],
|
'hugetlbfs': ['HUGETLBFS_MAGIC'],
|
||||||
|
|||||||
@ -61,7 +61,7 @@ int parse_tristate_full(const char *v, const char *third, int *ret) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int parse_pid(const char *s, pid_t *ret) {
|
int parse_pid(const char *s, pid_t* ret_pid) {
|
||||||
unsigned long ul = 0;
|
unsigned long ul = 0;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
int r;
|
int r;
|
||||||
@ -80,8 +80,8 @@ int parse_pid(const char *s, pid_t *ret) {
|
|||||||
if (!pid_is_valid(pid))
|
if (!pid_is_valid(pid))
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
|
|
||||||
if (ret)
|
if (ret_pid)
|
||||||
*ret = pid;
|
*ret_pid = pid;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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) {
|
static inline int parse_tristate(const char *v, int *ret) {
|
||||||
return parse_tristate_full(v, NULL, ret);
|
return parse_tristate_full(v, NULL, ret);
|
||||||
}
|
}
|
||||||
int parse_pid(const char *s, pid_t *ret);
|
int parse_pid(const char *s, pid_t* ret_pid);
|
||||||
int parse_mode(const char *s, mode_t *ret);
|
int parse_mode(const char *s, mode_t *ret);
|
||||||
int parse_ifindex(const char *s);
|
int parse_ifindex(const char *s);
|
||||||
int parse_mtu(int family, const char *s, uint32_t *ret);
|
int parse_mtu(int family, const char *s, uint32_t *ret);
|
||||||
|
|||||||
@ -239,7 +239,7 @@ int pidfd_get_inode_id_impl(int fd, uint64_t *ret) {
|
|||||||
if (file_handle_supported) {
|
if (file_handle_supported) {
|
||||||
union {
|
union {
|
||||||
struct file_handle file_handle;
|
struct file_handle file_handle;
|
||||||
uint8_t space[MAX_HANDLE_SZ];
|
uint8_t space[offsetof(struct file_handle, f_handle) + sizeof(uint64_t)];
|
||||||
} fh = {
|
} fh = {
|
||||||
.file_handle.handle_bytes = sizeof(uint64_t),
|
.file_handle.handle_bytes = sizeof(uint64_t),
|
||||||
.file_handle.handle_type = FILEID_KERNFS,
|
.file_handle.handle_type = FILEID_KERNFS,
|
||||||
|
|||||||
@ -4,7 +4,6 @@
|
|||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <spawn.h>
|
#include <spawn.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
#include <sys/personality.h>
|
#include <sys/personality.h>
|
||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
@ -21,7 +20,6 @@
|
|||||||
#include "alloc-util.h"
|
#include "alloc-util.h"
|
||||||
#include "architecture.h"
|
#include "architecture.h"
|
||||||
#include "argv-util.h"
|
#include "argv-util.h"
|
||||||
#include "capability-util.h"
|
|
||||||
#include "cgroup-util.h"
|
#include "cgroup-util.h"
|
||||||
#include "dirent-util.h"
|
#include "dirent-util.h"
|
||||||
#include "env-file.h"
|
#include "env-file.h"
|
||||||
@ -2291,26 +2289,6 @@ int proc_dir_read_pidref(DIR *d, PidRef *ret) {
|
|||||||
return 0;
|
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[] = {
|
static const char *const sigchld_code_table[] = {
|
||||||
[CLD_EXITED] = "exited",
|
[CLD_EXITED] = "exited",
|
||||||
[CLD_KILLED] = "killed",
|
[CLD_KILLED] = "killed",
|
||||||
|
|||||||
@ -265,7 +265,5 @@ int proc_dir_open(DIR **ret);
|
|||||||
int proc_dir_read(DIR *d, pid_t *ret);
|
int proc_dir_read(DIR *d, pid_t *ret);
|
||||||
int proc_dir_read_pidref(DIR *d, PidRef *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);
|
_noreturn_ void report_errno_and_exit(int errno_fd, int error);
|
||||||
int read_errno(int errno_fd);
|
int read_errno(int errno_fd);
|
||||||
|
|||||||
@ -415,8 +415,6 @@ int path_is_network_fs(const char *path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int proc_mounted(void) {
|
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;
|
int r;
|
||||||
|
|
||||||
/* A quick check of procfs is properly mounted */
|
/* A quick check of procfs is properly mounted */
|
||||||
|
|||||||
@ -735,7 +735,7 @@ char* strip_tab_ansi(char **ibuf, size_t *_isz, size_t highlight[2]) {
|
|||||||
case STATE_CSI:
|
case STATE_CSI:
|
||||||
assert(n_carriage_returns == 0);
|
assert(n_carriage_returns == 0);
|
||||||
|
|
||||||
if (eot || !strchr(DIGITS ";:m", *i)) { /* EOT or invalid chars in sequence */
|
if (eot || !strchr("01234567890;m", *i)) { /* EOT or invalid chars in sequence */
|
||||||
fputc('\x1B', f);
|
fputc('\x1B', f);
|
||||||
fputc('[', f);
|
fputc('[', f);
|
||||||
advance_offsets(i - *ibuf, highlight, shift, 2);
|
advance_offsets(i - *ibuf, highlight, shift, 2);
|
||||||
|
|||||||
@ -969,8 +969,7 @@ static int terminal_reset_ansi_seq(int fd) {
|
|||||||
|
|
||||||
k = loop_write_full(fd,
|
k = loop_write_full(fd,
|
||||||
"\033[!p" /* soft terminal reset */
|
"\033[!p" /* soft terminal reset */
|
||||||
ANSI_OSC "104" ANSI_ST /* reset color palette via OSC 104 */
|
"\033]104\007" /* reset colors */
|
||||||
ANSI_NORMAL /* reset colors */
|
|
||||||
"\033[?7h" /* enable line-wrapping */
|
"\033[?7h" /* enable line-wrapping */
|
||||||
"\033[1G" /* place cursor at beginning of current line */
|
"\033[1G" /* place cursor at beginning of current line */
|
||||||
"\033[0J", /* erase till end of screen */
|
"\033[0J", /* erase till end of screen */
|
||||||
|
|||||||
@ -1735,39 +1735,6 @@ bool in_utc_timezone(void) {
|
|||||||
return timezone == 0 && daylight == 0;
|
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) {
|
int time_change_fd(void) {
|
||||||
|
|
||||||
/* We only care for the cancellation event, hence we set the timeout to the latest possible value. */
|
/* We only care for the cancellation event, hence we set the timeout to the latest possible value. */
|
||||||
|
|||||||
@ -205,7 +205,19 @@ static inline usec_t usec_sub_signed(usec_t timestamp, int64_t delta) {
|
|||||||
return usec_sub_unsigned(timestamp, (usec_t) delta);
|
return usec_sub_unsigned(timestamp, (usec_t) delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
int usleep_safe(usec_t usec);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
/* The last second we can format is 31. Dec 9999, 1s before midnight, because otherwise we'd enter 5 digit
|
/* 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. */
|
* year territory. However, since we want to stay away from this in all timezones we take one day off. */
|
||||||
|
|||||||
@ -26,11 +26,6 @@ static int run(const char *dest, const char *dest_early, const char *dest_late)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (generator_soft_rebooted()) {
|
|
||||||
log_debug("Skipping generator, current system is entered via soft-reboot.");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_efi_boot()) {
|
if (!is_efi_boot()) {
|
||||||
log_debug("Skipping generator, not an EFI boot.");
|
log_debug("Skipping generator, not an EFI boot.");
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -497,8 +497,7 @@ char* line_get_key_value(char *s, const char *sep, size_t *pos, char **ret_key,
|
|||||||
value++;
|
value++;
|
||||||
|
|
||||||
/* unquote */
|
/* unquote */
|
||||||
if ((value[0] == '"' && line[linelen - 1] == '"') ||
|
if (value[0] == '"' && line[linelen - 1] == '"') {
|
||||||
(value[0] == '\'' && line[linelen - 1] == '\'')) {
|
|
||||||
value++;
|
value++;
|
||||||
line[linelen - 1] = '\0';
|
line[linelen - 1] = '\0';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1289,9 +1289,9 @@ static EFI_STATUS run(EFI_HANDLE image) {
|
|||||||
|
|
||||||
/* Combine the initrds into one */
|
/* Combine the initrds into one */
|
||||||
_cleanup_pages_ Pages initrd_pages = {};
|
_cleanup_pages_ Pages initrd_pages = {};
|
||||||
struct iovec final_initrd = {};
|
struct iovec final_initrd;
|
||||||
if (n_all_initrds > 1) {
|
if (n_all_initrds > 1) {
|
||||||
/* If there is more then 1 initrd we need to combine them */
|
/* There will always be a base initrd, if this counter is higher, we need to combine them */
|
||||||
err = combine_initrds(all_initrds, n_all_initrds, &initrd_pages, &final_initrd.iov_len);
|
err = combine_initrds(all_initrds, n_all_initrds, &initrd_pages, &final_initrd.iov_len);
|
||||||
if (err != EFI_SUCCESS)
|
if (err != EFI_SUCCESS)
|
||||||
return err;
|
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 */
|
/* Given these might be large let's free them explicitly before we pass control to Linux */
|
||||||
initrds_free(&initrds);
|
initrds_free(&initrds);
|
||||||
} else if (n_all_initrds == 1)
|
} else
|
||||||
final_initrd = all_initrds[0];
|
final_initrd = all_initrds[0];
|
||||||
|
|
||||||
struct iovec kernel = IOVEC_MAKE(
|
struct iovec kernel = IOVEC_MAKE(
|
||||||
|
|||||||
@ -3925,7 +3925,7 @@ int bus_exec_context_set_transient_property(
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
if (!UNIT_WRITE_FLAGS_NOOP(flags) && empty) {
|
if (empty) {
|
||||||
bind_mount_free_many(c->bind_mounts, c->n_bind_mounts);
|
bind_mount_free_many(c->bind_mounts, c->n_bind_mounts);
|
||||||
c->bind_mounts = NULL;
|
c->bind_mounts = NULL;
|
||||||
c->n_bind_mounts = 0;
|
c->n_bind_mounts = 0;
|
||||||
@ -3970,7 +3970,7 @@ int bus_exec_context_set_transient_property(
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
if (!UNIT_WRITE_FLAGS_NOOP(flags) && empty) {
|
if (empty) {
|
||||||
temporary_filesystem_free_many(c->temporary_filesystems, c->n_temporary_filesystems);
|
temporary_filesystem_free_many(c->temporary_filesystems, c->n_temporary_filesystems);
|
||||||
c->temporary_filesystems = NULL;
|
c->temporary_filesystems = NULL;
|
||||||
c->n_temporary_filesystems = 0;
|
c->n_temporary_filesystems = 0;
|
||||||
@ -4319,7 +4319,7 @@ int bus_exec_context_set_transient_property(
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
r = image_policy_from_string(s, /* graceful= */ true, &p);
|
r = image_policy_from_string(s, &p);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Failed to parse image policy string: %s", s);
|
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Failed to parse image policy string: %s", s);
|
||||||
|
|
||||||
|
|||||||
@ -1199,7 +1199,7 @@ static int property_get_cpu_usage(
|
|||||||
|
|
||||||
r = unit_get_cpu_usage(u, &ns);
|
r = unit_get_cpu_usage(u, &ns);
|
||||||
if (r < 0 && r != -ENODATA)
|
if (r < 0 && r != -ENODATA)
|
||||||
log_unit_warning_errno(u, r, "Failed to get CPU usage: %m");
|
log_unit_warning_errno(u, r, "Failed to get cpuacct.usage attribute: %m");
|
||||||
|
|
||||||
return sd_bus_message_append(reply, "t", ns);
|
return sd_bus_message_append(reply, "t", ns);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -736,20 +736,11 @@ int dynamic_user_lookup_name(Manager *m, const char *name, uid_t *ret) {
|
|||||||
if (!d)
|
if (!d)
|
||||||
return -ESRCH;
|
return -ESRCH;
|
||||||
|
|
||||||
uid_t uid;
|
r = dynamic_user_current(d, ret);
|
||||||
r = dynamic_user_current(d, &uid);
|
|
||||||
if (r == -EAGAIN) /* not realized yet? */
|
if (r == -EAGAIN) /* not realized yet? */
|
||||||
return -ESRCH;
|
return -ESRCH;
|
||||||
if (r < 0)
|
|
||||||
return r;
|
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) {
|
int dynamic_creds_make(Manager *m, const char *user, const char *group, DynamicCreds **ret) {
|
||||||
|
|||||||
@ -3726,21 +3726,21 @@ static int exec_context_deserialize(ExecContext *c, FILE *f) {
|
|||||||
if (c->root_image_policy)
|
if (c->root_image_policy)
|
||||||
return -EINVAL; /* duplicated */
|
return -EINVAL; /* duplicated */
|
||||||
|
|
||||||
r = image_policy_from_string(val, /* graceful= */ true, &c->root_image_policy);
|
r = image_policy_from_string(val, &c->root_image_policy);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
} else if ((val = startswith(l, "exec-context-mount-image-policy="))) {
|
} else if ((val = startswith(l, "exec-context-mount-image-policy="))) {
|
||||||
if (c->mount_image_policy)
|
if (c->mount_image_policy)
|
||||||
return -EINVAL; /* duplicated */
|
return -EINVAL; /* duplicated */
|
||||||
|
|
||||||
r = image_policy_from_string(val, /* graceful= */ true, &c->mount_image_policy);
|
r = image_policy_from_string(val, &c->mount_image_policy);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
} else if ((val = startswith(l, "exec-context-extension-image-policy="))) {
|
} else if ((val = startswith(l, "exec-context-extension-image-policy="))) {
|
||||||
if (c->extension_image_policy)
|
if (c->extension_image_policy)
|
||||||
return -EINVAL; /* duplicated */
|
return -EINVAL; /* duplicated */
|
||||||
|
|
||||||
r = image_policy_from_string(val, /* graceful= */ true, &c->extension_image_policy);
|
r = image_policy_from_string(val, &c->extension_image_policy);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
} else
|
} else
|
||||||
|
|||||||
@ -789,7 +789,7 @@ static void job_emit_done_message(Unit *u, uint32_t job_id, JobType t, JobResult
|
|||||||
log_unit_struct(
|
log_unit_struct(
|
||||||
u,
|
u,
|
||||||
job_done_messages[result].log_level,
|
job_done_messages[result].log_level,
|
||||||
LOG_MESSAGE("%s skipped, no trigger condition checks were met.",
|
LOG_MESSAGE("%s was skipped because no trigger condition checks were met.",
|
||||||
ident),
|
ident),
|
||||||
LOG_ITEM("JOB_ID=%" PRIu32, job_id),
|
LOG_ITEM("JOB_ID=%" PRIu32, job_id),
|
||||||
LOG_ITEM("JOB_TYPE=%s", job_type_to_string(t)),
|
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(
|
log_unit_struct(
|
||||||
u,
|
u,
|
||||||
job_done_messages[result].log_level,
|
job_done_messages[result].log_level,
|
||||||
LOG_MESSAGE("%s skipped, unmet condition check %s=%s%s",
|
LOG_MESSAGE("%s was skipped because of an unmet condition check (%s=%s%s).",
|
||||||
ident,
|
ident,
|
||||||
condition_type_to_string(c->type),
|
condition_type_to_string(c->type),
|
||||||
c->negate ? "!" : "",
|
c->negate ? "!" : "",
|
||||||
|
|||||||
@ -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");
|
return (void) log_warning_errno(r, "Failed to determine current OOM score adjustment value, ignoring: %m");
|
||||||
|
|
||||||
assert_cc(100 <= OOM_SCORE_ADJ_MAX);
|
assert_cc(100 <= OOM_SCORE_ADJ_MAX);
|
||||||
b = saturate_add(a, 100, OOM_SCORE_ADJ_MAX);
|
b = a >= OOM_SCORE_ADJ_MAX - 100 ? OOM_SCORE_ADJ_MAX : a + 100;
|
||||||
|
|
||||||
if (a == b)
|
if (a == b)
|
||||||
return;
|
return;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user