1
0
Fork 0

Compare commits

...

3 commits

Author SHA1 Message Date
2f69699033
Adding upstream version 257.13.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2026-05-04 06:08:42 +02:00
3b4816665e
Adding upstream version 257.9.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-10-19 15:48:05 +02:00
8bfb35e387
Adding upstream version 257.8.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-08-30 04:53:10 +02:00

View file

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

View file

@ -6,14 +6,20 @@ updates:
directory: "/"
schedule:
interval: "monthly"
cooldown:
default-days: 7
open-pull-requests-limit: 2
- package-ecosystem: "pip"
directory: "/.github/workflows"
schedule:
interval: "monthly"
cooldown:
default-days: 7
open-pull-requests-limit: 2
- package-ecosystem: "docker"
directory: "/.clusterfuzzlite"
schedule:
interval: "monthly"
cooldown:
default-days: 7
open-pull-requests-limit: 2

2
.github/labeler.yml vendored
View file

@ -195,7 +195,7 @@ run:
- any-glob-to-any-file: ['src/run/*', 'man/systemd-run*']
sd-boot/sd-stub/bootctl:
- changed-files:
- any-glob-to-any-file: ['src/boot/**/*', 'man/bootctl*', 'man/systemd-boot.xml']
- any-glob-to-any-file: ['src/boot/**/*', 'src/bootctl/*', 'man/bootctl*', 'man/systemd-boot.xml']
sd-bus:
- changed-files:
- any-glob-to-any-file: '**/sd-bus*/**'

View file

@ -27,6 +27,7 @@ PACKAGES=(
isc-dhcp-client
itstool
kbd
libarchive-dev
libblkid-dev
libbpf-dev
libcap-dev
@ -43,10 +44,10 @@ PACKAGES=(
libqrencode-dev
libssl-dev
libtss2-dev
libxen-dev
libxkbcommon-dev
libxtables-dev
libzstd-dev
linux-tools-generic
mold
mount
net-tools
@ -70,6 +71,10 @@ LINKER="${LINKER:?}"
CRYPTOLIB="${CRYPTOLIB:?}"
RELEASE="$(lsb_release -cs)"
if [ "$(uname -m)" = "aarch64" ] || [ "$(uname -m)" = "x86_64" ]; then
PACKAGES+=(libxen-dev)
fi
# Note: As we use postfixed clang/gcc binaries, we need to override $AR
# as well, otherwise meson falls back to ar from binutils which
# doesn't work with LTO
@ -96,7 +101,7 @@ if [[ "$COMPILER" == clang ]]; then
sudo tee /etc/apt/sources.list.d/llvm-toolchain.list
fi
PACKAGES+=("clang-$COMPILER_VERSION" "lldb-$COMPILER_VERSION" "python3-lldb-$COMPILER_VERSION" "lld-$COMPILER_VERSION" "clangd-$COMPILER_VERSION")
PACKAGES+=("clang-$COMPILER_VERSION" "lldb-$COMPILER_VERSION" "python3-lldb-$COMPILER_VERSION" "lld-$COMPILER_VERSION" "clangd-$COMPILER_VERSION" "llvm-$COMPILER_VERSION")
elif [[ "$COMPILER" == gcc ]]; then
CC="gcc-$COMPILER_VERSION"
CXX="g++-$COMPILER_VERSION"
@ -110,17 +115,26 @@ elif [[ "$COMPILER" == gcc ]]; then
sudo add-apt-repository -y --no-update ppa:ubuntu-toolchain-r/test
fi
PACKAGES+=("gcc-$COMPILER_VERSION" "gcc-$COMPILER_VERSION-multilib")
PACKAGES+=("gcc-$COMPILER_VERSION")
if [ "$(uname -m)" = "x86_64" ]; then
# Only needed for ia32 EFI builds
PACKAGES+=("gcc-$COMPILER_VERSION-multilib")
fi
else
fatal "Unknown compiler: $COMPILER"
fi
# This is added by default, and it is often broken, but we don't need anything from it
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.{list,sources}
# add-apt-repository --enable-source does not work on deb822 style sources.
for f in /etc/apt/sources.list.d/*.sources; do
sudo sed -i "s/Types: deb/Types: deb deb-src/g" "$f"
done
if grep -q 'VERSION_CODENAME=jammy' /usr/lib/os-release; then
sudo add-apt-repository -y --no-update ppa:upstream-systemd-ci/systemd-ci
sudo add-apt-repository -y --no-update --enable-source
else
# add-apt-repository --enable-source does not work on deb822 style sources.
for f in /etc/apt/sources.list.d/*.sources; do
sudo sed -i "s/Types: deb/Types: deb deb-src/g" "$f"
done
fi
sudo apt-get -y update
sudo apt-get -y build-dep systemd
sudo apt-get -y install "${PACKAGES[@]}"
@ -131,6 +145,17 @@ sudo apt-get -y install "${PACKAGES[@]}"
pip3 install --user -r .github/workflows/requirements.txt --require-hashes --break-system-packages
export PATH="$HOME/.local/bin:$PATH"
# TODO: drop after we switch to ubuntu 26.04
bpftool_dir=$(dirname "$(find /usr/lib/linux-tools/ /usr/lib/linux-tools-* -name 'bpftool' -perm /u=x 2>/dev/null | sort -r | head -n1)")
if [ -n "$bpftool_dir" ]; then
export PATH="$bpftool_dir:$PATH"
fi
if [[ -n "$CUSTOM_PYTHON" ]]; then
# If CUSTOM_PYTHON is set we need to pull jinja2 from pip, as a local interpreter is used
pip3 install --user --break-system-packages jinja2
fi
$CC --version
meson --version
ninja --version

View file

@ -17,22 +17,35 @@ permissions:
jobs:
build:
runs-on: ubuntu-24.04
runs-on: ${{ matrix.runner }}
concurrency:
group: ${{ github.workflow }}-${{ toJSON(matrix.env) }}-${{ github.ref }}
group: ${{ github.workflow }}-${{ toJSON(matrix.env) }}-${{ github.ref }}-${{ matrix.runner }}-${{ matrix.python-version }}
cancel-in-progress: true
strategy:
fail-fast: false
matrix:
runner: [ ubuntu-24.04 ]
python-version: [ '' ]
env:
- { COMPILER: "gcc", COMPILER_VERSION: "11", LINKER: "bfd", CRYPTOLIB: "gcrypt" }
- { COMPILER: "gcc", COMPILER_VERSION: "13", LINKER: "mold", CRYPTOLIB: "openssl" }
- { COMPILER: "clang", COMPILER_VERSION: "14", LINKER: "mold", CRYPTOLIB: "gcrypt" }
- { COMPILER: "clang", COMPILER_VERSION: "16", LINKER: "bfd", CRYPTOLIB: "openssl" }
- { COMPILER: "clang", COMPILER_VERSION: "18", LINKER: "lld", CRYPTOLIB: "auto" }
include:
# Do one run with the oldest supported python version to ensure there are no regressions
# It is only available on Jammy, which is useful as it will also provide a build check for
# older glibc
- env: { COMPILER: "gcc", COMPILER_VERSION: "12", LINKER: "bfd", CRYPTOLIB: "openssl", CUSTOM_PYTHON: "1" }
runner: [ ubuntu-22.04 ]
python-version: '3.7'
env: ${{ matrix.env }}
steps:
- name: Repository checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- name: Setup python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: ${{ matrix.python-version }}
- name: Build check
run: .github/workflows/build_test.sh
run: .github/workflows/build-test.sh

View file

@ -50,7 +50,14 @@ jobs:
languages: ${{ matrix.language }}
config-file: ./.github/codeql-config.yml
- run: sudo -E .github/workflows/unit_tests.sh SETUP
- run: |
sudo -E .github/workflows/unit-tests.sh SETUP
# TODO: drop after we switch to ubuntu 26.04
bpftool_binary=$(find /usr/lib/linux-tools/ /usr/lib/linux-tools-* -name 'bpftool' -perm /u=x 2>/dev/null | sort -r | head -n1)
if [ -n "$bpftool_binary" ]; then
sudo rm -f /usr/{bin,sbin}/bpftool
sudo ln -s "$bpftool_binary" /usr/bin/
fi
- name: Autobuild
uses: github/codeql-action/autobuild@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d

View file

@ -24,7 +24,7 @@ jobs:
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: systemd/mkosi@5e739ef1ed02a4f3b6ae64e50a8ee186cbcb21c2
- uses: systemd/mkosi@e3642f81d3a7f8f9310c0c734b2ba9dd41e50e14
# 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
@ -49,9 +49,6 @@ jobs:
- name: Configure
run: |
# XXX: drop after the HyperV bug that breaks secure boot KVM guests is solved
sed -i "s/'firmware'\s*:\s*'auto'/'firmware' : 'uefi'/g" test/*/meson.build
tee mkosi/mkosi.local.conf <<EOF
[Distribution]
Distribution=arch
@ -116,6 +113,8 @@ jobs:
# used in integration-test-wrapper.py to construct the `gh` command line to download the journals
# of failed tests.
sudo --preserve-env mkosi sandbox -- \
env \
TEST_RUNNER=ubuntu-24.04 \
meson test \
-C build \
--no-rebuild \

View file

@ -25,6 +25,13 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
# Reuse the setup phase of the unit test script to avoid code duplication
- name: Install build dependencies
run: sudo -E .github/workflows/unit_tests.sh SETUP
run: |
sudo -E .github/workflows/unit-tests.sh SETUP
# TODO: drop after we switch to ubuntu 26.04
bpftool_binary=$(find /usr/lib/linux-tools/ /usr/lib/linux-tools-* -name 'bpftool' -perm /u=x 2>/dev/null | sort -r | head -n1)
if [ -n "$bpftool_binary" ]; then
sudo rm -f /usr/{bin,sbin}/bpftool
sudo ln -s "$bpftool_binary" /usr/bin/
fi
- name: Build & upload the results
run: tools/coverity.sh

View file

@ -34,7 +34,7 @@ jobs:
if: github.event_name == 'pull_request'
- name: Label PR based on policy in labeler.yml
uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9
uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b
if: startsWith(github.event_name, 'pull_request') && github.base_ref == 'main' && github.event.action != 'closed'
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

View file

@ -36,7 +36,7 @@ jobs:
VALIDATE_ALL_CODEBASE: false
VALIDATE_GITHUB_ACTIONS: true
- uses: systemd/mkosi@5e739ef1ed02a4f3b6ae64e50a8ee186cbcb21c2
- uses: systemd/mkosi@e3642f81d3a7f8f9310c0c734b2ba9dd41e50e14
- name: Check that tabs are not used in Python code
run: sh -c '! git grep -P "\\t" -- src/ukify/ukify.py test/integration-tests/integration-test-wrapper.py'
@ -56,11 +56,6 @@ jobs:
mkosi sandbox -- mypy --version
mkosi sandbox -- mypy src/test/generate-sym-test.py src/ukify/ukify.py test/integration-tests/integration-test-wrapper.py
- name: Run ruff check
run: |
mkosi sandbox -- ruff --version
mkosi sandbox -- ruff check src/test/generate-sym-test.py src/ukify/ukify.py test/integration-tests/integration-test-wrapper.py
- name: Run ruff format
run: |
mkosi sandbox -- ruff --version
@ -69,3 +64,8 @@ jobs:
echo "Please run 'ruff format' on the above files or apply the diffs below manually"
mkosi sandbox -- ruff format --check --quiet --diff src/test/generate-sym-test.py src/ukify/ukify.py test/integration-tests/integration-test-wrapper.py
fi
- name: Run ruff check
run: |
mkosi sandbox -- ruff --version
mkosi sandbox -- ruff check src/test/generate-sym-test.py src/ukify/ukify.py test/integration-tests/integration-test-wrapper.py

View file

@ -61,6 +61,17 @@ jobs:
cflags: "-O2 -D_FORTIFY_SOURCE=3"
relabel: no
vm: 1
- distro: debian
release: stable
runner: ubuntu-24.04
sanitizers: ""
llvm: 0
cflags: "-Og"
relabel: no
vm: 0
no_qemu: 0
no_kvm: 0
shim: 0
- distro: debian
release: testing
sanitizers: ""
@ -76,7 +87,7 @@ jobs:
relabel: no
vm: 0
- distro: fedora
release: "42"
release: "43"
sanitizers: address,undefined
llvm: 1
cflags: "-Og"
@ -94,7 +105,7 @@ jobs:
sanitizers: ""
llvm: 0
cflags: "-Og"
relabel: no
relabel: yes
vm: 0
- distro: centos
release: "9"
@ -113,7 +124,7 @@ jobs:
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: systemd/mkosi@5e739ef1ed02a4f3b6ae64e50a8ee186cbcb21c2
- uses: systemd/mkosi@e3642f81d3a7f8f9310c0c734b2ba9dd41e50e14
# 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
@ -128,14 +139,14 @@ jobs:
run: |
truncate --size=100G btrfs.raw
mkfs.btrfs btrfs.raw
sudo mkdir /mnt/mkosi
sudo mkdir -p /mnt/mkosi
LOOP="$(sudo losetup --find --show --direct-io=on btrfs.raw)"
rm btrfs.raw
rm -f btrfs.raw
sudo mount "$LOOP" /mnt/mkosi --options compress=zstd:1,user_subvol_rm_allowed,noatime,discard=async,space_cache=v2
sudo chown "$(id -u):$(id -g)" /mnt/mkosi
mkdir /mnt/mkosi/tmp
mkdir -p /mnt/mkosi/tmp
echo "TMPDIR=/mnt/mkosi/tmp" >>"$GITHUB_ENV"
ln -s /mnt/mkosi/build build
ln -sf /mnt/mkosi/build build
- name: Configure
run: |

View file

@ -18,13 +18,13 @@ ADDITIONAL_DEPS=(
libtss2-dev
libxkbcommon-dev
libzstd-dev
linux-tools-generic
python3-libevdev
python3-pefile
python3-pip
python3-pyelftools
python3-pyparsing
python3-pytest
rpm
systemd-boot-efi
zstd
)
@ -43,6 +43,11 @@ set -ex
MESON_ARGS=(-Dcryptolib=${CRYPTOLIB:-auto})
if [ "$(uname -m)" = "aarch64" ] || [ "$(uname -m)" = "x86_64" ]; then
ADDITIONAL_DEPS+=(python3-pefile)
ADDITIONAL_DEPS+=(systemd-boot-efi)
fi
# (Re)set the current oom-{score-}adj. For some reason root on GH actions is able to _decrease_
# its oom-score even after dropping all capabilities (including CAP_SYS_RESOURCE), until the
# score is explicitly changed after sudo. No idea what's going on, but it breaks
@ -70,6 +75,12 @@ for phase in "${PHASES[@]}"; do
capsh --drop=all -- -c "stat $PWD/meson.build"
;;
RUN|RUN_GCC|RUN_CLANG|RUN_CLANG_RELEASE)
# TODO: drop after we switch to ubuntu 26.04
bpftool_dir=$(dirname "$(find /usr/lib/linux-tools/ /usr/lib/linux-tools-* -name 'bpftool' -perm /u=x 2>/dev/null | sort -r | head -n1)")
if [ -n "$bpftool_dir" ]; then
export PATH="$bpftool_dir:$PATH"
fi
if [[ "$phase" =~ ^RUN_CLANG ]]; then
export CC=clang
export CXX=clang++
@ -94,6 +105,12 @@ for phase in "${PHASES[@]}"; do
TZ=GMT+12 meson test -C build --print-errorlogs
;;
RUN_ASAN_UBSAN|RUN_GCC_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN|RUN_CLANG_ASAN_UBSAN_NO_DEPS)
# TODO: drop after we switch to ubuntu 26.04
bpftool_dir=$(dirname "$(find /usr/lib/linux-tools/ /usr/lib/linux-tools-* -name 'bpftool' -perm /u=x 2>/dev/null | sort -r | head -n1)")
if [ -n "$bpftool_dir" ]; then
export PATH="$bpftool_dir:$PATH"
fi
MESON_ARGS=(--optimization=1)
if [[ "$phase" =~ ^RUN_CLANG_ASAN_UBSAN ]]; then

View file

@ -38,8 +38,8 @@ jobs:
sudo sed -i '/^XDG_/d' /etc/environment
# Pass only specific env variables through sudo, to avoid having
# the already existing XDG_* stuff on the "other side"
sudo --preserve-env=CRYPTOLIB,GITHUB_ACTIONS,CI .github/workflows/unit_tests.sh SETUP
sudo --preserve-env=CRYPTOLIB,GITHUB_ACTIONS,CI .github/workflows/unit-tests.sh SETUP
- name: Build & test
run: sudo --preserve-env=CRYPTOLIB,GITHUB_ACTIONS,CI .github/workflows/unit_tests.sh RUN_${{ matrix.run_phase }}
run: sudo --preserve-env=CRYPTOLIB,GITHUB_ACTIONS,CI .github/workflows/unit-tests.sh RUN_${{ matrix.run_phase }}
env:
CRYPTOLIB: ${{ matrix.cryptolib }}

6
.gitignore vendored
View file

@ -23,11 +23,13 @@ __pycache__/
/ID
/build*
/install-tree
/mkosi/mkosi.key
/mkosi/mkosi.crt
/mkosi/mkosi.key
/mkosi/mkosi.local.conf
/mkosi/mkosi.tools
/mkosi/mkosi.tools.manifest
/mkosi.tools/
/mkosi.tools.manifest
/mkosi/mkosi.local.conf
/tags
.dir-locals-2.el
.vscode/

View file

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

View file

@ -7,7 +7,7 @@ name: Debian autopkgtest (LXC)
agent:
machine:
type: e1-standard-2
os_image: ubuntu2004
os_image: ubuntu2404
# Cancel any running or queued job for the same ref
auto_cancel:

View file

@ -2,7 +2,7 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
Also add information on how to contact you by electronic and paper mail.

View file

@ -2,7 +2,7 @@
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@ -485,7 +485,7 @@ convey the exclusion of warranty; and each file should have at least the
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.

View file

@ -3,7 +3,7 @@ GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
@ -158,7 +158,7 @@ To apply these terms, attach the following notices to the library. It is safest
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper mail.

View file

@ -70,8 +70,8 @@ The following exceptions apply:
- src/fundamental/sha1-fundamental.c
- src/fundamental/sha1-fundamental.h
* the following files are licensed under **BSD-3-Clause** license:
- src/boot/efi/chid.c
- src/boot/efi/chid.h
- src/boot/chid.c
- src/boot/chid.h
* Heebo fonts under docs/fonts/ are licensed under the **SIL Open Font License 1.1**,
* any files under test/ without an explicit license we assume non-copyrightable
(eg: computer-generated fuzzer data)

2
NEWS
View file

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

5
README
View file

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

View file

@ -25,7 +25,6 @@ support_sed = 's~%SUPPORT_URL%~@0@~'.format(support_url)
foreach file : in_files
catalogs += custom_target(
file,
input : file + '.in',
output: file,
command : [sed, support_sed, '@INPUT@'],

View file

@ -7,20 +7,30 @@ SPDX-License-Identifier: LGPL-2.1-or-later
# Backports
The upstream systemd git repo at [https://github.com/systemd/systemd](https://github.com/systemd/systemd) only contains the main systemd branch that progresses at a quick pace, continuously bringing both bugfixes and new features.
The upstream systemd git repo at https://github.com/systemd/systemd
contains the `main` branch that progresses at a quick pace,
continuously bringing both bugfixes and new features.
New releases are tagged as `vNNN` on this branch.
Distributions usually prefer basing their releases on stabilized versions branched off from this, that receive the bugfixes but not the features.
In addition to the `main` branch,
the repo contains a number of branches for stable point updates for a given release,
called `vNNN-stable`.
Stable releases are tagged as `vNNN.X` on those branches.
See [list of branches](https://github.com/systemd/systemd/branches/all?query=-stable)
and [pull requests for stable branches](https://github.com/systemd/systemd/pulls?q=is%3Apr+is%3Aopen+label%3Astable-branch).
## Stable Branch Repository
Distributions usually prefer basing their releases on those stable branches.
Stable branches are typically managed by distribution maintainers on an as-needed basis.
Stable branches are available from [https://github.com/systemd/systemd-stable](https://github.com/systemd/systemd-stable).
## Stable Branch Repository for older releases
Stable branches are started for certain releases of systemd and named after them, e.g. v208-stable.
Stable branches are typically managed by distribution maintainers on an as needed basis.
Stable branches for releases up to 255 are available from
[https://github.com/systemd/systemd-stable](https://github.com/systemd/systemd-stable).
For example v208 has been chosen for stable as several distributions are shipping this version and the official/upstream cycle of v208-v209 was a long one due to kdbus work.
## Policy for backports into stable branches
If you are using a particular version and find yourself backporting several patches, you may consider pushing a stable branch here for that version so others can benefit.
If you are using a particular version and find yourself backporting several patches,
consider pushing a stable branch here for that version so others can benefit.
Please contact us if you are interested.
@ -31,5 +41,16 @@ The following types of commits are cherry-picked onto those branches:
* hardware database additions, especially the keymap updates
* small non-conflicting features deemed safe to add in a stable release
Please try to ensure that anything backported to the stable repository is done with the `git cherry-pick -x` option such that text stating the original SHA1 is added into the commit message.
This makes it easier to check where the code came from (as sometimes it is necessary to add small fixes as new code due to the upstream refactors) that are deemed too invasive to backport as a stable patch.
Please try to ensure that anything backported to the stable repository is done
with the `git cherry-pick -x` option such that text stating the original SHA1 is added into the commit message.
This makes it easier to check where the code came from
(as sometimes it is necessary to add small fixes as new code due to the upstream refactors)
that are deemed too invasive to backport as a stable patch.
Pull requests for the stable branches should be tagged with `stable-branch`.
Pull requests that shall be backported to stable releases,
should be tagged with `needs-stable-backport`.
See [pull requests marked for backporting](https://github.com/systemd/systemd/pulls?q=is%3Apr+label%3Aneeds-stable-backport).
If only some commits should be backported, this should be mentioned in the pull request.
If the backport is not obvious, additional justification can also be provided in the pull request.

View file

@ -519,6 +519,26 @@ SPDX-License-Identifier: LGPL-2.1-or-later
return log_error_errno(SYNTHETIC_ERRNO(EIO), "Failed to read ...");
```
- When generating log messages that contain filenames, user controlled strings,
or similar, please enclose them in single ticks.
- Think about the log level you choose: for functions that are of the "logging"
kind (see above), please ensure that failures we propagate should be logged
about at `LOG_ERR` level. Failures that are noteworthy, but we proceed anyway,
should be loged at `LOG_WARN` level. Important informational messages should
use `LOG_NOTICE` and regular informational messages should use
`LOG_INFO`. Note that the latter is the default maximum log level, i.e. only
`LOG_DEBUG` messages are hidden by default.
- All log messages that show some failure which is not fatal for the immediate
operation (i.e. generally those you'd log at `LOG_WARN` level, as described
above) should be suffixed with a `…, ignoring: %m"` or similar. Or in other
words, they should make clear not only in log level but also in English
language that the issue is not fatal, but ignored. Depending on context you
can also use `…, proceeding anyway: %m"`, `…, skipping: %m` or other language
that makes clear that the failure is not actionable and doesn't strictly
require immediate administrator attention.
## Memory Allocation
- Always check OOM. There is no excuse. In program code, you can use

View file

@ -90,6 +90,12 @@ manager, please consider supporting the following interfaces.
confuse systemd and the admin, but also prevent your implementation from
being "stackable".
8. The mount hierarchy of the container should be mounted `MS_SHARED` before
invoking `systemd` as PID 1. Things will break at various places if this is
not done. Note that of course it's OK if the mounts are first marked
`MS_PRIVATE`/`MS_SLAVE` (to disconnect propagation at least partially) as
long as they are remounted `MS_SHARED` before `systemd` is invoked.
## Environment Variables
1. To allow systemd (and other programs) to identify that it is executed within

View file

@ -351,12 +351,13 @@ All tools:
default is not appropriate for a given system. Defaults to `5`, accepts
positive integers.
* `$SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_INTERVAL_SEC` — can be set to override the mount
units interval rate limit for parsing `/proc/self/mountinfo`. Similar to
`$SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST`, the interval limit maybe adjusted when
the default is not appropriate for a given system. The default value is 1 and the
default application time unit is second, and the time unit can beoverriden as usual
by specifying it explicitly, see the systemd.time(7) man page.
* `$SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_INTERVAL_SEC` — can be set to override the
mount units interval rate limit for parsing `/proc/self/mountinfo`. Similar
to `$SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST`, the interval limit maybe
adjusted when the default is not appropriate for a given system. The default
value is 1, the default application time unit is second, and the time unit
can be overridden as usual by specifying it explicitly, see the
systemd.time(7) man page.
`systemd-remount-fs`:
@ -618,6 +619,10 @@ SYSTEMD_HOME_DEBUG_SUFFIX=foo \
specified algorithm takes an effect immediately, you need to explicitly run
`journalctl --rotate`.
* `$SYSTEMD_JOURNAL_FD_SIZE_MAX` Takes a size with the usual suffixes (K, M, ...) in
string format. Overrides the default maximum allowed size for a file-descriptor
based input record to be stored in the journal.
* `$SYSTEMD_CATALOG` path to the compiled catalog database file to use for
`journalctl -x`, `journalctl --update-catalog`, `journalctl --list-catalog`
and related calls.

View file

@ -202,7 +202,7 @@ also supposed to be updated whenever the file was opened for any form of
writing, including when opened to mark it as archived. This behaviour has been
deemed problematic since without an associated boot ID the
**tail_entry_monotonic** field is useless. To indicate whether the boot ID is
updated only on append the JOURNAL_COMPATIBLE_TAIL_ENTRY_BOOT_ID is set. If it
updated only on append the `JOURNAL_COMPATIBLE_TAIL_ENTRY_BOOT_ID` is set. If it
is not set, the **tail_entry_monotonic** field is not usable).
The currently used part of the file is the **header_size** plus the
@ -291,27 +291,27 @@ enum {
};
```
HEADER_INCOMPATIBLE_COMPRESSED_XZ indicates that the file includes DATA objects
that are compressed using XZ. Similarly, HEADER_INCOMPATIBLE_COMPRESSED_LZ4
`HEADER_INCOMPATIBLE_COMPRESSED_XZ` indicates that the file includes DATA objects
that are compressed using XZ. Similarly, `HEADER_INCOMPATIBLE_COMPRESSED_LZ4`
indicates that the file includes DATA objects that are compressed with the LZ4
algorithm. And HEADER_INCOMPATIBLE_COMPRESSED_ZSTD indicates that there are
algorithm. And `HEADER_INCOMPATIBLE_COMPRESSED_ZSTD` indicates that there are
objects compressed with ZSTD.
HEADER_INCOMPATIBLE_KEYED_HASH indicates that instead of the unkeyed Jenkins
`HEADER_INCOMPATIBLE_KEYED_HASH` indicates that instead of the unkeyed Jenkins
hash function the keyed siphash24 hash function is used for the two hash
tables, see below.
HEADER_INCOMPATIBLE_COMPACT indicates that the journal file uses the new binary
`HEADER_INCOMPATIBLE_COMPACT` indicates that the journal file uses the new binary
format that uses less space on disk compared to the original format.
HEADER_COMPATIBLE_SEALED indicates that the file includes TAG objects required
`HEADER_COMPATIBLE_SEALED` indicates that the file includes TAG objects required
for Forward Secure Sealing.
HEADER_COMPATIBLE_TAIL_ENTRY_BOOT_ID indicates whether the
`HEADER_COMPATIBLE_TAIL_ENTRY_BOOT_ID` indicates whether the
**tail_entry_boot_id** field is strictly updated on initial creation of the
file and whenever an entry is updated (in which case the flag is set), or also
when the file is archived (in which case it is unset). New files should always
set this flag (and thus not update the **tail_entry_boot_id** except when
set this flag (and thus not update **tail_entry_boot_id** except when
creating the file and when appending an entry to it.
## Dirty Detection
@ -406,11 +406,11 @@ _packed_ struct ObjectHeader {
```
The **type** field is one of the object types listed above. The **flags** field
currently knows three flags: OBJECT_COMPRESSED_XZ, OBJECT_COMPRESSED_LZ4 and
OBJECT_COMPRESSED_ZSTD. It is only valid for DATA objects and indicates that
currently knows three flags: `OBJECT_COMPRESSED_XZ`, `OBJECT_COMPRESSED_LZ4` and
`OBJECT_COMPRESSED_ZSTD`. It is only valid for DATA objects and indicates that
the data payload is compressed with XZ/LZ4/ZSTD. If one of the
OBJECT_COMPRESSED_* flags is set for an object then the matching
HEADER_INCOMPATIBLE_COMPRESSED_XZ/HEADER_INCOMPATIBLE_COMPRESSED_LZ4/HEADER_INCOMPATIBLE_COMPRESSED_ZSTD
`OBJECT_COMPRESSED_*` flags is set for an object then the matching
`HEADER_INCOMPATIBLE_COMPRESSED_XZ`/`HEADER_INCOMPATIBLE_COMPRESSED_LZ4`/`HEADER_INCOMPATIBLE_COMPRESSED_ZSTD`
flag must be set for the file as well. At most one of these three bits may be
set. The **size** field encodes the size of the object including all its
headers and payload.
@ -465,7 +465,7 @@ number of ENTRY objects that reference this object, i.e. the sum of all
ENTRY_ARRAYS chained up from this object, plus 1.
The **payload[]** field contains the field name and date unencoded, unless
OBJECT_COMPRESSED_XZ/OBJECT_COMPRESSED_LZ4/OBJECT_COMPRESSED_ZSTD is set in the
`OBJECT_COMPRESSED_XZ`/`OBJECT_COMPRESSED_LZ4`/`OBJECT_COMPRESSED_ZSTD` is set in the
`ObjectHeader`, in which case the payload is compressed with the indicated
compression algorithm.

View file

@ -227,12 +227,15 @@ handling, it's typically sufficient to add a line such as:
Other programming environments might have native APIs to watch memory
pressure/low memory events. Most notable is probably GLib's
[GMemoryMonitor](https://docs.gtk.org/gio/iface.MemoryMonitor.html). It
currently uses the per-system Linux PSI interface as the backend, but operates
differently than the above: memory pressure events are picked up by a system
service, which then propagates this through D-Bus to the applications. This is
typically less than ideal, since this means each notification event has to
traverse three processes before being handled. This traversal creates
[GMemoryMonitor](https://docs.gtk.org/gio/iface.MemoryMonitor.html). As of GLib
2.86.0, it uses the per-cgroup PSI kernel file to monitor for memory pressure,
but does not yet read the environment variables recommended above.
In older versions, it used the per-system Linux PSI interface as the backend, but operated
differently than the above: memory pressure events were picked up by a system
service, which then propagated this through D-Bus to the applications. This was
typically less than ideal, since this means each notification event had to
traverse three processes before being handled. This traversal created
additional latencies at a time where the system is already experiencing adverse
latencies. Moreover, it focuses on system-wide PSI events, even though
latencies. Moreover, it focused on system-wide PSI events, even though
service-local ones are generally the better approach.

View file

@ -243,7 +243,7 @@ that matches various links, but also by settings like
[systemd.network(5)](https://www.freedesktop.org/software/systemd/man/systemd.network.html).
It is also possible to plug in additional checks for network state. For
example, to delay `network-online.target` until some a specific host is
example, to delay `network-online.target` until a specific host is
reachable (the name can be resolved over DNS and the appropriate route has been
established), the following simple service could be used:

View file

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

View file

@ -16,6 +16,10 @@ measurements listed below are (by default) only done if a system is booted with
to systemd's UEFI-mode measurements, and if the latter are not done the former
aren't made either.
See
[Linux TPM PCR Registry](https://uapi-group.org/specifications/specs/linux_tpm_pcr_registry/)
for an overview of PCRs.
systemd will measure to PCRs 5 (`boot-loader-config`), 11 (`kernel-boot`),
12 (`kernel-config`), 13 (`sysexts`), 15 (`system-identity`).
@ -41,7 +45,7 @@ used for new, additional measurements.
## PCR Measurements Made by `systemd-boot` (UEFI)
### PCS 5, `EV_EVENT_TAG`, `loader.conf`
### PCR 5, `EV_EVENT_TAG`, `loader.conf`
The content of `systemd-boot`'s configuration file, `loader/loader.conf`, is
measured as a tagged event.

74
docs/VARLINK.md Normal file
View file

@ -0,0 +1,74 @@
---
title: Varlink API Style
category: Contributing
layout: default
SPDX-License-Identifier: LGPL-2.1-or-later
---
# General guideline
- Varlink field names should use camelCase. This guideline does not apply to
well-known and documented configuration options, such as those defined in
[systemd.unit](https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html),
where existing naming conventions should be preserved for
compatibility and clarity.
- Every field and method should include meaningful documentation. It's
acceptable to reference existing documentation where appropriate.
Documentation may be omitted only when the meaning is self-evident, even to
someone not already familiar with varlink interface/method.
- Varlink fields should optimize toward clarity:
* avoid abbreviations: `cacheDir` -> `cacheDirectory`
* prefer string values over numeric codes when possible,
to make interfaces more self-descriptive and easier to understand.
# Interface structure
- Varlink methods should consider splitting their output into 'context' and
'runtime' sections. The guiding principle is simple: if a property makes
sense to include in a configuration (e.g. unit file), it belongs to 'context';
otherwise, it goes under 'runtime'. This split ensures a consistent and
reusable structure. Functions that describe an object can produce context
data that other functions can later consume to create a similar object.
Example: `io.systemd.Unit.List` outputs unit configuration, which can later
be reused to create another unit via `io.systemd.Unit.StartTransient` (not
implemented yet). The `io.systemd.Unit.StartTransient` call should accept
only the 'context' portion of the output, without requiring any runtime data
such as state (e.g. pid) or statistics.
- Following the guideline above, any field within 'context' should be nullable
by default. This ensures that when a context structure is used as input, the
caller is not required to provide every field explicitly. Omitted fields are
automatically assigned their default values, allowing partial context
definitions to be valid and simplifying reuse across different operations.
Fields that cannot logically be omitted in input (e.g. a unit type) may remain
non-nullable.
# Enums
- Enum fields in the codebase must be exposed as string values in Varlink, not
as their underlying integer representations. Use `SD_VARLINK_DEFINE_ENUM_TYPE`
to declare an enum type in the Varlink specification.
- The Varlink IDL validator does not permit enum values that contain dashes.
Therefore, when defining an enum for Varlink, replace dashes with underscores.
- Varlink interface should output enum values using the underscore form. For
input, it should accept both the original dash-containing form and the
underscore form. The following helpers simplify this:
* `JSON_BUILD_STRING_UNDERSCORIFY` - outputs a stringified enum value
with dashes converted to underscores.
* `JSON_DISPATCH_ENUM_DEFINE` - creates a `json_dispatch_*` function that
accepts both the original and the underscorified enum value as valid input.
- An internal enum may be exposed as a simple string field instead of a Varlink
enum type when the field is output-only and never provided or controlled by
the user. However, such fields should avoid using dashes to prevent breaking
changes if they are later converted into enums (see below).
- A varlink string field that has a finite set of possible values may later be
converted into an enum without introducing a breaking change. This allows the
interface to evolve from loosely defined string values to a more explicit and
type-safe enumeration once the valid options are well established.

View file

@ -111,10 +111,15 @@ a {
text-decoration: none;
color: var(--sd-link-color);
cursor: pointer;
overflow-wrap: anywhere;
}
a:hover {
text-decoration: underline;
}
img {
max-width: 100%;
height: auto;
}
b {
font-weight: 600;
}
@ -567,6 +572,7 @@ tbody td {
code.highlighter-rouge {
padding: 2px 6px;
background-color: var(--sd-highlight-inline-bg);
overflow-wrap: anywhere;
}
a code.highlighter-rouge {

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

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

After

Width:  |  Height:  |  Size: 31 KiB

View file

@ -1,7 +1,6 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
custom_target(
'README',
input : 'README.in',
output : 'README',
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],

View file

@ -3,7 +3,6 @@
factory_etc_dir = factorydir / 'etc'
custom_target(
'locale.conf',
input : 'locale.conf.in',
output : 'locale.conf',
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
@ -11,7 +10,6 @@ custom_target(
install_dir : factory_etc_dir)
custom_target(
'vconsole.conf',
input : 'vconsole.conf.in',
output : 'vconsole.conf',
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],

File diff suppressed because it is too large Load diff

View file

@ -18,6 +18,12 @@ acpi:AANT*:
acpi:AAVA*:
ID_VENDOR_FROM_DATABASE=Aava Mobile Oy
acpi:ACPI*:
ID_VENDOR_FROM_DATABASE=Intel Corporation
acpi:AHCL*:
ID_VENDOR_FROM_DATABASE=Advantech Co., Ltd.
acpi:AMDI*:
ID_VENDOR_FROM_DATABASE=AMD
@ -228,15 +234,27 @@ acpi:ISIC*:
acpi:JMIC*:
ID_VENDOR_FROM_DATABASE=Shenzhen Jaguar Microsystems Co.,Ltd.
acpi:JPMC*:
ID_VENDOR_FROM_DATABASE=JP Morgan Chase N.A.
acpi:JSYS*:
ID_VENDOR_FROM_DATABASE=Juniper Systems, Inc.
acpi:JUMP*:
ID_VENDOR_FROM_DATABASE=JUMPtec GmbH
acpi:KAYA*:
ID_VENDOR_FROM_DATABASE=KAYA N CO., LTD.
acpi:KIOX*:
ID_VENDOR_FROM_DATABASE=Kionix, Inc.
acpi:KOMF*:
ID_VENDOR_FROM_DATABASE=Kontron France
acpi:LECA*:
ID_VENDOR_FROM_DATABASE=Theo End (Shenzhen) Computing Technology Co., Ltd.
acpi:LNRO*:
ID_VENDOR_FROM_DATABASE=Linaro, Ltd.
@ -258,6 +276,12 @@ acpi:MCRY*:
acpi:MIPI*:
ID_VENDOR_FROM_DATABASE=MIPI Alliance
acpi:MITH*:
ID_VENDOR_FROM_DATABASE=Mesiontech
acpi:MPTR*:
ID_VENDOR_FROM_DATABASE=Megapolis-Telecom Region LLC
acpi:MRVL*:
ID_VENDOR_FROM_DATABASE=Marvell Technology Group Ltd.
@ -288,6 +312,9 @@ acpi:NVTN*:
acpi:NXGO*:
ID_VENDOR_FROM_DATABASE=Nexstgo Company Limited
acpi:NXHP*:
ID_VENDOR_FROM_DATABASE=Nexthop Systems Inc.
acpi:OBDA*:
ID_VENDOR_FROM_DATABASE=REALTEK Semiconductor Corp.
@ -303,6 +330,9 @@ acpi:PEGA*:
acpi:PHYT*:
ID_VENDOR_FROM_DATABASE=Phytium Technology Co. Ltd.
acpi:PICO*:
ID_VENDOR_FROM_DATABASE=Picoheart (SG) Pte. Ltd.
acpi:PIXA*:
ID_VENDOR_FROM_DATABASE=PixArt imaging inc.
@ -327,6 +357,9 @@ acpi:RKCP*:
acpi:ROKL*:
ID_VENDOR_FROM_DATABASE=Rockwell Automation, Inc
acpi:ROKU*:
ID_VENDOR_FROM_DATABASE=Roku, Inc.
acpi:RPIL*:
ID_VENDOR_FROM_DATABASE=Raspberry Pi
@ -375,6 +408,9 @@ acpi:SWEM*:
acpi:SYNA*:
ID_VENDOR_FROM_DATABASE=Synaptics Inc
acpi:SYNC*:
ID_VENDOR_FROM_DATABASE=SYNCS / Aviot Systems Pte Ltd
acpi:TCAG*:
ID_VENDOR_FROM_DATABASE=Teracue AG
@ -384,12 +420,21 @@ acpi:TOSB*:
acpi:TXNW*:
ID_VENDOR_FROM_DATABASE=Texas Instruments
acpi:TYHX*:
ID_VENDOR_FROM_DATABASE=Nanjing Tianyihexin Electronics Ltd
acpi:UBLX*:
ID_VENDOR_FROM_DATABASE=u-blox AG
acpi:UBOO*:
ID_VENDOR_FROM_DATABASE=Das U-Boot
acpi:UBTI*:
ID_VENDOR_FROM_DATABASE=Ubiquiti Inc.
acpi:ULRV*:
ID_VENDOR_FROM_DATABASE=UltraRISC Technology (Shanghai) Co., Ltd
acpi:VAIO*:
ID_VENDOR_FROM_DATABASE=VAIO Corporation

View file

@ -1,5 +1,5 @@
--- 20-acpi-vendor.hwdb.base 2025-05-15 10:42:40.716482750 +0200
+++ 20-acpi-vendor.hwdb 2025-05-15 10:42:40.720482763 +0200
--- 20-acpi-vendor.hwdb.base 2026-03-10 17:03:34.662556881 +0000
+++ 20-acpi-vendor.hwdb 2026-03-10 17:03:34.666557017 +0000
@@ -3,6 +3,8 @@
# Data imported from:
# https://uefi.org/uefi-pnp-export
@ -9,17 +9,7 @@
acpi:3GVR*:
ID_VENDOR_FROM_DATABASE=VR Technology Holdings Limited
@@ -16,9 +18,6 @@
acpi:AAVA*:
ID_VENDOR_FROM_DATABASE=Aava Mobile Oy
-acpi:ACPI*:
- ID_VENDOR_FROM_DATABASE=Intel Corporation
-
acpi:AMDI*:
ID_VENDOR_FROM_DATABASE=AMD
@@ -418,6 +417,9 @@
@@ -460,6 +462,9 @@
acpi:AAA*:
ID_VENDOR_FROM_DATABASE=Avolites Ltd
@ -29,7 +19,7 @@
acpi:AAE*:
ID_VENDOR_FROM_DATABASE=Anatek Electronics Inc.
@@ -445,6 +447,9 @@
@@ -487,6 +492,9 @@
acpi:ABO*:
ID_VENDOR_FROM_DATABASE=D-Link Systems Inc
@ -39,7 +29,7 @@
acpi:ABS*:
ID_VENDOR_FROM_DATABASE=Abaco Systems, Inc.
@@ -490,7 +495,7 @@
@@ -532,7 +540,7 @@
acpi:ACO*:
ID_VENDOR_FROM_DATABASE=Allion Computer Inc.
@ -48,7 +38,7 @@
ID_VENDOR_FROM_DATABASE=Aspen Tech Inc
acpi:ACR*:
@@ -769,6 +774,9 @@
@@ -811,6 +819,9 @@
acpi:AMT*:
ID_VENDOR_FROM_DATABASE=AMT International Industry
@ -58,7 +48,7 @@
acpi:AMX*:
ID_VENDOR_FROM_DATABASE=AMX LLC
@@ -817,6 +825,9 @@
@@ -859,6 +870,9 @@
acpi:AOA*:
ID_VENDOR_FROM_DATABASE=AOpen Inc.
@ -68,7 +58,7 @@
acpi:AOE*:
ID_VENDOR_FROM_DATABASE=Advanced Optics Electronics, Inc.
@@ -826,6 +837,9 @@
@@ -868,6 +882,9 @@
acpi:AOT*:
ID_VENDOR_FROM_DATABASE=Alcatel
@ -78,7 +68,7 @@
acpi:APC*:
ID_VENDOR_FROM_DATABASE=American Power Conversion
@@ -1007,7 +1021,7 @@
@@ -1049,7 +1066,7 @@
ID_VENDOR_FROM_DATABASE=ALPS ALPINE CO., LTD.
acpi:AUO*:
@ -87,7 +77,7 @@
acpi:AUR*:
ID_VENDOR_FROM_DATABASE=Aureal Semiconductor
@@ -1087,6 +1101,9 @@
@@ -1129,6 +1146,9 @@
acpi:AXE*:
ID_VENDOR_FROM_DATABASE=Axell Corporation
@ -97,7 +87,7 @@
acpi:AXI*:
ID_VENDOR_FROM_DATABASE=American Magnetics
@@ -1246,6 +1263,9 @@
@@ -1288,6 +1308,9 @@
acpi:BML*:
ID_VENDOR_FROM_DATABASE=BIOMED Lab
@ -107,7 +97,7 @@
acpi:BMS*:
ID_VENDOR_FROM_DATABASE=BIOMEDISYS
@@ -1258,6 +1278,9 @@
@@ -1300,6 +1323,9 @@
acpi:BNO*:
ID_VENDOR_FROM_DATABASE=Bang & Olufsen
@ -117,7 +107,7 @@
acpi:BNS*:
ID_VENDOR_FROM_DATABASE=Boulder Nonlinear Systems
@@ -1504,6 +1527,9 @@
@@ -1546,6 +1572,9 @@
acpi:CHA*:
ID_VENDOR_FROM_DATABASE=Chase Research PLC
@ -127,7 +117,7 @@
acpi:CHD*:
ID_VENDOR_FROM_DATABASE=ChangHong Electric Co.,Ltd
@@ -1669,6 +1695,9 @@
@@ -1711,6 +1740,9 @@
acpi:COD*:
ID_VENDOR_FROM_DATABASE=CODAN Pty. Ltd.
@ -137,7 +127,7 @@
acpi:COI*:
ID_VENDOR_FROM_DATABASE=Codec Inc.
@@ -2087,7 +2116,7 @@
@@ -2129,7 +2161,7 @@
ID_VENDOR_FROM_DATABASE=Dragon Information Technology
acpi:DJE*:
@ -146,7 +136,7 @@
acpi:DJP*:
ID_VENDOR_FROM_DATABASE=Maygay Machines, Ltd
@@ -2440,6 +2469,9 @@
@@ -2482,6 +2514,9 @@
acpi:EIN*:
ID_VENDOR_FROM_DATABASE=Elegant Invention
@ -156,7 +146,7 @@
acpi:EKA*:
ID_VENDOR_FROM_DATABASE=MagTek Inc.
@@ -2710,6 +2742,9 @@
@@ -2752,6 +2787,9 @@
acpi:FCG*:
ID_VENDOR_FROM_DATABASE=First International Computer Ltd
@ -166,7 +156,7 @@
acpi:FCS*:
ID_VENDOR_FROM_DATABASE=Focus Enhancements, Inc.
@@ -3086,7 +3121,7 @@
@@ -3128,7 +3166,7 @@
ID_VENDOR_FROM_DATABASE=General Standards Corporation
acpi:GSM*:
@ -175,7 +165,7 @@
acpi:GSN*:
ID_VENDOR_FROM_DATABASE=Grandstream Networks, Inc.
@@ -3196,6 +3231,9 @@
@@ -3238,6 +3276,9 @@
acpi:HEC*:
ID_VENDOR_FROM_DATABASE=Hisense Electric Co., Ltd.
@ -185,7 +175,7 @@
acpi:HEL*:
ID_VENDOR_FROM_DATABASE=Hitachi Micro Systems Europe Ltd
@@ -3331,6 +3369,9 @@
@@ -3373,6 +3414,9 @@
acpi:HSD*:
ID_VENDOR_FROM_DATABASE=HannStar Display Corp
@ -195,7 +185,7 @@
acpi:HSM*:
ID_VENDOR_FROM_DATABASE=AT&T Microelectronics
@@ -3457,6 +3498,9 @@
@@ -3499,6 +3543,9 @@
acpi:ICI*:
ID_VENDOR_FROM_DATABASE=Infotek Communication Inc
@ -205,7 +195,7 @@
acpi:ICM*:
ID_VENDOR_FROM_DATABASE=Intracom SA
@@ -3553,6 +3597,9 @@
@@ -3595,6 +3642,9 @@
acpi:IKE*:
ID_VENDOR_FROM_DATABASE=Ikegami Tsushinki Co. Ltd.
@ -215,7 +205,7 @@
acpi:IKS*:
ID_VENDOR_FROM_DATABASE=Ikos Systems Inc
@@ -3601,6 +3648,9 @@
@@ -3643,6 +3693,9 @@
acpi:IMX*:
ID_VENDOR_FROM_DATABASE=arpara Technology Co., Ltd.
@ -225,7 +215,7 @@
acpi:INA*:
ID_VENDOR_FROM_DATABASE=Inventec Corporation
@@ -4129,6 +4179,9 @@
@@ -4171,6 +4224,9 @@
acpi:LAN*:
ID_VENDOR_FROM_DATABASE=Sodeman Lancom Inc
@ -235,7 +225,7 @@
acpi:LAS*:
ID_VENDOR_FROM_DATABASE=LASAT Comm. A/S
@@ -4180,6 +4233,9 @@
@@ -4222,6 +4278,9 @@
acpi:LED*:
ID_VENDOR_FROM_DATABASE=Long Engineering Design Inc
@ -245,7 +235,7 @@
acpi:LEG*:
ID_VENDOR_FROM_DATABASE=Legerity, Inc
@@ -4198,6 +4254,9 @@
@@ -4240,6 +4299,9 @@
acpi:LGD*:
ID_VENDOR_FROM_DATABASE=LG Display
@ -255,7 +245,7 @@
acpi:LGI*:
ID_VENDOR_FROM_DATABASE=Logitech Inc
@@ -4264,6 +4323,9 @@
@@ -4306,6 +4368,9 @@
acpi:LND*:
ID_VENDOR_FROM_DATABASE=Land Computer Company Ltd
@ -265,7 +255,7 @@
acpi:LNK*:
ID_VENDOR_FROM_DATABASE=Link Tech Inc
@@ -4298,7 +4360,7 @@
@@ -4340,7 +4405,7 @@
ID_VENDOR_FROM_DATABASE=Design Technology
acpi:LPL*:
@ -274,7 +264,7 @@
acpi:LSC*:
ID_VENDOR_FROM_DATABASE=LifeSize Communications
@@ -4474,6 +4536,9 @@
@@ -4516,6 +4581,9 @@
acpi:MCX*:
ID_VENDOR_FROM_DATABASE=Millson Custom Solutions Inc.
@ -284,7 +274,7 @@
acpi:MDA*:
ID_VENDOR_FROM_DATABASE=Media4 Inc
@@ -4720,6 +4785,9 @@
@@ -4762,6 +4830,9 @@
acpi:MOM*:
ID_VENDOR_FROM_DATABASE=Momentum Data Systems
@ -294,7 +284,7 @@
acpi:MOS*:
ID_VENDOR_FROM_DATABASE=Moses Corporation
@@ -4960,6 +5028,9 @@
@@ -5002,6 +5073,9 @@
acpi:NAL*:
ID_VENDOR_FROM_DATABASE=Network Alchemy
@ -304,7 +294,7 @@
acpi:NAT*:
ID_VENDOR_FROM_DATABASE=NaturalPoint Inc.
@@ -5500,6 +5571,9 @@
@@ -5542,6 +5616,9 @@
acpi:PCX*:
ID_VENDOR_FROM_DATABASE=PC Xperten
@ -314,7 +304,7 @@
acpi:PDM*:
ID_VENDOR_FROM_DATABASE=Psion Dacom Plc.
@@ -5563,9 +5637,6 @@
@@ -5605,9 +5682,6 @@
acpi:PHE*:
ID_VENDOR_FROM_DATABASE=Philips Medical Systems Boeblingen GmbH
@ -324,7 +314,7 @@
acpi:PHL*:
ID_VENDOR_FROM_DATABASE=Philips Consumer Electronics Company
@@ -5656,9 +5727,6 @@
@@ -5698,9 +5772,6 @@
acpi:PNL*:
ID_VENDOR_FROM_DATABASE=Panelview, Inc.
@ -334,7 +324,7 @@
acpi:PNR*:
ID_VENDOR_FROM_DATABASE=Planar Systems, Inc.
@@ -6136,9 +6204,6 @@
@@ -6178,9 +6249,6 @@
acpi:RTI*:
ID_VENDOR_FROM_DATABASE=Rancho Tech Inc
@ -344,7 +334,7 @@
acpi:RTL*:
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Company Ltd
@@ -6313,9 +6378,6 @@
@@ -6355,9 +6423,6 @@
acpi:SEE*:
ID_VENDOR_FROM_DATABASE=SeeColor Corporation
@ -354,7 +344,7 @@
acpi:SEI*:
ID_VENDOR_FROM_DATABASE=Seitz & Associates Inc
@@ -6799,6 +6861,9 @@
@@ -6841,6 +6906,9 @@
acpi:SVD*:
ID_VENDOR_FROM_DATABASE=SVD Computer
@ -364,7 +354,7 @@
acpi:SVI*:
ID_VENDOR_FROM_DATABASE=Sun Microsystems
@@ -6883,6 +6948,9 @@
@@ -6925,6 +6993,9 @@
acpi:SZM*:
ID_VENDOR_FROM_DATABASE=Shenzhen MTC Co., Ltd
@ -374,7 +364,7 @@
acpi:TAA*:
ID_VENDOR_FROM_DATABASE=Tandberg
@@ -6973,6 +7041,9 @@
@@ -7015,6 +7086,9 @@
acpi:TDG*:
ID_VENDOR_FROM_DATABASE=Six15 Technologies
@ -384,7 +374,7 @@
acpi:TDM*:
ID_VENDOR_FROM_DATABASE=Tandem Computer Europe Inc
@@ -7015,6 +7086,9 @@
@@ -7057,6 +7131,9 @@
acpi:TEV*:
ID_VENDOR_FROM_DATABASE=Televés, S.A.
@ -394,7 +384,7 @@
acpi:TEZ*:
ID_VENDOR_FROM_DATABASE=Tech Source Inc.
@@ -7144,9 +7218,6 @@
@@ -7186,9 +7263,6 @@
acpi:TNC*:
ID_VENDOR_FROM_DATABASE=TNC Industrial Company Ltd
@ -404,7 +394,7 @@
acpi:TNM*:
ID_VENDOR_FROM_DATABASE=TECNIMAGEN SA
@@ -7459,14 +7530,14 @@
@@ -7501,14 +7575,14 @@
acpi:UNC*:
ID_VENDOR_FROM_DATABASE=Unisys Corporation
@ -425,7 +415,7 @@
acpi:UNI*:
ID_VENDOR_FROM_DATABASE=Uniform Industry Corp.
@@ -7501,6 +7572,9 @@
@@ -7543,6 +7617,9 @@
acpi:USA*:
ID_VENDOR_FROM_DATABASE=Utimaco Safeware AG
@ -435,7 +425,7 @@
acpi:USD*:
ID_VENDOR_FROM_DATABASE=U.S. Digital Corporation
@@ -7762,9 +7836,6 @@
@@ -7804,9 +7881,6 @@
acpi:WAL*:
ID_VENDOR_FROM_DATABASE=Wave Access
@ -445,7 +435,7 @@
acpi:WAV*:
ID_VENDOR_FROM_DATABASE=Wavephore
@@ -7892,7 +7963,7 @@
@@ -7934,7 +8008,7 @@
ID_VENDOR_FROM_DATABASE=WyreStorm Technologies LLC
acpi:WYS*:
@ -454,7 +444,7 @@
acpi:WYT*:
ID_VENDOR_FROM_DATABASE=Wooyoung Image & Information Co.,Ltd.
@@ -7906,9 +7977,6 @@
@@ -7948,9 +8022,6 @@
acpi:XDM*:
ID_VENDOR_FROM_DATABASE=XDM Ltd.
@ -464,7 +454,7 @@
acpi:XES*:
ID_VENDOR_FROM_DATABASE=Extreme Engineering Solutions, Inc.
@@ -7942,9 +8010,6 @@
@@ -7984,9 +8055,6 @@
acpi:XNT*:
ID_VENDOR_FROM_DATABASE=XN Technologies, Inc.
@ -474,7 +464,7 @@
acpi:XQU*:
ID_VENDOR_FROM_DATABASE=SHANGHAI SVA-DAV ELECTRONICS CO., LTD
@@ -8011,6 +8076,9 @@
@@ -8053,6 +8121,9 @@
acpi:ZBX*:
ID_VENDOR_FROM_DATABASE=Zebax Technologies

View file

@ -9,7 +9,7 @@ dmi:*:svnSystemmanufacturer:*
dmi:*:svnSystemManufacturer:*
dmi:*:svnTobefilledbyO.E.M.:*
dmi:*:svnToBeFilledByO.E.M.:*
ID_SYS_VENDOR_IS_RUBBISH=1
ID_SYS_VENDOR_IS_RUBBISH=1
dmi:*:pnDefaultstring:*
dmi:*:pnN/A:*
@ -21,7 +21,7 @@ dmi:*:pnSystemname:*
dmi:*:pnSystemName:*
dmi:*:pnTobefilledbyO.E.M.:*
dmi:*:pnToBeFilledByO.E.M.:*
ID_PRODUCT_NAME_IS_RUBBISH=1
ID_PRODUCT_NAME_IS_RUBBISH=1
dmi:*:pvrDefaultstring:*
dmi:*:pvrDefault string:*
@ -31,7 +31,7 @@ dmi:*:pvrOEM:*
dmi:*:pvrTobefilledbyO.E.M.:*
dmi:*:pvrToBeFilledByO.E.M.:*
dmi:*:pvrTo Be Filled By O.E.M.:*
ID_PRODUCT_VERSION_IS_RUBBISH=1
ID_PRODUCT_VERSION_IS_RUBBISH=1
dmi:*:rvrDefaultstring:*
dmi:*:rvrDefault string:*
@ -41,7 +41,7 @@ dmi:*:rvrOEM:*
dmi:*:rvrTobefilledbyO.E.M.:*
dmi:*:rvrToBeFilledByO.E.M.:*
dmi:*:rvrTo Be Filled By O.E.M.:*
ID_BOARD_VERSION_IS_RUBBISH=1
ID_BOARD_VERSION_IS_RUBBISH=1
dmi:*:skuDefaultstring:*
dmi:*:skuDefault string:*
@ -51,7 +51,7 @@ dmi:*:skuOEM:*
dmi:*:skuTobefilledbyO.E.M.:*
dmi:*:skuToBeFilledByO.E.M.:*
dmi:*:skuTo Be Filled By O.E.M.:*
ID_PRODUCT_SKU_IS_RUBBISH=1
ID_PRODUCT_SKU_IS_RUBBISH=1
dmi:*:catDefaultstring:*
dmi:*:catDefault string:*
@ -61,13 +61,17 @@ dmi:*:catOEM:*
dmi:*:catTobefilledbyO.E.M.:*
dmi:*:catToBeFilledByO.E.M.:*
dmi:*:catTo Be Filled By O.E.M.:*
ID_CHASSIS_ASSET_TAG_IS_RUBBISH=1
ID_CHASSIS_ASSET_TAG_IS_RUBBISH=1
# Fix "Lenovo" capitalization in /sys/class/dmi/id/sys_vendor
dmi:bvnLENOVO*
ID_SYSFS_ATTRIBUTE_MODEL=product_version
ID_VENDOR_FROM_DATABASE=Lenovo
ID_SYSFS_ATTRIBUTE_MODEL=product_version
ID_VENDOR_FROM_DATABASE=Lenovo
# Microsoft Surface 1's chassis type
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

View file

@ -20,6 +20,21 @@ pci:v*d*sv*sd*bc01*
pci:v*d*sv*sd*bc01sc00*
ID_PCI_SUBCLASS_FROM_DATABASE=SCSI storage controller
pci:v*d*sv*sd*bc01sc00i00*
ID_PCI_INTERFACE_FROM_DATABASE=Vendor specific
pci:v*d*sv*sd*bc01sc00i11*
ID_PCI_INTERFACE_FROM_DATABASE=SCSI storage device (SOP target port using PQI)
pci:v*d*sv*sd*bc01sc00i12*
ID_PCI_INTERFACE_FROM_DATABASE=SCSI controller (SOP target port using PQI)
pci:v*d*sv*sd*bc01sc00i13*
ID_PCI_INTERFACE_FROM_DATABASE=SCSI storage device & controller (SOP target port using PQI)
pci:v*d*sv*sd*bc01sc00i21*
ID_PCI_INTERFACE_FROM_DATABASE=SCSI storage device (SOP target port using NVMe)
pci:v*d*sv*sd*bc01sc01*
ID_PCI_SUBCLASS_FROM_DATABASE=IDE interface
@ -56,6 +71,9 @@ pci:v*d*sv*sd*bc01sc03*
pci:v*d*sv*sd*bc01sc04*
ID_PCI_SUBCLASS_FROM_DATABASE=RAID bus controller
pci:v*d*sv*sd*bc01sc04i00*
ID_PCI_INTERFACE_FROM_DATABASE=Vendor specific
pci:v*d*sv*sd*bc01sc05*
ID_PCI_SUBCLASS_FROM_DATABASE=ATA controller
@ -92,6 +110,9 @@ pci:v*d*sv*sd*bc01sc08i01*
pci:v*d*sv*sd*bc01sc08i02*
ID_PCI_INTERFACE_FROM_DATABASE=NVM Express
pci:v*d*sv*sd*bc01sc08i03*
ID_PCI_INTERFACE_FROM_DATABASE=NVM Express administrative controller
pci:v*d*sv*sd*bc01sc09*
ID_PCI_SUBCLASS_FROM_DATABASE=Universal Flash Storage controller
@ -110,6 +131,9 @@ pci:v*d*sv*sd*bc02*
pci:v*d*sv*sd*bc02sc00*
ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
pci:v*d*sv*sd*bc02sc00i01*
ID_PCI_INTERFACE_FROM_DATABASE=Ethernet Controller with IDPF Compliant Interface
pci:v*d*sv*sd*bc02sc01*
ID_PCI_SUBCLASS_FROM_DATABASE=Token ring network controller
@ -173,6 +197,12 @@ pci:v*d*sv*sd*bc04sc02*
pci:v*d*sv*sd*bc04sc03*
ID_PCI_SUBCLASS_FROM_DATABASE=Audio device
pci:v*d*sv*sd*bc04sc03i00*
ID_PCI_INTERFACE_FROM_DATABASE=HDA compatible
pci:v*d*sv*sd*bc04sc03i80*
ID_PCI_INTERFACE_FROM_DATABASE=HDA compatible with vendor specific extensions
pci:v*d*sv*sd*bc04sc80*
ID_PCI_SUBCLASS_FROM_DATABASE=Multimedia controller
@ -192,7 +222,7 @@ pci:v*d*sv*sd*bc05sc02i00*
ID_PCI_INTERFACE_FROM_DATABASE=CXL Memory Device - vendor specific
pci:v*d*sv*sd*bc05sc02i10*
ID_PCI_INTERFACE_FROM_DATABASE=CXL Memory Device (CXL 2.x)
ID_PCI_INTERFACE_FROM_DATABASE=CXL Memory Device (CXL 2.0 or later)
pci:v*d*sv*sd*bc05sc80*
ID_PCI_SUBCLASS_FROM_DATABASE=Memory controller
@ -395,6 +425,9 @@ pci:v*d*sv*sd*bc08sc05*
pci:v*d*sv*sd*bc08sc06*
ID_PCI_SUBCLASS_FROM_DATABASE=IOMMU
pci:v*d*sv*sd*bc08sc07*
ID_PCI_SUBCLASS_FROM_DATABASE=Root Complex Event Collector
pci:v*d*sv*sd*bc08sc80*
ID_PCI_SUBCLASS_FROM_DATABASE=System peripheral
@ -533,6 +566,9 @@ pci:v*d*sv*sd*bc0Csc08*
pci:v*d*sv*sd*bc0Csc09*
ID_PCI_SUBCLASS_FROM_DATABASE=CANBUS
pci:v*d*sv*sd*bc0Csc0A*
ID_PCI_SUBCLASS_FROM_DATABASE=MIPI I3C
pci:v*d*sv*sd*bc0Csc80*
ID_PCI_SUBCLASS_FROM_DATABASE=Serial bus controller
@ -555,10 +591,16 @@ pci:v*d*sv*sd*bc0Dsc12*
ID_PCI_SUBCLASS_FROM_DATABASE=Broadband
pci:v*d*sv*sd*bc0Dsc20*
ID_PCI_SUBCLASS_FROM_DATABASE=802.1a controller
ID_PCI_SUBCLASS_FROM_DATABASE=802.11a 5 GHz controller
pci:v*d*sv*sd*bc0Dsc21*
ID_PCI_SUBCLASS_FROM_DATABASE=802.1b controller
ID_PCI_SUBCLASS_FROM_DATABASE=802.11b 2.4 GHz controller
pci:v*d*sv*sd*bc0Dsc40*
ID_PCI_SUBCLASS_FROM_DATABASE=Cellular controller/modem
pci:v*d*sv*sd*bc0Dsc41*
ID_PCI_SUBCLASS_FROM_DATABASE=Cellular controller/modem plus Ethernet (802.11)
pci:v*d*sv*sd*bc0Dsc80*
ID_PCI_SUBCLASS_FROM_DATABASE=Wireless controller

File diff suppressed because it is too large Load diff

View file

@ -179,6 +179,9 @@ usb:v*p*d*dc08dsc06dp01*
usb:v*p*d*dc08dsc06dp50*
ID_USB_PROTOCOL_FROM_DATABASE=Bulk-Only
usb:v*p*d*dc08dsc06dp62*
ID_USB_PROTOCOL_FROM_DATABASE=USB Attached SCSI
usb:v*p*d*dc09*
ID_USB_CLASS_FROM_DATABASE=Hub

View file

@ -119,6 +119,12 @@ usb:v017C*
usb:v017Cp145F*
ID_MODEL_FROM_DATABASE=Trust Deskset
usb:v019C*
ID_VENDOR_FROM_DATABASE=mek
usb:v019Cp0042*
ID_MODEL_FROM_DATABASE=mek_42
usb:v0200*
ID_VENDOR_FROM_DATABASE=TP-Link
@ -149,6 +155,15 @@ usb:v02AD*
usb:v02ADp138C*
ID_MODEL_FROM_DATABASE=PVR Mass Storage
usb:v0300*
ID_VENDOR_FROM_DATABASE=Ajazz
usb:v0300p1010*
ID_MODEL_FROM_DATABASE=Akp153E Desktop Controller
usb:v0300p1020*
ID_MODEL_FROM_DATABASE=AKP153R Desktop Controller
usb:v0303*
ID_VENDOR_FROM_DATABASE=Mini Automation Controller
@ -228,7 +243,7 @@ usb:v03E8p8004*
ID_MODEL_FROM_DATABASE=Aox 99001
usb:v03E9*
ID_VENDOR_FROM_DATABASE=Thesys Microelectronics
ID_VENDOR_FROM_DATABASE=Melexis (formerly Thesys Microelectronics)
usb:v03EA*
ID_VENDOR_FROM_DATABASE=Data Broadcasting Corp.
@ -713,6 +728,12 @@ usb:v03F0p042A*
usb:v03F0p0441*
ID_MODEL_FROM_DATABASE=Prime [NW280AA, G8X92AA]
usb:v03F0p046B*
ID_MODEL_FROM_DATABASE=Dock G5
usb:v03F0p0483*
ID_MODEL_FROM_DATABASE=Engage Go 10 Tablet
usb:v03F0p0504*
ID_MODEL_FROM_DATABASE=DeskJet 885c
@ -740,6 +761,9 @@ usb:v03F0p051D*
usb:v03F0p052A*
ID_MODEL_FROM_DATABASE=LaserJet M1212nf MFP
usb:v03F0p0583*
ID_MODEL_FROM_DATABASE=Engage Go 10 Tablet
usb:v03F0p0601*
ID_MODEL_FROM_DATABASE=ScanJet 6300c
@ -767,6 +791,9 @@ usb:v03F0p0641*
usb:v03F0p0653*
ID_MODEL_FROM_DATABASE=DeskJet 3700 series
usb:v03F0p0683*
ID_MODEL_FROM_DATABASE=Engage Go 10 Tablet
usb:v03F0p0701*
ID_MODEL_FROM_DATABASE=ScanJet 5300c/5370c
@ -917,6 +944,9 @@ usb:v03F0p1104*
usb:v03F0p1105*
ID_MODEL_FROM_DATABASE=ScanJet 5470c/5490c
usb:v03F0p110C*
ID_MODEL_FROM_DATABASE=Pocket Media Drive
usb:v03F0p1111*
ID_MODEL_FROM_DATABASE=OfficeJet v60
@ -2981,6 +3011,9 @@ usb:v0408p3001*
usb:v0408p3008*
ID_MODEL_FROM_DATABASE=Optical Touch Screen
usb:v0408p4033*
ID_MODEL_FROM_DATABASE=HD Webcam
usb:v0408pA060*
ID_MODEL_FROM_DATABASE=HD Webcam
@ -3029,6 +3062,9 @@ usb:v0409p004F*
usb:v0409p0050*
ID_MODEL_FROM_DATABASE=7-port hub
usb:v0409p0056*
ID_MODEL_FROM_DATABASE=uPD720133 IDE bridge
usb:v0409p0058*
ID_MODEL_FROM_DATABASE=HighSpeed Hub
@ -4400,6 +4436,9 @@ usb:v041Ep4097*
usb:v041Ep4099*
ID_MODEL_FROM_DATABASE=Creative VF0800 [RealSense Camera SR300]
usb:v041Ep40A3*
ID_MODEL_FROM_DATABASE=Live! Cam V3 2K [VF-0900]
usb:v041Ep4100*
ID_MODEL_FROM_DATABASE=Nomad Jukebox 2
@ -5819,6 +5858,9 @@ usb:v043Dp010F*
usb:v043Dp0142*
ID_MODEL_FROM_DATABASE=X3650 (Printer, Scanner, Copier)
usb:v043Dp01BD*
ID_MODEL_FROM_DATABASE=S800 Series Scanner
usb:v043Dp01FA*
ID_MODEL_FROM_DATABASE=S310 series
@ -5888,6 +5930,9 @@ usb:v043Ep9A11*
usb:v043Ep9A39*
ID_MODEL_FROM_DATABASE=27UP850 - WK.AEUDCSN - External Monitor 4K
usb:v043Ep9A57*
ID_MODEL_FROM_DATABASE=UltraGear Monitor
usb:v043Ep9C01*
ID_MODEL_FROM_DATABASE=LGE Sync
@ -5963,6 +6008,9 @@ usb:v044E*
usb:v044Ep1104*
ID_MODEL_FROM_DATABASE=Japanese Keyboard
usb:v044Ep1218*
ID_MODEL_FROM_DATABASE=Electric Touchpad
usb:v044Ep2002*
ID_MODEL_FROM_DATABASE=MD-5500 Printer
@ -8153,6 +8201,12 @@ usb:v046Ap01A4*
usb:v046Ap01A6*
ID_MODEL_FROM_DATABASE=MX BOARD 2.0S FL RGB DE Keyboard
usb:v046Ap0201*
ID_MODEL_FROM_DATABASE=Smart Board 1150
usb:v046Ap0202*
ID_MODEL_FROM_DATABASE=Smart Terminal 1150
usb:v046ApB090*
ID_MODEL_FROM_DATABASE=Keyboard
@ -8495,6 +8549,9 @@ usb:v046Dp08E0*
usb:v046Dp08E1*
ID_MODEL_FROM_DATABASE=Labtec Webcam
usb:v046Dp08E4*
ID_MODEL_FROM_DATABASE=C505e HD Webcam
usb:v046Dp08E5*
ID_MODEL_FROM_DATABASE=C920 PRO HD Webcam
@ -8948,6 +9005,9 @@ usb:v046DpC092*
usb:v046DpC093*
ID_MODEL_FROM_DATABASE=M500s Optical Mouse
usb:v046DpC09D*
ID_MODEL_FROM_DATABASE=G102 LIGHTSYNC Gaming Mouse
usb:v046DpC101*
ID_MODEL_FROM_DATABASE=UltraX Media Remote
@ -9122,6 +9182,9 @@ usb:v046DpC24E*
usb:v046DpC24F*
ID_MODEL_FROM_DATABASE=G29 Driving Force Racing Wheel [PS3]
usb:v046DpC251*
ID_MODEL_FROM_DATABASE=GamePanel for Dell XPS M1730
usb:v046DpC260*
ID_MODEL_FROM_DATABASE=G29 Driving Force Racing Wheel [PS4]
@ -9161,6 +9224,9 @@ usb:v046DpC298*
usb:v046DpC299*
ID_MODEL_FROM_DATABASE=G25 Racing Wheel
usb:v046DpC29A*
ID_MODEL_FROM_DATABASE=Driving Force GT
usb:v046DpC29B*
ID_MODEL_FROM_DATABASE=G27 Racing Wheel
@ -9272,6 +9338,9 @@ usb:v046DpC336*
usb:v046DpC33A*
ID_MODEL_FROM_DATABASE=G413 Gaming Keyboard
usb:v046DpC33E*
ID_MODEL_FROM_DATABASE=G915 Mechanical Keyboard
usb:v046DpC33F*
ID_MODEL_FROM_DATABASE=G815 Mechanical Keyboard
@ -10019,6 +10088,9 @@ usb:v047CpFFFF*
usb:v047D*
ID_VENDOR_FROM_DATABASE=Kensington
usb:v047Dp00F2*
ID_MODEL_FROM_DATABASE=VeriMark Desktop
usb:v047Dp1001*
ID_MODEL_FROM_DATABASE=Mouse*in*a*Box
@ -10616,6 +10688,9 @@ usb:v0486*
usb:v0486p0185*
ID_MODEL_FROM_DATABASE=EeePC T91MT HID Touch Panel
usb:v0486p573C*
ID_MODEL_FROM_DATABASE=Xreal Light Microcontroller
usb:v0487*
ID_VENDOR_FROM_DATABASE=Stewart Connector
@ -10931,6 +11006,9 @@ usb:v0499p1037*
usb:v0499p103C*
ID_MODEL_FROM_DATABASE=MOTIF-RACK ES
usb:v0499p1045*
ID_MODEL_FROM_DATABASE=MM6
usb:v0499p1054*
ID_MODEL_FROM_DATABASE=S90XS Keyboard/Music Synthesizer
@ -11618,6 +11696,9 @@ usb:v04A9p106E*
usb:v04A9p1070*
ID_MODEL_FROM_DATABASE=S530D
usb:v04A9p1071*
ID_MODEL_FROM_DATABASE=Sony MPR-501
usb:v04A9p1072*
ID_MODEL_FROM_DATABASE=I850 Printer
@ -11627,6 +11708,9 @@ usb:v04A9p1073*
usb:v04A9p1074*
ID_MODEL_FROM_DATABASE=S330 Printer
usb:v04A9p1075*
ID_MODEL_FROM_DATABASE=Sony MPR-505
usb:v04A9p1076*
ID_MODEL_FROM_DATABASE=i70
@ -12101,6 +12185,9 @@ usb:v04A9p178D*
usb:v04A9p180B*
ID_MODEL_FROM_DATABASE=PIXMA MG3000 series
usb:v04A9p183B*
ID_MODEL_FROM_DATABASE=PIXMA MG3110 Series
usb:v04A9p1856*
ID_MODEL_FROM_DATABASE=PIXMA TS6250
@ -12122,6 +12209,9 @@ usb:v04A9p1906*
usb:v04A9p1907*
ID_MODEL_FROM_DATABASE=CanoScan LiDE 700F
usb:v04A9p1908*
ID_MODEL_FROM_DATABASE=CanoScan 9000F
usb:v04A9p1909*
ID_MODEL_FROM_DATABASE=CanoScan LiDE 110
@ -13805,6 +13895,9 @@ usb:v04B0p0436*
usb:v04B0p043F*
ID_MODEL_FROM_DATABASE=D5600
usb:v04B0p0455*
ID_MODEL_FROM_DATABASE=Z50II
usb:v04B0p0F03*
ID_MODEL_FROM_DATABASE=PD-10 Wireless Printer Adapter
@ -14663,9 +14756,15 @@ usb:v04B8p0892*
usb:v04B8p0893*
ID_MODEL_FROM_DATABASE=EP-774A
usb:v04B8p08D1*
ID_MODEL_FROM_DATABASE=L220/L360 Series
usb:v04B8p0E03*
ID_MODEL_FROM_DATABASE=Thermal Receipt Printer [TM-T20]
usb:v04B8p0E31*
ID_MODEL_FROM_DATABASE=Thermal Receipt Printer [TM-L100]
usb:v04B8p1114*
ID_MODEL_FROM_DATABASE=XP-440 [Expression Home Small-in-One Printer]
@ -14678,6 +14777,24 @@ usb:v04B8p1129*
usb:v04B8p1168*
ID_MODEL_FROM_DATABASE=Workforce WF-7820/7840 Series
usb:v04B8p1186*
ID_MODEL_FROM_DATABASE=ET-2820 Series [ET-2820 EcoTank All-in-One]
usb:v04B8p118A*
ID_MODEL_FROM_DATABASE=ET-2810/L3250 Series [EcoTank ET-2810/L3250]
usb:v04B8p118B*
ID_MODEL_FROM_DATABASE=ET-2850/L4260 Series [EcoTank ET-2850/L4260]
usb:v04B8p11B0*
ID_MODEL_FROM_DATABASE=XP-4200 Series [Expression Home XP-4200]
usb:v04B8p11B9*
ID_MODEL_FROM_DATABASE=ET-2830/L3550 Series [EcoTank ET-2830/L3550]
usb:v04B8p11C8*
ID_MODEL_FROM_DATABASE=ET-2860/L3270 Series [EcoTank ET-2860/L3270]
usb:v04B9*
ID_VENDOR_FROM_DATABASE=Rainbow Technologies, Inc.
@ -14930,6 +15047,15 @@ usb:v04BFp1304*
usb:v04BFp1305*
ID_MODEL_FROM_DATABASE=i3 Multi Sensing Module
usb:v04BFp1400*
ID_MODEL_FROM_DATABASE=Javelin Module Recovery
usb:v04BFp1401*
ID_MODEL_FROM_DATABASE=Javelin Module
usb:v04BFp1500*
ID_MODEL_FROM_DATABASE=Gas sensor demo board
usb:v04C1*
ID_VENDOR_FROM_DATABASE=U.S. Robotics (3Com)
@ -15044,9 +15170,15 @@ usb:v04C5p125A*
usb:v04C5p132E*
ID_MODEL_FROM_DATABASE=fi-7160
usb:v04C5p1526*
ID_MODEL_FROM_DATABASE=PalmSecure-F Pro
usb:v04C5p159F*
ID_MODEL_FROM_DATABASE=ScanSnap iX1500
usb:v04C5p15FF*
ID_MODEL_FROM_DATABASE=Fi-8170 Document Scanner [Ricoh fi-8170: High Performance Desktop Scanner - PFU]
usb:v04C5p200F*
ID_MODEL_FROM_DATABASE=Sigma DP2 (Mass Storage)
@ -15143,6 +15275,9 @@ usb:v04CAp3014*
usb:v04CAp3015*
ID_MODEL_FROM_DATABASE=Qualcomm Atheros QCA9377 Bluetooth
usb:v04CAp3802*
ID_MODEL_FROM_DATABASE=MediaTek Bluetooth MT7921
usb:v04CAp7022*
ID_MODEL_FROM_DATABASE=HP HD Webcam
@ -40268,9 +40403,15 @@ usb:v0B0Dp0000*
usb:v0B0E*
ID_VENDOR_FROM_DATABASE=GN Netcom
usb:v0B0Ep0301*
ID_MODEL_FROM_DATABASE=Jabra EVOLVE 20
usb:v0B0Ep0305*
ID_MODEL_FROM_DATABASE=Jabra EVOLVE Link MS
usb:v0B0Ep030C*
ID_MODEL_FROM_DATABASE=Jabra EVOLVE 65
usb:v0B0Ep0311*
ID_MODEL_FROM_DATABASE=Jabra EVOLVE 65
@ -40325,6 +40466,21 @@ usb:v0B0Ep2456*
usb:v0B0Ep245E*
ID_MODEL_FROM_DATABASE=Jabra Link 370
usb:v0B0Ep248A*
ID_MODEL_FROM_DATABASE=Jabra Elite 85h
usb:v0B0Ep24B8*
ID_MODEL_FROM_DATABASE=Jabra Evolve2 65
usb:v0B0Ep24BB*
ID_MODEL_FROM_DATABASE=Jabra Evolve2 85
usb:v0B0Ep24C9*
ID_MODEL_FROM_DATABASE=Jabra Link 380
usb:v0B0Ep24CA*
ID_MODEL_FROM_DATABASE=Jabra Link 380
usb:v0B0Ep620C*
ID_MODEL_FROM_DATABASE=Jabra BT620s
@ -45938,6 +46094,24 @@ usb:v0E25*
usb:v0E26*
ID_VENDOR_FROM_DATABASE=J-Phone East Co., Ltd
usb:v0E2C*
ID_VENDOR_FROM_DATABASE=Materialise Motion NV
usb:v0E2Cp0012*
ID_MODEL_FROM_DATABASE=footscan pressure plate (0.5m)
usb:v0E2Cp0013*
ID_MODEL_FROM_DATABASE=footscan pressure plate (1.0m)
usb:v0E2Cp0018*
ID_MODEL_FROM_DATABASE=footscan 2D interface box
usb:v0E2Cp0020*
ID_MODEL_FROM_DATABASE=footscan pressure plate (1.5m)
usb:v0E2Cp002D*
ID_MODEL_FROM_DATABASE=footscan heavy duty pressure plate (1.0m)
usb:v0E2E*
ID_VENDOR_FROM_DATABASE=Brady Worldwide, Inc.

View file

@ -84,8 +84,10 @@ usb:v1C7Ap0571*
# Supported by libfprint driver egismoc
usb:v1C7Ap0582*
usb:v1C7Ap0583*
usb:v1C7Ap0584*
usb:v1C7Ap0586*
usb:v1C7Ap0587*
usb:v1C7Ap0588*
usb:v1C7Ap05A1*
ID_AUTOSUSPEND=1
ID_PERSIST=0
@ -167,6 +169,9 @@ usb:v04F3p0C99*
usb:v04F3p0C9D*
usb:v04F3p0C9F*
usb:v04F3p0CA3*
usb:v04F3p0CA7*
usb:v04F3p0CA8*
usb:v04F3p0CB0*
ID_AUTOSUSPEND=1
ID_PERSIST=0
@ -178,16 +183,21 @@ usb:v1C7Ap0603*
# Supported by libfprint driver focaltech_moc
usb:v2808p9E48*
usb:v2808pD979*
usb:v2808pA27A*
usb:v2808pA959*
usb:v2808pA99A*
usb:v2808pA57A*
usb:v2808pA78A*
usb:v2808p1579*
usb:v2808p077A*
usb:v2808p079A*
ID_AUTOSUSPEND=1
ID_PERSIST=0
# Supported by libfprint driver fpcmoc
usb:v10A5pFFE0*
usb:v10A5pA305*
usb:v10A5pA306*
usb:v10A5pDA04*
usb:v10A5pD805*
usb:v10A5pD205*
@ -230,6 +240,7 @@ usb:v27C6p659C*
usb:v27C6p6A94*
usb:v27C6p6512*
usb:v27C6p689A*
usb:v27C6p66A9*
ID_AUTOSUSPEND=1
ID_PERSIST=0
@ -241,6 +252,7 @@ usb:v298Dp1010*
# Supported by libfprint driver realtek
usb:v0BDAp5813*
usb:v0BDAp5816*
usb:v2541pFA03*
ID_AUTOSUSPEND=1
ID_PERSIST=0
@ -250,6 +262,7 @@ usb:v06CBp00C2*
usb:v06CBp00C4*
usb:v06CBp00C6*
usb:v06CBp00DF*
usb:v06CBp00E9*
usb:v06CBp00F0*
usb:v06CBp00F9*
usb:v06CBp00FC*
@ -259,16 +272,21 @@ usb:v06CBp0104*
usb:v06CBp0106*
usb:v06CBp0107*
usb:v06CBp0108*
usb:v06CBp0109*
usb:v06CBp010A*
usb:v06CBp0123*
usb:v06CBp0124*
usb:v06CBp0126*
usb:v06CBp0129*
usb:v06CBp015F*
usb:v06CBp0168*
usb:v06CBp0169*
usb:v06CBp016C*
usb:v06CBp0173*
usb:v06CBp0174*
usb:v06CBp019D*
usb:v06CBp019F*
usb:v06CBp01A0*
ID_AUTOSUSPEND=1
ID_PERSIST=0
@ -372,10 +390,12 @@ usb:v06CBp0088*
usb:v06CBp008A*
usb:v06CBp009A*
usb:v06CBp009B*
usb:v06CBp00A1*
usb:v06CBp00A2*
usb:v06CBp00A8*
usb:v06CBp00B7*
usb:v06CBp00BB*
usb:v06CBp00BC*
usb:v06CBp00BE*
usb:v06CBp00CB*
usb:v06CBp00C9*
@ -384,7 +404,6 @@ usb:v06CBp00DA*
usb:v06CBp00DC*
usb:v06CBp00E4*
usb:v06CBp00E7*
usb:v06CBp00E9*
usb:v06CBp00FD*
usb:v06CBp00FF*
usb:v0A5Cp5801*
@ -405,9 +424,11 @@ usb:v0A5Cp5867*
usb:v0BDAp5812*
usb:v10A5p0007*
usb:v10A5p9200*
usb:v10A5p9201*
usb:v10A5p9800*
usb:v10A5pA120*
usb:v10A5pA900*
usb:v10A5pA921*
usb:v10A5pE340*
usb:v1188p9545*
usb:v138Ap0007*
@ -428,7 +449,6 @@ usb:v16D1p1027*
usb:v1C7Ap0300*
usb:v1C7Ap0575*
usb:v1C7Ap0576*
usb:v1C7Ap0584*
usb:v1C7Ap0577*
usb:v1C7Ap057E*
usb:v2541p0236*
@ -462,12 +482,14 @@ usb:v27C6p5E0A*
usb:v27C6p581A*
usb:v27C6p589A*
usb:v27C6p5F10*
usb:v27C6p5F91*
usb:v27C6p6382*
usb:v2808p9338*
usb:v2808p9348*
usb:v2808p93A9*
usb:v2808pA658*
usb:v2808pC652*
usb:v2808pA553*
usb:v298Dp2020*
usb:v298Dp2033*
usb:v2DF0p0003*

View file

@ -96,6 +96,10 @@ usb:v2CB7p0007*
ID_AUTOSUSPEND=1
ID_AUTOSUSPEND_DELAY_MS=7000
# Dell Computer Corp. DW5826e Qualcomm Snapdragon X12 Global LTE-A
usb:v413Cp8217*
ID_AUTOSUSPEND=1
#########################################
# Wacom
#########################################

View file

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

View file

@ -5,6 +5,7 @@
#
# Match string formats:
# id-input:modalias:<modalias>
# id-input:<bus>:v<vid>p<pid>:name:<name>:*
#
# To add local entries, create a new file
# /etc/udev/hwdb.d/61-input-id-local.hwdb
@ -47,9 +48,20 @@
# id-input:modalias:input:b0003v1234pABCD*
# ID_INPUT_TOUCHPAD=1
# ID_INPUT=1
#
# id-input:usb:v12abp34cd:name:SomeVendor *:*
# ID_INPUT_TOUCHPAD=1
# ID_INPUT=1
#
# For technical reasons the hexadecimal vid/pid in the modalias match are
# uppercase but lowercase in the bus/vid/pid/name match.
# Sort by brand, model
# Any i2c device with a Mouse suffix in the name is not a pointing stick
id-input:i2c:*:name:*Mouse:
ID_INPUT_POINTINGSTICK=0
# Code Mercenaries Hard- und Software GmbH Virtual RC USB
id-input:modalias:input:b0003v07C0p1125*
ID_INPUT_MOUSE=

View file

@ -155,8 +155,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspireA317-33:*
# Acer Aspire One AO532h
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO532h:*
KEYBOARD_KEY_84=bluetooth
KEYBOARD_KEY_ce=unknown # Brightness Up, also emitted by acpi-video, ignore
KEYBOARD_KEY_ef=unknown # Brightness Down, also emitted by acpi-video, ignore
KEYBOARD_KEY_ce=unknown # Brightness Up, also emitted by acpi-video, ignore
KEYBOARD_KEY_ef=unknown # Brightness Down, also emitted by acpi-video, ignore
# Acer Aspire One AOD270 (Atom N2600) and its Packard Bell Dot SC rebrand
evdev:name:Acer WMI hotkeys:dmi:bvn*:bvr*:bd*:svnAcer*:pnAOD270*:*
@ -165,8 +165,8 @@ evdev:name:Acer WMI hotkeys:dmi:*:svnPackardBell:pndots:*:rvnPackardBell:rnSJE01
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAOD270*:*
evdev:atkbd:dmi:*:svnPackardBell:pndots:*:rvnPackardBell:rnSJE01_CT:*
KEYBOARD_KEY_ce=unknown # Brightness Up, also emitted by acpi-video, ignore
KEYBOARD_KEY_ef=unknown # Brightness Down, also emitted by acpi-video, ignore
KEYBOARD_KEY_ce=unknown # Brightness Up, also emitted by acpi-video, ignore
KEYBOARD_KEY_ef=unknown # Brightness Down, also emitted by acpi-video, ignore
# Predator PT314-52s
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnPredator*PT314-52s:pvr*
@ -237,12 +237,15 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnNitro*AN*515-47:pvr*
# Nitro AN515-58
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnNitro*AN*515-58:pvr*
KEYBOARD_KEY_ef=kbdillumup # Fn+F10
KEYBOARD_KEY_f0=kbdillumdown # Fn+F9
KEYBOARD_KEY_8a=micmute # Microphone mute button
KEYBOARD_KEY_55=power
# Nitro ANV15-51
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnNitro*ANV*15-51:pvr*
KEYBOARD_KEY_66=micmute # Microphone mute button
KEYBOARD_KEY_f5=prog1 # NitroSense button
###########################################################
# Alienware
@ -250,7 +253,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnNitro*ANV*15-51:pvr*
# Alienware/Dell reserves these keys; safe to apply on all their devices
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAlienware*:pn*:*
KEYBOARD_KEY_68=!prog3 # Fn+f1 Performance mode toggle
KEYBOARD_KEY_68=!performance # Fn+f1 Performance mode toggle
KEYBOARD_KEY_81=touchpad_toggle # Touchpad toggle
KEYBOARD_KEY_8a=ejectcd
KEYBOARD_KEY_92=macro1 # Fn+f2
@ -284,6 +287,9 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnASUS:pn*:*
KEYBOARD_KEY_ee=volumedown
KEYBOARD_KEY_ef=mute
evdev:name:Asus WMI hotkeys:dmi:bvn*:bvr*:bd*:svnASUS*:pn*M1607KA*:*
KEYBOARD_KEY_7e=prog2 # Fn+F8, launch emoji keyboard
# Asus TF103C misses the home button in its PNP0C40 GPIO resources
# causing the volume-button mappings to be off by one, correct this
evdev:name:gpio-keys:phys:gpio-keys/input0:ev:3:dmi:*:svnASUSTeKCOMPUTERINC.:pnTF103C*:*
@ -303,10 +309,10 @@ evdev:name:gpio-keys:phys:gpio-keys/input0:ev:100003:dmi:*:svnASUSTeKCOMPUTERINC
# All four of these buttons generate a multi-scancode sequence
# consisting of Left_Meta, Right_Ctrl and another scancode.
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAYANEO:pnKUN:pvr*
KEYBOARD_KEY_18=f15 # LC (next to the left shoulder button)
KEYBOARD_KEY_20=f16 # RC (next to the right shoulder button)
KEYBOARD_KEY_28=f17 # Ayaneo (lower-right corner of screen)
KEYBOARD_KEY_30=f18 # Touchpad Mode (top-right corner of screen)
KEYBOARD_KEY_18=f15 # LC (next to the left shoulder button)
KEYBOARD_KEY_20=f16 # RC (next to the right shoulder button)
KEYBOARD_KEY_28=f17 # Ayaneo (lower-right corner of screen)
KEYBOARD_KEY_30=f18 # Touchpad Mode (top-right corner of screen)
# Most AYANEO devices expose an AT Translated Set 2 Keyboard
# for either three or four additional buttons not available
@ -314,11 +320,13 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAYANEO:pnKUN:pvr*
# multi-scancode sequence. The specific preceding codes
# depend on the model, but the final scancode is always the
# same.
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnAYA NEO:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnAYADEVICE:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnAYANEO:*
KEYBOARD_KEY_66=f15 # LC (All models)
KEYBOARD_KEY_67=f16 # RC (All models)
KEYBOARD_KEY_68=f17 # Ayaneo (All models)
KEYBOARD_KEY_69=f18 # Touchpad Mode (Kun only)
KEYBOARD_KEY_66=f15 # LC (All models)
KEYBOARD_KEY_67=f16 # RC (All models)
KEYBOARD_KEY_68=f17 # Ayaneo (All models)
KEYBOARD_KEY_69=f18 # Touchpad Mode (Kun only)
###########################################################
# BenQ
@ -340,6 +348,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnNotebook:pnW65_67SZ:*
evdev:atkbd:dmi:bvn*:bvr*:svnNotebook:pnNS50_70MU:*
evdev:atkbd:dmi:bvn*:bvr*:svnNotebook:pnNV4XMB,ME,MZ:*
evdev:atkbd:dmi:bvn*:bvr*:svnNotebook:pnNS5x_NS7xPU:*
evdev:atkbd:dmi:bvn*:bvr*:svnNotebook:pnV64x_V65xAU:*
KEYBOARD_KEY_f7=touchpad_toggle # Touchpad Toggle
KEYBOARD_KEY_f8=touchpad_toggle # Touchpad Toggle
@ -392,7 +401,7 @@ evdev:name:gpio-keys:phys:gpio-keys/input0:ev:3:dmi:bvn*:bvr*:bd*:svncube:pni1-T
###########################################################
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pn*:*
KEYBOARD_KEY_68=!prog2 # G-Mode (Dell-specific)
KEYBOARD_KEY_68=!performance # G-Mode (Dell-specific)
KEYBOARD_KEY_81=playpause # Play/Pause
KEYBOARD_KEY_82=stopcd # Stop
KEYBOARD_KEY_83=previoussong # Previous song
@ -432,13 +441,14 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*1210:*
# Dell Inspiron 11 3168
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron11-3168:pvr*
KEYBOARD_KEY_c7=!home # Fn-LeftArrow
KEYBOARD_KEY_cf=!end # Fn-RightArrow
KEYBOARD_KEY_c9=!pageup # Fn-UpArrow
KEYBOARD_KEY_d1=!pagedown # Fn-DownArrow
KEYBOARD_KEY_c7=!home # Fn-LeftArrow
KEYBOARD_KEY_cf=!end # Fn-RightArrow
KEYBOARD_KEY_c9=!pageup # Fn-UpArrow
KEYBOARD_KEY_d1=!pagedown # Fn-DownArrow
# Dell Inspiron 1520 and Latitude 2110
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*1520:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*3505:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*2110:*
KEYBOARD_KEY_85=unknown # Brightness Down, also emitted by acpi-video, ignore
KEYBOARD_KEY_86=unknown # Brightness Up, also emitted by acpi-video, ignore
@ -504,7 +514,7 @@ evdev:name:Dell Privacy Driver:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision*:*
# Dell Professional Sound Bar AE515
evdev:input:b0003v413CpA506*
KEYBOARD_KEY_b002f=micmute # Mic mute toggle
KEYBOARD_KEY_b002f=micmute # Mic mute toggle
###########################################################
# Everex
@ -657,6 +667,11 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[tT][aA][bB][lL][eE][tT]*:*
KEYBOARD_KEY_86=pageup
KEYBOARD_KEY_87=pagedown
# OmniBook Ultra Flip Laptop 14-fh0xxx
evdev:atkbd:dmi:*:svnHP:pnHPOmniBookUltraFlipLaptop14-fh0xxx:*
KEYBOARD_KEY_82=unknown # Mic mute, handled by hp-wmi
KEYBOARD_KEY_ab=!unknown # Brightness Down and Up keys, handled by acpi-video
# Pavilion
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[pP][aA][vV][iI][lL][iI][oO][nN]*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pn*[pP][aA][vV][iI][lL][iI][oO][nN]*:*
@ -698,15 +713,15 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx360Convertible13*:*
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pn*HP[sS][pP][eE][cC][tT][rR][eE]*x3602-in-1*:*
# ENVY x360
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx360Convertible*:*
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx3602-in-1*:*
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pnHP[eE][nN][vV][yY]x3602-in-1*:*
KEYBOARD_KEY_08=unknown # Prevents random airplane mode activation
# HP Elite x2 1013 G3
evdev:atkbd:dmi:bvn*:bvr*:svnHP*:pnHPElitex21013G3:*
KEYBOARD_KEY_f8=unknown # rfkill is also reported by HP Wireless hotkeys
KEYBOARD_KEY_f8=unknown # rfkill is also reported by HP Wireless hotkeys
KEYBOARD_KEY_64=calendar
KEYBOARD_KEY_81=micmute # Microphone mute button
KEYBOARD_KEY_ee=switchvideomode # Switch display outputs
KEYBOARD_KEY_81=micmute # Microphone mute button
KEYBOARD_KEY_ee=switchvideomode # Switch display outputs
KEYBOARD_KEY_92=brightnessdown
KEYBOARD_KEY_97=brightnessup
@ -741,14 +756,14 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*2570p*:*
evdev:atkbd:dmi:bvncoreboot:bvr*:bd*:svnHewlett-Packard*:pn*EliteBook2170p:*
evdev:atkbd:dmi:bvncoreboot:bvr*:bd*:svnHP*:pn*EliteBook2170p:*
KEYBOARD_KEY_66=backspace
KEYBOARD_KEY_be=battery # Fn+F2
KEYBOARD_KEY_d7=switchvideomode # Fn+F4
KEYBOARD_KEY_a3=mute # Fn+F5
KEYBOARD_KEY_a1=volumedown # Fn+F6
KEYBOARD_KEY_a2=volumeup # Fn+F7
KEYBOARD_KEY_a4=brightnessdown # Fn+F9
KEYBOARD_KEY_c3=brightnessup # Fn+F10
KEYBOARD_KEY_e3=wlan # Fn+F12
KEYBOARD_KEY_be=battery # Fn+F2
KEYBOARD_KEY_d7=switchvideomode # Fn+F4
KEYBOARD_KEY_a3=mute # Fn+F5
KEYBOARD_KEY_a1=volumedown # Fn+F6
KEYBOARD_KEY_a2=volumeup # Fn+F7
KEYBOARD_KEY_a4=brightnessdown # Fn+F9
KEYBOARD_KEY_c3=brightnessup # Fn+F10
KEYBOARD_KEY_e3=wlan # Fn+F12
# Elitebook 2760p
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*2760p*:*
@ -803,6 +818,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteBook*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPElite*x360*:*
# HP Elite Dragonfly
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteDragonfly*:*
# HP EliteBoard
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteBoard*:*
# HP ProBook 440 G2
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP440G2:*
# HP ProBook
@ -914,13 +931,6 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteDragonflyG2*:pvr*
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pnHPEliteDragonflyG2*:pvr*
KEYBOARD_KEY_08=unknown # rfkill is also reported by HP Wireless hotkeys
# HP Elite Dragonfly G3
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP:pnHPEliteDragonfly13.5inchG3NotebookPC:pvr*
KEYBOARD_KEY_c9=up
KEYBOARD_KEY_d1=down
KEYBOARD_KEY_c8=pageup
KEYBOARD_KEY_d0=pagedown
# HP 430 Programmable Wireless Keypad
evdev:input:b0005v03F0p854Ae044C*
KEYBOARD_KEY_700f3=macro1
@ -1121,13 +1131,15 @@ evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO:*:pvrIdeaPadSlim5*
evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO:pn81Q7*:pvrLenovoYogaS940:*
# Lenovo ThinkBook 16G6IRL
evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO:pn21KH*:pvrThinkBook16G6IRL:*
# Lenovo ThinkBook 14 2-in-1 G5 IAU
evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO:pn21SQ*:pvrThinkBook142-in-1G5IAU:*
KEYBOARD_KEY_a0=!mute
KEYBOARD_KEY_ae=!volumedown
KEYBOARD_KEY_b0=!volumeup
evdev:atkbd:dmi:*:svnLENOVO:*:pvrLenovoYoga300-11IBR:*
KEYBOARD_KEY_62=unknown # Touchpad on, also emitted by "Ideapad extra buttons", ignore
KEYBOARD_KEY_63=unknown # Touchpad off, also emitted by "Ideapad extra buttons", ignore
KEYBOARD_KEY_62=unknown # Touchpad on, also emitted by "Ideapad extra buttons", ignore
KEYBOARD_KEY_63=unknown # Touchpad off, also emitted by "Ideapad extra buttons", ignore
# Lenovo Y50-70
evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO*:pn*20378*:pvr*
@ -1155,18 +1167,48 @@ evdev:input:b0003v04B3p301B*
KEYBOARD_KEY_90007=mail
KEYBOARD_KEY_90008=www
# Lenovo Ideapad D330-10IGM
evdev:name:SIPODEV Lenovo HID Device:dmi:*:svnLENOVO:*:pvrLenovoideapadD330-10IGM:*
KEYBOARD_KEY_70073=touchpad_toggle # Fn+Supr (Touchpad toggle)
# Lenovo Ideapad D330-10IGM and D330-10IGL
# (Tablet buttons)
evdev:atkbd:dmi:*:svnLENOVO:*:pvrLenovoideapadD330-10IG[ML]:*
KEYBOARD_LED_NUMLOCK=0 # Lacks Num-Lock LED
KEYBOARD_LED_CAPSLOCK=0 # Lacks Caps-Lock LED
evdev:name:SIPODEV Lenovo HID Device Consumer Control:dmi:*:svnLENOVO:*:pvrLenovoideapadD330-10IGM:*
KEYBOARD_KEY_c00ff=fn_esc # Fn+Tab (FnLk toggle)
# Lenovo Ideapad D330-10IGM and D330-10IGL
# (Dock keyboard) "* Lenovo HID Device"
evdev:input:b0003v17EFp60C[368]*-e0,1,4,11,14,k*,C2,*ram4,l0,1,2,sfw
# Touchpad key acts as LEFTCTRL+LEFTMETA+F24 (C2) Windows shortcut for touchpad toggle,
# with this as LEFTCTRL+LEFTMETA+TOUCHPAD_TOGGLE but just works.
KEYBOARD_KEY_70073=touchpad_toggle # Fn+Supr (Touchpad toggle).
KEYBOARD_LED_NUMLOCK=0 # Lacks Num-Lock LED
KEYBOARD_LED_CAPSLOCK=0 # Lacks Caps-Lock LED
# Lenovo Ideapad D330-10IGM and D330-10IGL
# (Dock keyboard: volume, brightness and FnLk keys) "* Lenovo HID Device Consumer Control"
evdev:input:b0003v17EFp60C[368]*-e0,1,4,k*,F0,*ram4,lsfw
KEYBOARD_KEY_c00ff=fn_esc # Fn+Tab (FnLk toggle). Default is UNKNOWN (F0).
# Lenovo Thinkbook 16 G6+ 2024
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn21LG:pvr*
KEYBOARD_KEY_0a=!9
KEYBOARD_KEY_0b=!0
# Lenovo Legion Go Translated
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83E1:*
# Lenovo Legion Go S Translated
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83L3:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83N6:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83Q2:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83Q3:*
# Lenovo Legion Go 2 Translated
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83N0:*
evdev:name:AT Translated Set 2 keyboard:dmi:*:svnLENOVO:pn83N1:*
KEYBOARD_KEY_67=f16 # Power button long press
# Lenovo Legion Go 2 Raw
evdev:name:AT Raw Set 2 keyboard:dmi:*:svnLENOVO:pn83N0:*
evdev:name:AT Raw Set 2 keyboard:dmi:*:svnLENOVO:pn83N1:*
KEYBOARD_KEY_20=f16 # Power button long press
###########################################################
# LG
###########################################################
@ -1273,10 +1315,10 @@ evdev:input:b0003v046Dp0056*
evdev:input:b0003v046Dp0057*
KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
#KEYBOARD_KEY_c101d=scrolldown # Button below scrollwheel (see note above)
#KEYBOARD_KEY_c101e=scrollup # Button above scrollwheel (see note above)
#KEYBOARD_KEY_c1022=scrollleft # Left click on scroll-wheel (see note above)
#KEYBOARD_KEY_c1024=scrollright # Right click on scroll-wheel (see note above)
#KEYBOARD_KEY_c101d=scrolldown # Button below scrollwheel (see note above)
#KEYBOARD_KEY_c101e=scrollup # Button above scrollwheel (see note above)
#KEYBOARD_KEY_c1022=scrollleft # Left click on scroll-wheel (see note above)
#KEYBOARD_KEY_c1024=scrollright # Right click on scroll-wheel (see note above)
# MX3200 keyboard (27 MHz, modelnumber Y-RAV80)
evdev:input:b0003v046Dp005C*
@ -1768,6 +1810,14 @@ evdev:input:b0003v258Ap001E*
KEYBOARD_KEY_700a6=brightnessup
KEYBOARD_KEY_70066=sleep
###########################################################
# Positron
###########################################################
# Positron Proxima 15 (G1569)
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn*Positron*:pnG1569*:*
KEYBOARD_KEY_6e=fn
###########################################################
# Purism
###########################################################
@ -1801,7 +1851,7 @@ evdev:input:b0003v258Ap001E*
###########################################################
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*:rvnQuanta:rn30B7:rvr65.2B:*
KEYBOARD_KEY_88=media # "quick play
KEYBOARD_KEY_88=media # quick play
###########################################################
# Redmi
@ -1841,17 +1891,17 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*200E[45]*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*356V[45]*:pvr*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*355V[45]*:pvr*
KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch control setting
KEYBOARD_KEY_89=!brightnessdown # Fn+F2 brightness down
KEYBOARD_KEY_88=!brightnessup # Fn+F3 brightness up
KEYBOARD_KEY_82=!switchvideomode # Fn+F4 display toggle
KEYBOARD_KEY_f7=!touchpad_on # Fn+F5 touchpad on
KEYBOARD_KEY_f9=!touchpad_off # Fn+F5 touchpad off
KEYBOARD_KEY_a0=!mute # Fn+F6 mute
KEYBOARD_KEY_ae=!volumedown # Fn+F7 volume down
KEYBOARD_KEY_b0=!volumeup # Fn+F8 volume up
KEYBOARD_KEY_b3=!prog2 # Fn+F11 toggle fan/cool mode
KEYBOARD_KEY_d5=!wlan # Fn+F12 toggle wifi
KEYBOARD_KEY_ce=!prog1 # Fn+F1 launch control setting
KEYBOARD_KEY_89=!brightnessdown # Fn+F2 brightness down
KEYBOARD_KEY_88=!brightnessup # Fn+F3 brightness up
KEYBOARD_KEY_82=!switchvideomode # Fn+F4 display toggle
KEYBOARD_KEY_f7=!touchpad_on # Fn+F5 touchpad on
KEYBOARD_KEY_f9=!touchpad_off # Fn+F5 touchpad off
KEYBOARD_KEY_a0=!mute # Fn+F6 mute
KEYBOARD_KEY_ae=!volumedown # Fn+F7 volume down
KEYBOARD_KEY_b0=!volumeup # Fn+F8 volume up
KEYBOARD_KEY_b3=!prog2 # Fn+F11 toggle fan/cool mode
KEYBOARD_KEY_d5=!wlan # Fn+F12 toggle wifi
# Series 5
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*530U*:*
@ -2011,6 +2061,13 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnSystem76*:pnPangolin*:pvrpang15*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnT-bao:pnTbookair:*
KEYBOARD_KEY_76=touchpad_toggle # Touchpad toggle
###########################################################
# TongFang
###########################################################
# TongFang GX4 (X4SP4NAL)
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAiStone:pnX4SP4NAL:*
KEYBOARD_KEY_f8=fn
###########################################################
# Toshiba
###########################################################
@ -2117,12 +2174,16 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnINET:pnP325J:*
# Home: LeftCtrl + Esc -> LeftMeta (ignore LeftCtrl, map Esc to LeftMeta)
# Back: Backspace -> back (map backspace to back)
evdev:name:FTSC1000:00 2808:509C Keyboard:dmi:*:svnXiaomiInc:pnMipad2:*
KEYBOARD_KEY_700e0=unknown # LeftCtrl -> ignore
KEYBOARD_KEY_700e3=unknown # LeftMeta -> ignore
KEYBOARD_KEY_700e0=reserved # LeftCtrl -> ignore
KEYBOARD_KEY_700e3=reserved # LeftMeta -> ignore
KEYBOARD_KEY_70016=menu # S -> menu
KEYBOARD_KEY_70029=leftmeta # Esc -> LeftMeta (Windows key / Win8 tablets home)
KEYBOARD_KEY_7002a=back # Backspace -> back
# Xiaomi Mi NoteBook Pro star key
evdev:atkbd:dmi:bvnTIMI*:bvr*:bd*:svnTIMI*:pnMiNoteBookPro*:*
KEYBOARD_KEY_72=macro
###########################################################
# Zepto
###########################################################
@ -2287,6 +2348,11 @@ evdev:name:SIPODEV USB Composite Device:dmi:bvn*:bvr*:svnPositivoTecnologiaSA:pn
KEYBOARD_KEY_7006d=prog3 # Programmable button
KEYBOARD_KEY_7006e=prog4 # Programmable button
# Positivo (K116J)
evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:svnPositivo*:pn*:pvr*:rvnPositivo*:rnK116J*
KEYBOARD_KEY_69=www
KEYBOARD_KEY_6e=search
###########################################################
# Multilaser
###########################################################
@ -2326,7 +2392,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDIXONSP:pnDIXON*:*
# The layout must be an xkb compatible layout (defined with XKB_FIXED_LAYOUT),
# with an accompanying variant (defined with XKB_FIXED_VARIANT) if necessary.
# Yubico Yubico Yubikey II"
# Yubico Yubico Yubikey II
evdev:input:b0003v1050p0010*
# Yubico Yubikey NEO OTP+CCID
evdev:input:b0003v1050p0111*
@ -2340,21 +2406,21 @@ evdev:input:b0003v05FEp1010*
######################### LACK OF MODIFIER LEDS ############################
# This section lists keyboard which do not have their own LEDs for some
# modifiers. Only Caps-Lock (KEYBOARD_LED_CAPSLOCK) and Num-Lock
# (KEYBOARD_LED_CAPSLOCK) are currently handled and need their values set
# (KEYBOARD_LED_NUMLOCK) are currently handled and need their values set
# to "0" to indicate the absence of LED.
#
# Presence of a LED is implicit when the property is absent.
# Apple Wireless keyboards
evdev:input:b0005v05aCp022C*
evdev:input:b0005v05aCp022D*
evdev:input:b0005v05aCp022E*
evdev:input:b0005v05aCp0239*
evdev:input:b0005v05aCp023A*
evdev:input:b0005v05aCp023B*
evdev:input:b0005v05aCp0255*
evdev:input:b0005v05aCp0256*
evdev:input:b0005v05aCp0257*
evdev:input:b0005v05ACp022C*
evdev:input:b0005v05ACp022D*
evdev:input:b0005v05ACp022E*
evdev:input:b0005v05ACp0239*
evdev:input:b0005v05ACp023A*
evdev:input:b0005v05ACp023B*
evdev:input:b0005v05ACp0255*
evdev:input:b0005v05ACp0256*
evdev:input:b0005v05ACp0257*
KEYBOARD_LED_NUMLOCK=0
# Logitech K750

File diff suppressed because it is too large Load diff

View file

@ -16,6 +16,61 @@
usb:v1209p4D69*
ID_SIGNAL_ANALYZER=1
###########################################################
# Hantek DSO-6022 oscilloscopes and compatible devices
###########################################################
# Hantek DSO-6022BE w/o FW
usb:v04B4p6022*
ID_SIGNAL_ANALYZER=1
# Hantek DSO-6022BE with FW
usb:v04B5p6022*
ID_SIGNAL_ANALYZER=1
# Hantek DSO-6022BL w/o FW
usb:v04B4p602A*
ID_SIGNAL_ANALYZER=1
# Hantek DSO-6022BL with FW
usb:v04B5p602A*
ID_SIGNAL_ANALYZER=1
# Hantek DSO-6021 w/o FW
usb:v04B4p6021*
ID_SIGNAL_ANALYZER=1
# Hantek DSO-6021 with FW
usb:v04B5p6021*
ID_SIGNAL_ANALYZER=1
# Voltcraft DSO-2020, w/o FW, becomes DSO-6022BE with FW
usb:v04B4p2020*
ID_SIGNAL_ANALYZER=1
# YiXingDianZiKeJi MDSO w/o FW
usb:vD4A2p5660*
ID_SIGNAL_ANALYZER=1
# YiXingDianZiKeJi MDSO with FW
usb:v1D50p608E*
ID_SIGNAL_ANALYZER=1
# BUUDAI DDS120 w/o FW
usb:v8102p8102*
ID_SIGNAL_ANALYZER=1
# BUUDAI DDS120 with FW
usb:v04B5p0120*
ID_SIGNAL_ANALYZER=1
# Instrustar isds-205b w/o FW
usb:vD4A2p5661*
ID_SIGNAL_ANALYZER=1
# Instrustar isds-205b with FW
usb:v1D50p1D50*
ID_SIGNAL_ANALYZER=1
###########################################################
# Total Phase
###########################################################
@ -39,6 +94,13 @@ usb:v1679p3001*
usb:v1679p6003*
ID_SIGNAL_ANALYZER=1
###########################################################
# Vernier
###########################################################
# Go Direct sensors
usb:v08F7p0010*
ID_SIGNAL_ANALYZER=1
###########################################################
# XGecu
###########################################################

View file

@ -37,6 +37,10 @@ usb:v2982p1967*
usb:v33AEp0001*
ID_AV_PRODUCTION_CONTROLLER=1
# Beacn Mic (alt mode)
usb:v33AEp8001*
ID_AV_PRODUCTION_CONTROLLER=1
# Beacn Studio
usb:v33AEp0003*
ID_AV_PRODUCTION_CONTROLLER=1

View file

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

View file

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

View file

@ -68,5 +68,5 @@ usb:v2B71p000E*
# PowerSpec Ultra 3DPrinter
usb:v0315p0001*
usb:v2B71p00F6*
usb:v2B71p00FF
usb:v2B71p00FF*
ID_MAKER_TOOL=1

View file

@ -176,6 +176,7 @@ mouse:usb:v256fpc632:name:*
mouse:usb:v256fpc633:name:*
mouse:usb:v256fpc635:name:*
mouse:usb:v256fpc636:name:*
mouse:usb:v256fpc63a:name:*
ID_INPUT_3D_MOUSE=1
mouse:bluetooth:v256fpc63a:name:*
@ -191,6 +192,14 @@ mouse:bluetooth:v256fpc63a:name:*
mouse:bluetooth:v05acp030d:name:*:*
MOUSE_DPI=1300@1000
##########################################
# Asus
##########################################
# Asus Cerberus
mouse:usb:v04d9pa0d6:name:E-Signal/A-One USB Gaming Mouse:*
MOUSE_DPI=800@500 *1350@500 1600@500 2650@500
##########################################
# Cherry
##########################################
@ -259,6 +268,18 @@ mouse:usb:v056ep0155:name:ELECOM ELECOM Relacon:*
MOUSE_DPI=*500 1000 1500
MOUSE_WHEEL_CLICK_ANGLE=30
# Elecom IST Pro (via wired usb) (M-IPT10MRSABK)
mouse:usb:v056ep018a:name:ELECOM ELECOM IST PRO Mouse:*
ID_INPUT_TRACKBALL=1
# Elecom IST Pro (via usb receiver) (M-IPT10MRSABK)
mouse:usb:v056ep01a9:name:ELECOM ELECOM Bridge G1000 Mouse:*
ID_INPUT_TRACKBALL=1
# Elecom IST Pro (via Bluetooth) (M-IPT10MRSABK)
mouse:bluetooth:v056ep018a:name:ELECOM IST PRO Mouse:*
ID_INPUT_TRACKBALL=1
##########################################
# Fujitsu Siemens
##########################################
@ -388,6 +409,10 @@ mouse:usb:v17efp6045:name:Lenovo USB Laser Mouse:*
mouse:usb:v17efp6044:name:ThinkPad USB Laser Mouse:*
MOUSE_DPI=1200@125
# Lenovo Essential USB Mouse (SM-8823)
mouse:usb:v17efp608d:name:PixArt Lenovo USB Optical Mouse:*
MOUSE_DPI=1600@125
##########################################
# Logitech
##########################################
@ -599,6 +624,10 @@ mouse:usb:v046dpc548:name:Logitech USB Receiver Mouse:*
mouse:bluetooth:v046dpb035:name:MX Master 3S B Mouse:*
MOUSE_DPI=1000@142
# Logitech MX Master 4 (via Bluetooth)
mouse:bluetooth:v046dpb042:name:MX Master 4 Mouse:*
MOUSE_DPI=1000@142
# Logitech MX Ergo
mouse:usb:v046dp406f:name:Logitech MX Ergo:*
mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:406f:*
@ -675,6 +704,10 @@ mouse:usb:v046dpc517:name:Logitech USB Receiver:*
mouse:usb:v046dpc046:name:Logitech USB Optical Mouse:*
MOUSE_DPI=1000@125
# Logitech RX1500
mouse:usb:v046dpc061:name:Logitech USB Laser Mouse:*
MOUSE_DPI=1000@125
# Logitech M100 Optical Mouse
mouse:usb:v046dpc05a:name:Logitech USB Optical Mouse:*
MOUSE_DPI=1000@125
@ -805,6 +838,17 @@ mouse:usb:v22d4p1308:name:Laview Technology Mionix Avior 7000:*
mouse:usb:v0e8fp00a7:name:DaKai 2.4G RX:*
MOUSE_DPI=*800@126 1600@126
##########################################
# Nulea
##########################################
# Note: The Nulea uses a generic USB dongle. Overriding its value would cause
# other mice to be erroneously registered as trackballs, so only bluetooth
# detection is added.
# Nulea M501 Wireless Trackball (Bluetooth)
mouse:bluetooth:v000ep3412:name:Nulea BT5.0 Mouse:*
ID_INPUT_TRACKBALL=1
##########################################
# Oklick
##########################################
@ -813,6 +857,19 @@ mouse:usb:v0e8fp00a7:name:DaKai 2.4G RX:*
mouse:bluetooth:v056ep0061:name:Laser BTmouse:*
MOUSE_DPI=*800@333 1600@333
##########################################
# ProtoArc
##########################################
# ProtoArc EM01 NL
mouse:usb:v25a7pfa61:name:Compx 2.4G Receiver Mouse:*
ID_INPUT_TRACKBALL=1
MOUSE_DPI=200@250 *400@250 800@250 1200@250 1600@250
mouse:bluetooth:v25a7pfaa0:name:EM01 NL:*
ID_INPUT_TRACKBALL=1
MOUSE_DPI=200@150 *400@150 800@150 1200@150 1600@150
##########################################
# P-Active
##########################################
@ -833,6 +890,14 @@ mouse:usb:v1532p0042:name:Razer Razer Abyssus:*
mouse:usb:v1532p0029:name:Razer Razer DeathAdder:*
MOUSE_DPI=3500@1000
# Razer Cobra RZ04-03750300-R3U1
mouse:usb:v1532p00a3:name:Razer Razer Cobra:*
MOUSE_DPI=400@1000 800@1000 *1600@1000 3200@1000 6400@1000
# Razer Basilisk V3
mouse:usb:v1532p0099:name:Razer Razer Basilisk V3:*
MOUSE_DPI=400@125 800@125 1600@125 3200@125 6400@125 400@500 800@500 1600@500 3200@500 6400@500 400@1000 800@1000 *1600@1000 3200@1000 6400@1000
##########################################
# Roccat
##########################################

View file

@ -22,18 +22,14 @@
# ID_SOFTWARE_RADIO=0|1
##########################################
# Nuand
# Airspy
##########################################
# bladeRF 1.x
usb:v2CF0p5246*
# Airspy R2
usb:v1D50p60A1*
ID_SOFTWARE_RADIO=1
# bladeRF 1.x (legacy)
usb:v1D50p6066*
ID_SOFTWARE_RADIO=1
# bladeRF 2.0 micro
usb:v2CF0p5250*
# Airspy HF+
usb:v03EBp800C*
ID_SOFTWARE_RADIO=1
##########################################
@ -63,10 +59,69 @@ usb:v2500p0002*
usb:v2500p0020*
usb:v2500p0021*
usb:v2500p0022*
usb:v2500p0023*
usb:v3923p7813*
usb:v3923p7814*
ID_SOFTWARE_RADIO=1
##########################################
# FUNcube
##########################################
# FUNcube Dongle Pro
usb:v04D8pFB56*
ID_SOFTWARE_RADIO=1
# FUNcube Dongle Pro+
usb:v04D8pFB31*
ID_SOFTWARE_RADIO=1
##########################################
# Great Scott Gadgets
##########################################
# HackRF Jawbreaker
usb:v1D50p604B*
ID_SOFTWARE_RADIO=1
# HackRF One
usb:v1D50p6089*
ID_SOFTWARE_RADIO=1
##########################################
# HydraSDR
##########################################
# HydraSDR RFOne
usb:v38AFp0001*
ID_SOFTWARE_RADIO=1
##########################################
# LimeSDR
##########################################
# XTRX (USB3380)
usb:v0525p3380*
ID_SOFTWARE_RADIO=1
##########################################
# Microtelecom
##########################################
# Perseus
usb:v04B4p325C*
ID_SOFTWARE_RADIO=1
##########################################
# Nuand
##########################################
# bladeRF 1.x
usb:v2CF0p5246*
ID_SOFTWARE_RADIO=1
# bladeRF 1.x (legacy)
usb:v1D50p6066*
ID_SOFTWARE_RADIO=1
# bladeRF 2.0 micro
usb:v2CF0p5250*
ID_SOFTWARE_RADIO=1
##########################################
# RTL-SDR
##########################################
@ -237,3 +292,34 @@ usb:v1F4DpD286*
# PROlectrix DV107669 (FC0012)
usb:v1F4DpD803*
ID_SOFTWARE_RADIO=1
##########################################
# SDRplay
##########################################
# RSP1
usb:v1DF7p2500*
ID_SOFTWARE_RADIO=1
# RSP1A
usb:v1DF7p3000*
ID_SOFTWARE_RADIO=1
# RSP2/RSP2pro
usb:v1DF7p3010*
ID_SOFTWARE_RADIO=1
# RSPduo
usb:v1DF7p3020*
ID_SOFTWARE_RADIO=1
# RSPdx
usb:v1DF7p3030*
ID_SOFTWARE_RADIO=1
# RSP1B
usb:v1DF7p3050*
ID_SOFTWARE_RADIO=1
# RSPdxR2
usb:v1DF7p3060*
ID_SOFTWARE_RADIO=1

View file

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

View file

@ -28,37 +28,18 @@
# Permitted keys:
# Specify whether a touchpad is a built-in one or external:
# ID_INPUT_TOUCHPAD_INTEGRATION=internal|external
#
# By default i8042, i2c, and rmi devices are assumed to be internal,
# bluetooth devices are assumed to be external, usb devices are assumed
# to be internal when connected to a PCB port and external otherwise.
touchpad:i8042:*
touchpad:rmi:*
touchpad:usb:*
# Example entry; vid: ffff, pid: 0000; both must be lowercase.
# this will make this bluetooth touchpad to behave as internal.
#touchpad:bluetooth:vffffp0000:*
# ID_INPUT_TOUCHPAD_INTEGRATION=internal
###########################################################
# Lenovo IdeaPad Duet3 10IGL5 (82AT)
###########################################################
touchpad:bluetooth:v17efp60fa:*
ID_INPUT_TOUCHPAD_INTEGRATION=internal
touchpad:bluetooth:*
ID_INPUT_TOUCHPAD_INTEGRATION=external
###########################################################
# Apple
###########################################################
# Magic Trackpad (1 and 2)
touchpad:usb:v05acp030e:*
touchpad:usb:v05acp0265:*
ID_INPUT_TOUCHPAD_INTEGRATION=external
###########################################################
# HP Elite x2 1013 G3
###########################################################
touchpad:usb:v044ep1221:*
ID_INPUT_TOUCHPAD_INTEGRATION=external
###########################################################
# Logitech
###########################################################
touchpad:usb:v046d*
ID_INPUT_TOUCHPAD_INTEGRATION=external
###########################################################
# Wacom
###########################################################
touchpad:usb:v056a*
ID_INPUT_TOUCHPAD_INTEGRATION=external

View file

@ -10,3 +10,9 @@
usb:v067Bp25A1*
usb:v067Bp27A1*
ID_NET_AUTO_LINK_LOCAL_ONLY=1
# BMC USB-to-USB links for AMI MegaRAC and OpenBMC
usb:v1D6Bp0103*
usb:v0525pA4A2*
usb:v046BpFFB0*
ID_NET_AUTO_LINK_LOCAL_ONLY=1

View file

@ -135,4 +135,18 @@ IDEMIA,IDEM,06/26/2018
"Areus GmbH",AREU,04/07/2025
"Rockwell Automation, Inc",ROKL,04/18/2025
"JUMPtec GmbH",JUMP,04/22/2025
"Fsas Technologies Inc.",FSAS,04/30/2025
"Fsas Technologies Inc.",FSAS,04/30/2025
"JP Morgan Chase N.A.",JPMC,05/30/2025
"Roku, Inc.",ROKU,07/15/2025
"UltraRISC Technology (Shanghai) Co., Ltd",ULRV,09/15/2025
"SYNCS / Aviot Systems Pte Ltd",SYNC,10/21/2025
"Advantech Co., Ltd.",AHCL,10/23/2025
"Picoheart (SG) Pte. Ltd.",PICO,10/30/2025
"Kontron France",KOMF,12/09/2025
"Ubiquiti Inc.",UBTI,12/10/2025
"KAYA N CO., LTD.",KAYA,01/06/2026
Mesiontech,MITH,01/30/2026
"Nexthop Systems Inc.",NXHP,02/23/2026
"Megapolis-Telecom Region LLC",MPTR,02/23/2026
"Nanjing Tianyihexin Electronics Ltd",TYHX,02/27/2026
"Theo End (Shenzhen) Computing Technology Co., Ltd.",LECA,02/27/2026
1 Company ACPI ID Approved On Date
135 Areus GmbH AREU 04/07/2025
136 Rockwell Automation, Inc ROKL 04/18/2025
137 JUMPtec GmbH JUMP 04/22/2025
138 Fsas Technologies Inc. FSAS 04/30/2025
139 JP Morgan Chase N.A. JPMC 05/30/2025
140 Roku, Inc. ROKU 07/15/2025
141 UltraRISC Technology (Shanghai) Co., Ltd ULRV 09/15/2025
142 SYNCS / Aviot Systems Pte Ltd SYNC 10/21/2025
143 Advantech Co., Ltd. AHCL 10/23/2025
144 Picoheart (SG) Pte. Ltd. PICO 10/30/2025
145 Kontron France KOMF 12/09/2025
146 Ubiquiti Inc. UBTI 12/10/2025
147 KAYA N CO., LTD. KAYA 01/06/2026
148 Mesiontech MITH 01/30/2026
149 Nexthop Systems Inc. NXHP 02/23/2026
150 Megapolis-Telecom Region LLC MPTR 02/23/2026
151 Nanjing Tianyihexin Electronics Ltd TYHX 02/27/2026
152 Theo End (Shenzhen) Computing Technology Co., Ltd. LECA 02/27/2026

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,7 +5,6 @@
# So we don't "test" them.
hwdb_files_notest = files(
'README',
'20-dmi-id.hwdb',
'20-pci-vendor-model.hwdb',
'20-pci-classes.hwdb',
'20-usb-vendor-model.hwdb',
@ -15,10 +14,11 @@ hwdb_files_notest = files(
'20-bluetooth-vendor-product.hwdb',
'20-acpi-vendor.hwdb',
'20-OUI.hwdb',
'20-net-ifname.hwdb',
'20-vmbus-class.hwdb')
hwdb_files_test = files(
'20-dmi-id.hwdb',
'20-net-ifname.hwdb',
'60-autosuspend.hwdb',
'60-autosuspend-fingerprint-reader.hwdb',
'60-evdev.hwdb',
@ -31,17 +31,18 @@ hwdb_files_test = files(
'70-cameras.hwdb',
'70-hardware-wallets.hwdb',
'70-joystick.hwdb',
'70-maker-tools.hwdb',
'70-mouse.hwdb',
'70-pda.hwdb',
'70-pointingstick.hwdb',
'70-software-radio.hwdb',
'70-sound-card.hwdb',
'70-touchpad.hwdb',
'80-ieee1394-unit-function.hwdb')
'80-ieee1394-unit-function.hwdb',
'82-net-auto-link-local.hwdb')
if conf.get('ENABLE_HWDB') == 1
auto_suspend_rules = custom_target(
'60-autosuspend-chromiumos.hwdb',
output : '60-autosuspend-chromiumos.hwdb',
command : make_autosuspend_rules_py,
capture : true,

View file

@ -75,7 +75,7 @@ UDEV_TAG = Word(string.ascii_uppercase, alphanums + '_')
TYPES = {'mouse': ('usb', 'bluetooth', 'ps2', '*'),
'evdev': ('name', 'atkbd', 'input'),
'fb': ('pci', 'vmbus'),
'id-input': ('modalias'),
'id-input': ('modalias', 'bluetooth', 'i2c', 'usb'),
'touchpad': ('i8042', 'rmi', 'bluetooth', 'usb'),
'joystick': ('i8042', 'rmi', 'bluetooth', 'usb'),
'keyboard': ('name', ),
@ -100,12 +100,14 @@ TYPES = {'mouse': ('usb', 'bluetooth', 'ps2', '*'),
# Patterns that are used to set general properties on a device
GENERAL_MATCHES = {'acpi',
'bluetooth',
'usb',
'dmi',
'ieee1394',
'OUI',
'pci',
'sdio',
'tpm2',
'usb',
'vmbus',
'OUI',
'ieee1394',
}
def upperhex_word(length):
@ -146,6 +148,7 @@ def property_grammar():
mount_matrix = Group(mount_matrix_row + ';' + mount_matrix_row + ';' + mount_matrix_row)('MOUNT_MATRIX')
xkb_setting = Optional(Word(alphanums + '+-/@._'))
id_input_setting = Optional(Or((Literal('0'), Literal('1'))))
zero_one = Or((Literal('0'), Literal('1')))
# Although this set doesn't cover all of characters in database entries, it's enough for test targets.
name_literal = Word(printables + ' ')
@ -155,13 +158,13 @@ def property_grammar():
('MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL', INTEGER),
('MOUSE_WHEEL_CLICK_COUNT', INTEGER),
('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER),
('ID_INPUT_3D_MOUSE', Or((Literal('0'), Literal('1')))),
('ID_AUTOSUSPEND', Or((Literal('0'), Literal('1')))),
('ID_INPUT_3D_MOUSE', zero_one),
('ID_AUTOSUSPEND', zero_one),
('ID_AUTOSUSPEND_DELAY_MS', INTEGER),
('ID_AV_PRODUCTION_CONTROLLER', Or((Literal('0'), Literal('1')))),
('ID_AV_LIGHTS', Or((Literal('0'), Literal('1')))),
('ID_PERSIST', Or((Literal('0'), Literal('1')))),
('ID_PDA', Or((Literal('0'), Literal('1')))),
('ID_AV_PRODUCTION_CONTROLLER', zero_one),
('ID_AV_LIGHTS', zero_one),
('ID_PERSIST', zero_one),
('ID_PDA', zero_one),
('ID_INPUT', id_input_setting),
('ID_INPUT_ACCELEROMETER', id_input_setting),
('ID_INPUT_JOYSTICK', id_input_setting),
@ -175,11 +178,12 @@ def property_grammar():
('ID_INPUT_TOUCHPAD', id_input_setting),
('ID_INPUT_TOUCHSCREEN', id_input_setting),
('ID_INPUT_TRACKBALL', id_input_setting),
('ID_SIGNAL_ANALYZER', Or((Literal('0'), Literal('1')))),
('ID_MAKER_TOOL', Or((Literal('0'), Literal('1')))),
('ID_HARDWARE_WALLET', Or((Literal('0'), Literal('1')))),
('ID_SOFTWARE_RADIO', Or((Literal('0'), Literal('1')))),
('ID_MM_DEVICE_IGNORE', Or((Literal('0'), Literal('1')))),
('ID_SIGNAL_ANALYZER', zero_one),
('ID_MAKER_TOOL', zero_one),
('ID_HARDWARE_WALLET', zero_one),
('ID_SOFTWARE_RADIO', zero_one),
('ID_MM_DEVICE_IGNORE', zero_one),
('ID_NET_AUTO_LINK_LOCAL_ONLY', zero_one),
('POINTINGSTICK_SENSITIVITY', INTEGER),
('ID_INPUT_JOYSTICK_INTEGRATION', Or(('internal', 'external'))),
('ID_INPUT_TOUCHPAD_INTEGRATION', Or(('internal', 'external'))),
@ -191,21 +195,32 @@ def property_grammar():
('ACCEL_MOUNT_MATRIX', mount_matrix),
('ACCEL_LOCATION', Or(('display', 'base'))),
('PROXIMITY_NEAR_LEVEL', INTEGER),
('IEEE1394_UNIT_FUNCTION_MIDI', Or((Literal('0'), Literal('1')))),
('IEEE1394_UNIT_FUNCTION_AUDIO', Or((Literal('0'), Literal('1')))),
('IEEE1394_UNIT_FUNCTION_VIDEO', Or((Literal('0'), Literal('1')))),
('IEEE1394_UNIT_FUNCTION_MIDI', zero_one),
('IEEE1394_UNIT_FUNCTION_AUDIO', zero_one),
('IEEE1394_UNIT_FUNCTION_VIDEO', zero_one),
('ID_VENDOR_FROM_DATABASE', name_literal),
('ID_MODEL_FROM_DATABASE', name_literal),
('ID_TAG_MASTER_OF_SEAT', Literal('1')),
('ID_INFRARED_CAMERA', Or((Literal('0'), Literal('1')))),
('ID_INFRARED_CAMERA', zero_one),
('ID_CAMERA_DIRECTION', Or(('front', 'rear'))),
('SOUND_FORM_FACTOR', Or(('internal', 'webcam', 'speaker', 'headphone', 'headset', 'handset', 'microphone'))),
('ID_SYS_VENDOR_IS_RUBBISH', zero_one),
('ID_PRODUCT_NAME_IS_RUBBISH', zero_one),
('ID_PRODUCT_VERSION_IS_RUBBISH', zero_one),
('ID_BOARD_VERSION_IS_RUBBISH', zero_one),
('ID_PRODUCT_SKU_IS_RUBBISH', zero_one),
('ID_CHASSIS_ASSET_TAG_IS_RUBBISH', zero_one),
('ID_CHASSIS', name_literal),
('ID_SYSFS_ATTRIBUTE_MODEL', name_literal),
('ID_NET_NAME_FROM_DATABASE', name_literal),
('ID_NET_NAME_INCLUDE_DOMAIN', zero_one),
('TPM2_BROKEN_NVPCR', zero_one),
)
fixed_props = [Literal(name)('NAME') - Suppress('=') - val('VALUE')
for name, val in props]
kbd_props = [Regex(r'KEYBOARD_KEY_[0-9a-f]+')('NAME')
- Suppress('=') -
('!' ^ (Optional('!') - Word(alphanums + '_')))('VALUE')
Group('!' ^ (Optional('!') - Word(alphanums + '_')))('VALUE')
]
abs_props = [Regex(r'EVDEV_ABS_[0-9a-f]{2}')('NAME')
- Suppress('=') -
@ -241,23 +256,24 @@ def check_matches(groups):
matches = sum((group[0] for group in groups), [])
# This is a partial check. The other cases could be also done, but those
# two are most commonly wrong.
grammars = { 'usb' : 'v' + upperhex_word(4) + Optional('p' + upperhex_word(4) + Optional(':')) + '*',
'pci' : 'v' + upperhex_word(8) + Optional('d' + upperhex_word(8) + Optional(':')) + '*',
# three are the most commonly wrong.
grammars = {
'bluetooth' : 'v' + upperhex_word(4) + Optional('p' + upperhex_word(4) + Optional(':')) + '*',
'usb' : 'v' + upperhex_word(4) + Optional('p' + upperhex_word(4) + Optional(':')) + '*',
'pci' : 'v' + upperhex_word(8) + Optional('d' + upperhex_word(8) + Optional(':')) + '*',
}
for match in matches:
prefix, rest = match.split(':', maxsplit=1)
gr = grammars.get(prefix)
if gr:
if gr := grammars.get(prefix):
# we check this first to provide an easy error message
if rest[-1] not in '*:':
error('pattern {} does not end with "*" or ":"', match)
error('Pattern {!r} does not end with "*" or ":"', match)
try:
gr.parseString(rest)
except ParseBaseException as e:
error('Pattern {!r} is invalid: {}', rest, e)
error('Pattern {!r} is invalid: {}', match, e)
continue
matches.sort()
@ -336,10 +352,14 @@ def print_summary(fname, groups):
print(f'{fname}: {len(groups)} match groups, {n_matches} matches, {n_props} properties')
if n_matches == 0 or n_props == 0:
error(f'{fname}: no matches or props')
print(f'{fname}: no matches or props')
if __name__ == '__main__':
args = sys.argv[1:] or sorted(glob.glob(os.path.dirname(sys.argv[0]) + '/[678][0-9]-*.hwdb'))
args = sys.argv[1:] or sorted([
os.path.dirname(sys.argv[0]) + '/20-dmi-id.hwdb',
os.path.dirname(sys.argv[0]) + '/20-net-ifname.hwdb',
*glob.glob(os.path.dirname(sys.argv[0]) + '/[678][0-9]-*.hwdb'),
])
for fname in args:
groups = parse(fname)

File diff suppressed because it is too large Load diff

View file

@ -9,8 +9,8 @@
# The latest version can be obtained from
# http://www.linux-usb.org/usb.ids
#
# Version: 2025.04.01
# Date: 2025-04-01 20:34:02
# Version: 2025.12.13
# Date: 2025-12-13 20:34:01
#
# Vendors, devices and interfaces. Please keep sorted.
@ -59,6 +59,8 @@
0112 Card Reader
017c MLK
145f Trust Deskset
019c mek
0042 mek_42
0200 TP-Link
0201 MA180 UMTS Modem
0204 Chipsbank Microelectronics Co., Ltd
@ -69,6 +71,9 @@
0231 Sonuus Limited
02ad HUMAX Co., Ltd.
138c PVR Mass Storage
0300 Ajazz
1010 Akp153E Desktop Controller
1020 AKP153R Desktop Controller
0303 Mini Automation Controller
0324 OCZ Technology Inc
bc06 OCZ ATV USB 2.0 Flash Drive
@ -95,7 +100,7 @@
0015 ATAPI Enclosure
2123 SiPix StyleCam Deluxe
8004 Aox 99001
03e9 Thesys Microelectronics
03e9 Melexis (formerly Thesys Microelectronics)
03ea Data Broadcasting Corp.
03eb Atmel Corp.
0902 4-Port Hub
@ -257,6 +262,8 @@
0423 HS-COMBO Cardreader
042a LaserJet M1132 MFP
0441 Prime [NW280AA, G8X92AA]
046b Dock G5
0483 Engage Go 10 Tablet
0504 DeskJet 885c
0505 ScanJet 2100c
0507 DVD+RW
@ -266,6 +273,7 @@
0517 LaserJet 1000
051d Bluetooth Interface
052a LaserJet M1212nf MFP
0583 Engage Go 10 Tablet
0601 ScanJet 6300c
0604 DeskJet 840c
0605 ScanJet 2200c
@ -275,6 +283,7 @@
0624 Bluetooth Dongle
0641 X1200 Optical Mouse
0653 DeskJet 3700 series
0683 Engage Go 10 Tablet
0701 ScanJet 5300c/5370c
0704 DeskJet 825c
0705 ScanJet 4400c
@ -325,6 +334,7 @@
1102 PhotoSmart 240 series
1104 DeskJet 959c
1105 ScanJet 5470c/5490c
110c Pocket Media Drive
1111 OfficeJet v60
1116 Jornada 568 Pocket PC
1117 LaserJet 1300n
@ -1013,6 +1023,7 @@
3000 Optical dual-touch panel
3001 Optical Touch Screen
3008 Optical Touch Screen
4033 HD Webcam
a060 HD Webcam
0409 NEC Corp.
0011 PC98 Series Layout Keyboard Mouse
@ -1029,6 +1040,7 @@
004e SuperScript 1400 Series
004f Wireless Keyboard with One-touch start buttons
0050 7-port hub
0056 uPD720133 IDE bridge
0058 HighSpeed Hub
0059 HighSpeed Hub
005a HighSpeed Hub
@ -1486,6 +1498,7 @@
4095 Live! Cam Sync HD [VF0770]
4097 Live! Cam Chat HD [VF0700/VF0790]
4099 Creative VF0800 [RealSense Camera SR300]
40a3 Live! Cam V3 2K [VF-0900]
4100 Nomad Jukebox 2
4101 Nomad Jukebox 3
4102 NOMAD MuVo^2
@ -1959,6 +1972,7 @@
010d 3500-4500 series
010f 6500 series
0142 X3650 (Printer, Scanner, Copier)
01bd S800 Series Scanner
01fa S310 series
020e RICOH Aficio SP 4410SF
4303 Xerox WorkCentre Pro 412
@ -1982,6 +1996,7 @@
9a10 34UC88-B
9a11 34UC88-B
9a39 27UP850 - WK.AEUDCSN - External Monitor 4K
9a57 UltraGear Monitor
9c01 LGE Sync
043f RadiSys Corp.
0440 Eizo Nanao Corp.
@ -2007,6 +2022,7 @@
044d Siemens Nixdorf AG
044e Alps Electric Co., Ltd
1104 Japanese Keyboard
1218 Electric Touchpad
2002 MD-5500 Printer
2014 Bluetooth Device
3001 UGTZ4 Bluetooth
@ -2737,6 +2753,8 @@
0180 Strait 3.0
01a4 MC 2.1 Mouse
01a6 MX BOARD 2.0S FL RGB DE Keyboard
0201 Smart Board 1150
0202 Smart Terminal 1150
b090 Keyboard
b091 Mouse
c099 Stream Keyboard TKL
@ -2851,6 +2869,7 @@
08dd QuickCam for Notebooks
08e0 QuickCam Express
08e1 Labtec Webcam
08e4 C505e HD Webcam
08e5 C920 PRO HD Webcam
08f0 QuickCam Messenger
08f1 QuickCam Express
@ -3002,6 +3021,7 @@
c08e G MX518 Gaming Mouse (MU0053)
c092 G102/G203 LIGHTSYNC Gaming Mouse
c093 M500s Optical Mouse
c09d G102 LIGHTSYNC Gaming Mouse
c101 UltraX Media Remote
c110 Harmony 785/880/885 Remote
c111 Harmony 525 Remote
@ -3060,6 +3080,7 @@
c24d G710 Gaming Keyboard
c24e G500s Laser Gaming Mouse
c24f G29 Driving Force Racing Wheel [PS3]
c251 GamePanel for Dell XPS M1730
c260 G29 Driving Force Racing Wheel [PS4]
c262 G920 Driving Force Racing Wheel
c281 WingMan Force
@ -3073,6 +3094,7 @@
c295 Momo Force Steering Wheel
c298 Driving Force Pro
c299 G25 Racing Wheel
c29a Driving Force GT
c29b G27 Racing Wheel
c29c Speed Force Wireless Wheel for Wii
c2a0 Wingman Force Feedback Mouse
@ -3110,6 +3132,7 @@
c335 G910 Orion Spectrum Mechanical Keyboard
c336 G213 Prodigy Gaming Keyboard
c33a G413 Gaming Keyboard
c33e G915 Mechanical Keyboard
c33f G815 Mechanical Keyboard
c401 TrackMan Marble Wheel
c402 Marble Mouse (2-button)
@ -3359,6 +3382,7 @@
047c Dell Computer Corp.
ffff UPS Tower 500W LV
047d Kensington
00f2 VeriMark Desktop
1001 Mouse*in*a*Box
1002 Expert Mouse Pro
1003 Orbit TrackBall
@ -3558,6 +3582,7 @@
0485 Nokia Monitors
0486 ASUS Computers, Inc.
0185 EeePC T91MT HID Touch Panel
573c Xreal Light Microcontroller
0487 Stewart Connector
0488 Cirque Corp.
0489 Foxconn / Hon Hai
@ -3663,6 +3688,7 @@
1033 DGX-505
1037 PSR-E403
103c MOTIF-RACK ES
1045 MM6
1054 S90XS Keyboard/Music Synthesizer
160f P-105
1613 Clavinova CLP535
@ -3892,9 +3918,11 @@
106d S750 Printer
106e S820D
1070 S530D
1071 Sony MPR-501
1072 I850 Printer
1073 I550 Printer
1074 S330 Printer
1075 Sony MPR-505
1076 i70
1077 i950
107a S830D
@ -4053,6 +4081,7 @@
178a PIXMA MG3600 Series
178d PIXMA MG6853
180b PIXMA MG3000 series
183b PIXMA MG3110 Series
1856 PIXMA TS6250
1900 CanoScan LiDE 90
1901 CanoScan 8800F
@ -4060,6 +4089,7 @@
1905 CanoScan LiDE 200
1906 CanoScan 5600F
1907 CanoScan LiDE 700F
1908 CanoScan 9000F
1909 CanoScan LiDE 110
190a CanoScan LiDE 210
190d CanoScan 9000F Mark II
@ -4621,6 +4651,7 @@
0434 D610
0436 D810
043f D5600
0455 Z50II
0f03 PD-10 Wireless Printer Adapter
4000 Coolscan LS 40 ED
4001 LS 50 ED/Coolscan V ED
@ -4907,11 +4938,19 @@
0891 Stylus Office BX535WD
0892 Stylus Office BX935FWD
0893 EP-774A
08d1 L220/L360 Series
0e03 Thermal Receipt Printer [TM-T20]
0e31 Thermal Receipt Printer [TM-L100]
1114 XP-440 [Expression Home Small-in-One Printer]
1115 ES-0133 [Expression Home XP-342]
1129 ET-4750 [WorkForce ET-4750 EcoTank All-in-One]
1168 Workforce WF-7820/7840 Series
1186 ET-2820 Series [ET-2820 EcoTank All-in-One]
118a ET-2810/L3250 Series [EcoTank ET-2810/L3250]
118b ET-2850/L4260 Series [EcoTank ET-2850/L4260]
11b0 XP-4200 Series [Expression Home XP-4200]
11b9 ET-2830/L3550 Series [EcoTank ET-2830/L3550]
11c8 ET-2860/L3270 Series [EcoTank ET-2860/L3270]
04b9 Rainbow Technologies, Inc.
0300 SafeNet USB SuperPro/UltraPro
1000 iKey 1000 Token
@ -4996,6 +5035,9 @@
1303 i3 Micro Module
1304 i3 Module
1305 i3 Multi Sensing Module
1400 Javelin Module Recovery
1401 Javelin Module
1500 Gas sensor demo board
04c1 U.S. Robotics (3Com)
0020 56K Voice Pro
0022 56K Voice Pro
@ -5034,7 +5076,9 @@
11f3 fi-6130Z
125a PalmSecure Sensor Device - MP
132e fi-7160
1526 PalmSecure-F Pro
159f ScanSnap iX1500
15ff Fi-8170 Document Scanner [Ricoh fi-8170: High Performance Desktop Scanner - PFU]
200f Sigma DP2 (Mass Storage)
2010 Sigma DP2 (PictBridge)
201d SATA 3.0 6Gbit/s Adaptor [GROOVY]
@ -5067,6 +5111,7 @@
300f Atheros AR3012 Bluetooth
3014 Qualcomm Atheros Bluetooth
3015 Qualcomm Atheros QCA9377 Bluetooth
3802 MediaTek Bluetooth MT7921
7022 HP HD Webcam
7025 HP HD Webcam
7046 TOSHIBA Web Camera - HD
@ -13443,7 +13488,9 @@
0b0d ProjectLab
0000 CenturyCD
0b0e GN Netcom
0301 Jabra EVOLVE 20
0305 Jabra EVOLVE Link MS
030c Jabra EVOLVE 65
0311 Jabra EVOLVE 65
0312 enc060:Buttons Volume up/down/mute + phone [Jabra]
0343 Jabra UC VOICE 150a
@ -13462,6 +13509,11 @@
2007 GN 2000 Stereo Corded Headset
2456 Jabra SPEAK 810
245e Jabra Link 370
248a Jabra Elite 85h
24b8 Jabra Evolve2 65
24bb Jabra Evolve2 85
24c9 Jabra Link 380
24ca Jabra Link 380
620c Jabra BT620s
9330 Jabra GN9330 Headset
a346 Jabra Engage 75 Stereo
@ -15333,6 +15385,12 @@
0e23 Liou Yuane Enterprise Co., Ltd
0e25 VinChip Systems, Inc.
0e26 J-Phone East Co., Ltd
0e2c Materialise Motion NV
0012 footscan pressure plate (0.5m)
0013 footscan pressure plate (1.0m)
0018 footscan 2D interface box
0020 footscan pressure plate (1.5m)
002d footscan heavy duty pressure plate (1.0m)
0e2e Brady Worldwide, Inc.
000b BMP 51
000c BMP 61
@ -23998,6 +24056,7 @@ C 08 Mass Storage
00 Control/Bulk/Interrupt
01 Control/Bulk
50 Bulk-Only
62 USB Attached SCSI
C 09 Hub
00 Unused
00 Full speed (or root) hub

View file

@ -264,7 +264,7 @@
<variablelist>
<varlistentry>
<term><option>kernel-identify</option> <replaceable>kernel</replaceable></term>
<term><option>kernel-identify</option> <replaceable>KERNEL-IMAGE</replaceable></term>
<listitem><para>Takes a kernel image as argument. Checks what kind of kernel the image is. Returns
one of <literal>uki</literal>, <literal>addon</literal>, <literal>pe</literal>, and
@ -275,7 +275,7 @@
</varlistentry>
<varlistentry>
<term><option>kernel-inspect</option> <replaceable>kernel</replaceable></term>
<term><option>kernel-inspect</option> <replaceable>KERNEL-IMAGE</replaceable></term>
<listitem><para>Takes a kernel image as argument. Prints details about the image.</para>

View file

@ -83,7 +83,7 @@
<para>Capsule names may be chosen freely by the user, however, they must be suitable as UNIX filenames
(i.e. 255 characters max, and contain no <literal>/</literal>), and when prefixed with
<literal>p-</literal> be suitable as a user name matching strict POSIX rules, see <ulink
<literal>c-</literal> be suitable as a user name matching strict POSIX rules, see <ulink
url="https://systemd.io/USER_NAMES">User/Group Name Syntax</ulink> for details.</para>
<xi:include href="version-info.xml" xpointer="v256"/>

View file

@ -168,11 +168,13 @@
<option>MaxUse=</option> makes
sure that old core dumps are removed as soon as the total disk
space taken up by core dumps grows beyond this limit (defaults
to 10% of the total disk size). <option>KeepFree=</option>
controls how much disk space to keep free at least (defaults
to 15% of the total disk size). Note that the disk space used
to 10% of the total disk size, capped at 4GiB, minimum 1MiB).
<option>KeepFree=</option> controls how much disk space to keep
free at least (defaults to 15% of the total disk size, limited
to a maximum of 4GiB). Note that the disk space used
by core dumps might temporarily exceed these limits while
core dumps are processed. Note that old core dumps are also
core dumps are processed. <option>MaxUse=</option> takes precedence.
Note that old core dumps are also
removed based on time via
<citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
Set either value to 0 to turn off size-based cleanup.</para>

View file

@ -353,7 +353,7 @@
particular, if the device is used for a mount point, the mount point itself also needs to
have the <option>nofail</option> option, or the boot will fail if the device is not unlocked
successfully. If a keyfile and/or a <option>header</option> are specified, the dependencies on
their respective directories will also not be fatal, so that umounting said directories will
their respective directories will also not be fatal, so that unmounting said directories will
not cause the generated cryptset unit to be deactivated.</para>
<xi:include href="version-info.xml" xpointer="v186"/></listitem>

View file

@ -18,5 +18,5 @@
<!ENTITY DEFAULT_TIMEOUT "{{DEFAULT_TIMEOUT_SEC}} s">
<!ENTITY DEFAULT_USER_TIMEOUT "{{DEFAULT_USER_TIMEOUT_SEC}} s">
<!ENTITY DEFAULT_KEYMAP "{{SYSTEMD_DEFAULT_KEYMAP}}">
<!ENTITY fedora_latest_version "42">
<!ENTITY fedora_cloud_release "1.1">
<!ENTITY fedora_latest_version "43">
<!ENTITY fedora_cloud_release "1.6">

View file

@ -158,6 +158,8 @@
<xsl:param name="keyNode"/>
<!-- suggested value for generatedID output, a contextually meaningful ID string -->
<xsl:param name="templateID"/>
<!-- Strip leading and trailing whitespaces, and replace repeating whitespaces with a single space -->
<xsl:variable name="normalizedID" select="normalize-space($templateID)"/>
<xsl:variable name="conflictSource" select="preceding::refsect1/title|preceding::refsect1/info/title|
preceding::refsect2/title|preceding::refsect2/info/title|
preceding::varlistentry/term[1]"/>
@ -165,10 +167,10 @@
<xsl:choose>
<!-- special case conflictCount = 0 to preserve compatibility with URLs generated by previous versions of this XSL stylesheet where possible -->
<xsl:when test="$conflictCount = 0">
<xsl:value-of select="$templateID"/>
<xsl:value-of select="$normalizedID"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($templateID, $conflictCount)"/>
<xsl:value-of select="concat($normalizedID, $conflictCount)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@ -266,6 +268,10 @@
<!-- add Index link at top of page -->
<xsl:template name="user.header.content">
<style>
:root {
color-scheme: light dark;
}
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
@ -310,6 +316,13 @@
<xsl:text>"</xsl:text>
</xsl:template>
<!-- copied from docbook to remove the static color declarations -->
<xsl:template name="body.attributes">
<xsl:if test="starts-with($writing.mode, 'rl')">
<xsl:attribute name="dir">rtl</xsl:attribute>
</xsl:if>
</xsl:template>
<!-- Switch things to UTF-8, ISO-8859-1 is soo yesteryear -->
<xsl:output method="html" encoding="UTF-8" indent="no"/>

View file

@ -17,7 +17,7 @@
<refnamediv>
<refname>file-hierarchy</refname>
<refpurpose>File system hierarchy overview</refpurpose>
<refpurpose>systemd file system hierarchy requirements</refpurpose>
</refnamediv>
<refsect1>
@ -25,20 +25,12 @@
<para>Operating systems using the
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> system and
service manager are organized based on a file system hierarchy inspired by UNIX, more specifically the
hierarchy described in the <ulink url="http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html">File
System Hierarchy</ulink> specification and <citerefentry
project='man-pages'><refentrytitle>hier</refentrytitle><manvolnum>7</manvolnum></citerefentry>, with
various extensions, partially documented in the <ulink
url="https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG Base Directory
Specification</ulink> and <ulink url="https://www.freedesktop.org/wiki/Software/xdg-user-dirs">XDG User
Directories</ulink>. This manual page describes a more generalized, though minimal and modernized subset
of these specifications that defines more strictly the suggestions and restrictions systemd makes on the
file system hierarchy. Note that this document makes no attempt to define the directory structure
comprehensively, it only documents a skeleton of a directory tree, that downstreams can extend. Because
of that traditional directories such as <filename>/usr/include/</filename> or
<filename>/var/spool/</filename> are not covered, even though it might (or might not) make a lot of sense
to include them in the structure of an actually deployed OS.</para>
service manager are organized based on a file system hierarchy inspired by UNIX,
as described in <ulink url="https://uapi-group.org/specifications/specs/linux_file_system_hierarchy/">
Linux File System Hierarchy</ulink>.
Additional requirements on <emphasis>when</emphasis> given parts of the hierarchy
must be available during boot are listed in
<ulink url="https://systemd.io/MOUNT_REQUIREMENTS/">Mount Requirements</ulink>.</para>
<para>Many of the paths described here can be queried
with the
@ -46,716 +38,13 @@
tool.</para>
</refsect1>
<refsect1>
<title>General Structure</title>
<variablelist>
<varlistentry>
<term><filename>/</filename></term>
<listitem><para>The file system root. Usually writable, but this is not required. Possibly a
temporary file system (<literal>tmpfs</literal>). Not shared with other hosts (unless
read-only).</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/boot/</filename></term>
<listitem><para>The boot partition used for bringing up the system. On EFI systems, this is possibly
the EFI System Partition (ESP), also see
<citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
This directory is usually strictly local to the host, and should be considered read-only, except when
a new kernel or boot loader is installed. This directory only exists on systems that run on physical
or emulated hardware that requires boot loaders.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/efi/</filename></term>
<listitem><para>If the boot partition <filename>/boot/</filename> is maintained separately from the
EFI System Partition (ESP), the latter is mounted here. Tools that need to operate on the EFI system
partition should look for it at this mount point first, and fall back to <filename>/boot/</filename>
— if the former does not qualify (for example if it is not a mount point or does not have the correct
file system type <constant>MSDOS_SUPER_MAGIC</constant>).</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/etc/</filename></term>
<listitem><para>System-specific configuration. This directory may or may not be
read-only. Frequently, this directory is pre-populated with vendor-supplied configuration files, but
applications should not make assumptions about this directory being fully populated or populated at
all, and should fall back to defaults if configuration is missing.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/home/</filename></term>
<listitem><para>The location for normal user's home directories. Possibly shared with other systems,
and never read-only. This directory should only be used for normal users, never for system
users. This directory and possibly the directories contained within it might only become available or
writable in late boot or even only after user authentication. This directory might be placed on
limited-functionality network file systems, hence applications should not assume the full set of file
API is available on this directory. Applications should generally not reference this directory
directly, but via the per-user <varname>$HOME</varname> environment variable, or via the home
directory field of the user database.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/root/</filename></term>
<listitem><para>The home directory of the root user. The root user's home directory is located
outside of <filename>/home/</filename> in order to make sure the root user may log in even without
<filename>/home/</filename> being available and mounted.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/srv/</filename></term>
<listitem><para>The place to store general server payload, managed by the administrator. No
restrictions are made how this directory is organized internally. Generally writable, and possibly
shared among systems. This directory might become available or writable only very late during
boot.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/tmp/</filename></term>
<listitem><para>The place for small temporary files. This directory is usually mounted as a
<literal>tmpfs</literal> instance, and should hence not be used for larger files. (Use
<filename>/var/tmp/</filename> for larger files.) This directory is usually flushed at boot-up. Also,
files that are not accessed within a certain time may be automatically deleted.</para>
<para>If applications find the environment variable <varname>$TMPDIR</varname> set, they should use
the directory specified in it instead of <filename>/tmp/</filename> (see <citerefentry
project='man-pages'><refentrytitle>environ</refentrytitle><manvolnum>7</manvolnum></citerefentry> and
<ulink url="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03">IEEE
Std 1003.1</ulink> for details).</para>
<para>Since <filename>/tmp/</filename> is accessible to other users of the system, it is essential
that files and subdirectories under this directory are only created with <citerefentry
project='man-pages'><refentrytitle>mkstemp</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry
project='man-pages'><refentrytitle>mkdtemp</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
and similar calls. For more details, see <ulink url="https://systemd.io/TEMPORARY_DIRECTORIES">Using
/tmp/ and /var/tmp/ Safely</ulink>.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Runtime Data</title>
<variablelist>
<varlistentry>
<term><filename>/run/</filename></term>
<listitem><para>A <literal>tmpfs</literal> file system for system packages to place runtime data,
socket files, and similar. This directory is flushed on boot, and generally writable for privileged
programs only. Always writable.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/run/log/</filename></term>
<listitem><para>Runtime system logs. System components may place private logs in this
directory. Always writable, even when <filename>/var/log/</filename> might not be accessible
yet.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/run/user/</filename></term>
<listitem><para>Contains per-user runtime directories, each usually individually mounted
<literal>tmpfs</literal> instances. Always writable, flushed at each reboot and when the user logs
out. User code should not reference this directory directly, but via the
<varname>$XDG_RUNTIME_DIR</varname> environment variable, as documented in the <ulink
url="https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG Base Directory
Specification</ulink>.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Vendor-supplied Operating System Resources</title>
<variablelist>
<varlistentry>
<term><filename>/usr/</filename></term>
<listitem><para>Vendor-supplied operating system resources. Usually read-only, but this is not
required. Possibly shared between multiple hosts. This directory should not be modified by the
administrator, except when installing or removing vendor-supplied packages.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/usr/bin/</filename></term>
<listitem><para>Binaries and executables for user commands that shall appear in the
<varname>$PATH</varname> search path. It is recommended not to place binaries in this directory that
are not useful for invocation from a shell (such as daemon binaries); these should be placed in a
subdirectory of <filename>/usr/lib/</filename> instead.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/usr/lib/</filename></term>
<listitem><para>Static, private vendor data that is compatible with all architectures (though not
necessarily architecture-independent). Note that this includes internal executables or other binaries
that are not regularly invoked from a shell. Such binaries may be for any architecture supported by
the system. Do not place public libraries in this directory, use <varname>$libdir</varname> (see
below), instead.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/usr/lib/<replaceable>arch-id</replaceable>/</filename></term>
<listitem><para>Location for placing dynamic libraries into, also called
<varname>$libdir</varname>. The architecture identifier to use is defined on <ulink
url="https://wiki.debian.org/Multiarch/Tuples">Multiarch Architecture Specifiers (Tuples)</ulink>
list. Legacy locations of <varname>$libdir</varname> are <filename>/usr/lib/</filename>,
<filename>/usr/lib64/</filename>. This directory should not be used for package-specific data, unless
this data is architecture-dependent, too.</para>
<para>To query <varname>$libdir</varname> for the primary architecture of the system, invoke:
<programlisting>systemd-path system-library-arch</programlisting></para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/usr/share/</filename></term>
<listitem><para>Resources shared between multiple packages, such as documentation, man pages, time
zone information, fonts and other resources. Usually, the precise location and format of files stored
below this directory is subject to specifications that ensure interoperability.</para>
<para>Note that resources placed in this directory typically are under shared ownership,
i.e. multiple different packages have provided and consumed these resources, on equal footing, without
any obvious primary owner. This makes things systematically different from
<filename>/usr/lib/</filename>, where ownership is generally not shared.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/usr/share/doc/</filename></term>
<listitem><para>Documentation for the operating system or system packages.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/usr/share/factory/etc/</filename></term>
<listitem><para>Repository for vendor-supplied default configuration files. This directory should be
populated with pristine vendor versions of all configuration files that may be placed in
<filename>/etc/</filename>. This is useful to compare the local configuration of a system with vendor
defaults and to populate the local configuration with defaults.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/usr/share/factory/var/</filename></term>
<listitem><para>Similar to
<filename>/usr/share/factory/etc/</filename>, but for vendor
versions of files in the variable, persistent data directory
<filename>/var/</filename>.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Persistent Variable System Data</title>
<variablelist>
<varlistentry>
<term><filename>/var/</filename></term>
<listitem><para>Persistent, variable system data. Writable during normal system operation. This
directory might be pre-populated with vendor-supplied data, but applications should be able to
reconstruct necessary files and directories in this subhierarchy should they be missing, as the
system might start up without this directory being populated. Persistency is recommended, but
optional, to support ephemeral systems. This directory might become available or writable only very
late during boot. Components that are required to operate during early boot hence shall not
unconditionally rely on this directory.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/var/cache/</filename></term>
<listitem><para>Persistent system cache data. System components may place non-essential data in this
directory. Flushing this directory should have no effect on operation of programs, except for
increased runtimes necessary to rebuild these caches.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/var/lib/</filename></term>
<listitem><para>Persistent system data. System components may place private data in this
directory.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/var/log/</filename></term>
<listitem><para>Persistent system logs. System components may place private logs in this directory,
though it is recommended to do most logging via the <citerefentry
project='man-pages'><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry> and
<citerefentry><refentrytitle>sd_journal_print</refentrytitle><manvolnum>3</manvolnum></citerefentry>
calls.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/var/tmp/</filename></term>
<listitem><para>The place for larger and persistent temporary files. In contrast to
<filename>/tmp/</filename>, this directory is usually mounted from a persistent physical file system
and can thus accept larger files. (Use <filename>/tmp/</filename> for small ephemeral files.) This
directory is generally not flushed at boot-up, but time-based cleanup of files that have not been
accessed for a certain time is applied.</para>
<para>If applications find the environment variable <varname>$TMPDIR</varname> set, they should use
the directory specified in it instead of <filename>/var/tmp/</filename> (see <citerefentry
project='man-pages'><refentrytitle>environ</refentrytitle><manvolnum>7</manvolnum></citerefentry> for
details).</para>
<para>The same security restrictions as with <filename>/tmp/</filename> apply: <citerefentry
project='man-pages'><refentrytitle>mkstemp</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry
project='man-pages'><refentrytitle>mkdtemp</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
and similar calls should be used. For further details about this directory, see <ulink
url="https://systemd.io/TEMPORARY_DIRECTORIES">Using /tmp/ and /var/tmp/
Safely</ulink>.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Virtual Kernel and API File Systems</title>
<variablelist>
<varlistentry>
<term><filename>/dev/</filename></term>
<listitem><para>The root directory for device nodes. Usually, this directory is mounted as a
<literal>devtmpfs</literal> instance, but might be of a different type in sandboxed/containerized
setups. This directory is managed jointly by the kernel and
<citerefentry><refentrytitle>systemd-udevd</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
and should not be written to by other components. A number of special purpose virtual file systems
might be mounted below this directory.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/dev/shm/</filename></term>
<listitem><para>Place for POSIX shared memory segments, as created via <citerefentry
project='die-net'><refentrytitle>shm_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
This directory is flushed on boot, and is a <literal>tmpfs</literal> file system. Since all users
have write access to this directory, special care should be taken to avoid name clashes and
vulnerabilities. For normal users, shared memory segments in this directory are usually deleted when
the user logs out. Usually, it is a better idea to use memory mapped files in
<filename>/run/</filename> (for system programs) or <varname>$XDG_RUNTIME_DIR</varname> (for user
programs) instead of POSIX shared memory segments, since these directories are not world-writable and
hence not vulnerable to security-sensitive name clashes.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/proc/</filename></term>
<listitem><para>A virtual kernel file system exposing the process list and other functionality. This
file system is mostly an API to interface with the kernel and not a place where normal files may be
stored. For details, see <citerefentry
project='man-pages'><refentrytitle>proc</refentrytitle><manvolnum>5</manvolnum></citerefentry>. A
number of special purpose virtual file systems might be mounted below this
directory.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/proc/sys/</filename></term>
<listitem><para>A hierarchy below <filename>/proc/</filename> that exposes a number of kernel
tunables. The primary way to configure the settings in this API file tree is via
<citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
files. In sandboxed/containerized setups, this directory is generally mounted
read-only.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/sys/</filename></term>
<listitem><para>A virtual kernel file system exposing discovered devices and other
functionality. This file system is mostly an API to interface with the kernel and not a place where
normal files may be stored. In sandboxed/containerized setups, this directory is generally mounted
read-only. A number of special purpose virtual file systems might be mounted below this
directory.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/sys/fs/cgroup/</filename></term>
<listitem><para>A virtual kernel file system exposing process control groups (cgroups). This file
system is an API to interface with the kernel and not a place where normal files may be stored. On
current systems running in the default "unified" mode, this directory serves as the mount point for
the <literal>cgroup2</literal> filesystem, which provides a unified cgroup hierarchy for all resource
controllers. On systems with non-default configurations, this directory may instead be a tmpfs
filesystem containing mount points for various <literal>cgroup</literal> (v1) resource controllers;
in such configurations, if <literal>cgroup2</literal> is mounted it will be mounted on
<filename>/sys/fs/cgroup/unified/</filename>, but cgroup2 will not have resource controllers
attached. In sandboxed/containerized setups, this directory may either not exist or may include a
subset of functionality.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Compatibility Symlinks</title>
<variablelist>
<varlistentry>
<term><filename>/bin/</filename></term>
<term><filename>/sbin/</filename></term>
<term><filename>/usr/sbin/</filename></term>
<listitem><para>These compatibility symlinks point to <filename>/usr/bin/</filename>, ensuring that
scripts and binaries referencing these legacy paths correctly find their binaries.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/lib/</filename></term>
<listitem><para>This compatibility symlink points to <filename>/usr/lib/</filename>, ensuring that
programs referencing this legacy path correctly find their resources.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/lib64/</filename></term>
<listitem><para>On some architecture ABIs, this compatibility symlink points to
<varname>$libdir</varname>, ensuring that binaries referencing this legacy path correctly find their
dynamic loader. This symlink only exists on architectures whose ABI places the dynamic loader in this
path.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>/var/run/</filename></term>
<listitem><para>This compatibility symlink points to <filename>/run/</filename>, ensuring that
programs referencing this legacy path correctly find their runtime data.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Home Directory</title>
<para>User applications may want to place files and directories in
the user's home directory. They should follow the following basic
structure. Note that some of these directories are also
standardized (though more weakly) by the <ulink
url="https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
Base Directory Specification</ulink>. Additional locations for
high-level user resources are defined by <ulink
url="https://www.freedesktop.org/wiki/Software/xdg-user-dirs">xdg-user-dirs</ulink>.</para>
<variablelist>
<varlistentry>
<term><filename>~/.cache/</filename></term>
<listitem><para>Persistent user cache data. User programs may place non-essential data in this
directory. Flushing this directory should have no effect on operation of programs, except for
increased runtimes necessary to rebuild these caches. If an application finds
<varname>$XDG_CACHE_HOME</varname> set, it should use the directory specified in it instead of this
directory.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>~/.config/</filename></term>
<listitem><para>Application configuration. When a new user is created, this directory will be empty
or not exist at all. Applications should fall back to defaults should their configuration in this
directory be missing. If an application finds <varname>$XDG_CONFIG_HOME</varname> set, it should use
the directory specified in it instead of this directory.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>~/.local/bin/</filename></term>
<listitem><para>Executables that shall appear in the user's <varname>$PATH</varname> search path. It
is recommended not to place executables in this directory that are not useful for invocation from a
shell; these should be placed in a subdirectory of <filename>~/.local/lib/</filename> instead. Care
should be taken when placing architecture-dependent binaries in this place, which might be
problematic if the home directory is shared between multiple hosts with different
architectures.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>~/.local/lib/</filename></term>
<listitem><para>Static, private vendor data that is compatible with all
architectures.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>~/.local/lib/<replaceable>arch-id</replaceable>/</filename></term>
<listitem><para>Location for placing public dynamic libraries. The architecture identifier to use is
defined on <ulink url="https://wiki.debian.org/Multiarch/Tuples">Multiarch Architecture Specifiers
(Tuples)</ulink> list.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>~/.local/share/</filename></term>
<listitem><para>Resources shared between multiple packages, such as fonts or artwork. Usually, the
precise location and format of files stored below this directory is subject to specifications that
ensure interoperability. If an application finds <varname>$XDG_DATA_HOME</varname> set, it should use
the directory specified in it instead of this directory.</para></listitem>
</varlistentry>
<varlistentry>
<term><filename>~/.local/state/</filename></term>
<listitem><para>Application state. When a new user is created, this directory will be empty or not
exist at all. Applications should fall back to defaults should their state in this directory be
missing. If an application finds <varname>$XDG_STATE_HOME</varname> set, it should use the directory
specified in it instead of this directory.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Write Access</title>
<refsect2>
<title>Unprivileged Write Access</title>
<para>Unprivileged processes generally lack write access to most of the hierarchy.</para>
<para>The exceptions for normal users are
<filename>/tmp/</filename>,
<filename>/var/tmp/</filename>,
<filename>/dev/shm/</filename>, as well as the home directory
<varname>$HOME</varname> (usually found below
<filename>/home/</filename>) and the runtime directory
<varname>$XDG_RUNTIME_DIR</varname> (found below
<filename>/run/user/</filename>) of the user, which are all
writable.</para>
<para>For unprivileged system processes, only
<filename>/tmp/</filename>,
<filename>/var/tmp/</filename> and
<filename>/dev/shm/</filename> are writable. If an
unprivileged system process needs a private writable directory in
<filename>/var/</filename> or <filename>/run/</filename>, it is
recommended to either create it before dropping privileges in the
daemon code, to create it via
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
fragments during boot, or via the
<varname>StateDirectory=</varname> and <varname>RuntimeDirectory=</varname>
directives of service units (see
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for details).</para>
<para><filename>/tmp/</filename>, <filename>/var/tmp/</filename> and <filename>/dev/shm/</filename>
should be mounted <option>nosuid</option> and <option>nodev</option>, which means that set-user-id mode
and character or block special devices are not interpreted on those file systems. In general it is not
possible to mount them <option>noexec</option>, because various programs use those directories for
dynamically generated or optimized code, and with that flag those use cases would break. Using this
flag is OK on special-purpose installations or systems where all software that may be installed is
known and does not require such functionality. See the discussion of
<option>nosuid</option>/<option>nodev</option>/<option>noexec</option> in <citerefentry
project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry> and
<constant>PROT_EXEC</constant> in <citerefentry
project='man-pages'><refentrytitle>mmap</refentrytitle><manvolnum>2</manvolnum></citerefentry>.
</para>
</refsect2>
<refsect2>
<title>Lack of Write Access on Read-Only Systems and during System Recovery</title>
<para>As noted above, some systems operate with the <filename>/usr</filename> and
<filename>/etc</filename> hierarchies mounted read-only, possibly only allowing write access during
package upgrades. Other part of the hierarchy are generally mounted read-write (in particular
<filename>/var</filename> and <filename>/var/tmp</filename>), but may be read-only when the kernel
remounts the file system read-only in response to errors, or when the system is booted read-only for
recovery purposes. To the extent reasonable, applications should be prepared to execute without write
access, so that for example, failure to save non-essential data to <filename>/var/cache/</filename> or
failure to create a custom log file under <filename>/var/log</filename> does not prevent the
application from running.</para>
<para>The <filename>/run/</filename> directory is available since the earliest boot and is always
writable. It should be used for any runtime data and sockets, so that write access to e.g.
<filename>/etc</filename> or <filename>/var</filename> is not needed.</para>
</refsect2>
</refsect1>
<refsect1>
<title>Node Types</title>
<para>Unix file systems support different types of file nodes,
including regular files, directories, symlinks, character and
block device nodes, sockets and FIFOs.</para>
<para>It is strongly recommended that <filename>/dev/</filename> is
the only location below which device nodes shall be placed.
Similarly, <filename>/run/</filename> shall be the only location to
place sockets and FIFOs. Regular files, directories and symlinks
may be used in all directories.</para>
<para>Applications should expect that a security policy might be enforced on a system that enforces these
rules.</para>
</refsect1>
<refsect1>
<title>System Packages</title>
<para>Developers of system packages should follow strict rules when placing their files in the file
system. The following table lists recommended locations for specific types of files supplied by the
vendor.</para>
<table>
<title>System package vendor files locations</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname="directory" />
<colspec colname="purpose" />
<thead>
<row>
<entry>Directory</entry>
<entry>Purpose</entry>
</row>
</thead>
<tbody>
<row>
<entry><filename>/usr/bin/</filename></entry>
<entry>Package executables that shall appear in the <varname>$PATH</varname> executable search path, compiled for any of the supported architectures compatible with the operating system. It is not recommended to place internal binaries or binaries that are not commonly invoked from the shell in this directory, such as daemon binaries. As this directory is shared with most other packages of the system, special care should be taken to pick unique names for files placed here, that are unlikely to clash with other package's files.</entry>
</row>
<row>
<entry><filename>/usr/lib/<replaceable>arch-id</replaceable>/</filename></entry>
<entry>Public shared libraries of the package. As above, be careful with using too generic names, and pick unique names for your libraries to place here to avoid name clashes.</entry>
</row>
<row>
<entry><filename>/usr/lib/<replaceable>package</replaceable>/</filename></entry>
<entry>Private static vendor resources of the package, including private binaries and libraries, or any other kind of read-only vendor data.</entry>
</row>
<row>
<entry><filename>/usr/lib/<replaceable>arch-id</replaceable>/<replaceable>package</replaceable>/</filename></entry>
<entry>Private other vendor resources of the package that are architecture-specific and cannot be shared between architectures. Note that this generally does not include private executables since binaries of a specific architecture may be freely invoked from any other supported system architecture.</entry>
</row>
</tbody>
</tgroup>
</table>
<para>Additional static vendor files with shared ownership may be installed in the
<filename>/usr/share/</filename> hierarchy to the locations defined by the various relevant
specifications.</para>
<para>The following directories shall be used by the package for local configuration and files created
during runtime:</para>
<table>
<title>System package variable files locations</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname="directory" />
<colspec colname="purpose" />
<thead>
<row>
<entry>Directory</entry>
<entry>Purpose</entry>
</row>
</thead>
<tbody>
<row>
<entry><filename>/etc/<replaceable>package</replaceable>/</filename></entry>
<entry>System-specific configuration for the package. It is recommended to default to safe fallbacks if this configuration is missing, if this is possible. Alternatively, a <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> fragment may be used to copy or symlink the necessary files and directories from <filename>/usr/share/factory/</filename> during boot, via the <literal>L</literal> or <literal>C</literal> directives.</entry>
</row>
<row>
<entry><filename>/run/<replaceable>package</replaceable>/</filename></entry>
<entry>Runtime data for the package. Packages must be able to create the necessary subdirectories in this tree on their own, since the directory is flushed automatically on boot. Alternatively, a <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> fragment may be used to create the necessary directories during boot, or the <varname>RuntimeDirectory=</varname> directive of service units may be used to create them at service startup (see <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details).</entry>
</row>
<row>
<entry><filename>/run/log/<replaceable>package</replaceable>/</filename></entry>
<entry>Runtime log data for the package. As above, the package needs to make sure to create this directory if necessary, as it will be flushed on every boot.</entry>
</row>
<row>
<entry><filename>/var/cache/<replaceable>package</replaceable>/</filename></entry>
<entry>Persistent cache data of the package. If this directory is flushed, the application should work correctly on next invocation, though possibly slowed down due to the need to rebuild any local cache files. The application must be capable of recreating this directory should it be missing and necessary. To create an empty directory, a <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> fragment or the <varname>CacheDirectory=</varname> directive of service units (see <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>) may be used.</entry>
</row>
<row>
<entry><filename>/var/lib/<replaceable>package</replaceable>/</filename></entry>
<entry>Persistent private data of the package. This is the primary place to put persistent data that does not fall into the other categories listed. Packages should be able to create the necessary subdirectories in this tree on their own, since the directory might be missing on boot. To create an empty directory, a <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> fragment or the <varname>StateDirectory=</varname> directive of service units (see <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>) may be used.</entry>
</row>
<row>
<entry><filename>/var/log/<replaceable>package</replaceable>/</filename></entry>
<entry>Persistent log data of the package. As above, the package should make sure to create this directory if necessary, possibly using <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> or <varname>LogsDirectory=</varname> (see <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>), as it might be missing.</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
<refsect1>
<title>User Packages</title>
<para>Programs running in user context should follow strict rules when placing their own files in the
user's home directory. The following table lists recommended locations in the home directory for specific
types of files supplied by the vendor if the application is installed in the home directory. (User
applications installed system-wide are covered by the rules outlined above for vendor files.)</para>
<table>
<title>Vendor package file locations under the home directory of the user</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname="directory" />
<colspec colname="purpose" />
<thead>
<row>
<entry>Directory</entry>
<entry>Purpose</entry>
</row>
</thead>
<tbody>
<row>
<entry><filename>~/.local/bin/</filename></entry>
<entry>Package executables that shall appear in the <varname>$PATH</varname> executable search path. It is not recommended to place internal executables or executables that are not commonly invoked from the shell in this directory, such as daemon executables. As this directory is shared with most other packages of the user, special care should be taken to pick unique names for files placed here, that are unlikely to clash with other package's files.</entry>
</row>
<row>
<entry><filename>~/.local/lib/<replaceable>arch-id</replaceable>/</filename></entry>
<entry>Public shared libraries of the package. As above, be careful with using overly generic names, and pick unique names for your libraries to place here to avoid name clashes.</entry>
</row>
<row>
<entry><filename>~/.local/lib/<replaceable>package</replaceable>/</filename></entry>
<entry>Private, static vendor resources of the package, compatible with any architecture, or any other kind of read-only vendor data.</entry>
</row>
<row>
<entry><filename>~/.local/lib/<replaceable>arch-id</replaceable>/<replaceable>package</replaceable>/</filename></entry>
<entry>Private other vendor resources of the package that are architecture-specific and cannot be shared between architectures.</entry>
</row>
</tbody>
</tgroup>
</table>
<para>Additional static vendor files with shared ownership may be installed in the
<filename>~/.local/share/</filename> hierarchy, mirroring the subdirectories specified in the section
"Vendor-supplied operating system resources" above.</para>
<para>The following directories shall be used by the package for per-user local configuration and files
created during runtime:</para>
<table>
<title>User package variable file locations</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname="directory" />
<colspec colname="purpose" />
<thead>
<row>
<entry>Directory</entry>
<entry>Purpose</entry>
</row>
</thead>
<tbody>
<row>
<entry><filename>~/.config/<replaceable>package</replaceable>/</filename></entry>
<entry>User-specific configuration for the package. It is required to default to safe fallbacks if this configuration is missing.</entry>
</row>
<row>
<entry><filename><varname>$XDG_RUNTIME_DIR</varname>/<replaceable>package</replaceable>/</filename></entry>
<entry>User runtime data for the package.</entry>
</row>
<row>
<entry><filename>~/.cache/<replaceable>package</replaceable>/</filename></entry>
<entry>Persistent cache data of the package. If this directory is flushed, the application should work correctly on next invocation, though possibly slowed down due to the need to rebuild any local cache files. The application must be capable of recreating this directory should it be missing and necessary.</entry>
</row>
<row>
<entry><filename>~/.local/state/<replaceable>package</replaceable>/</filename></entry>
<entry>Persistent state data of the package.</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
<refsect1>
<title>See Also</title>
<para><simplelist type="inline">
<member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<para><simplelist>
<member><citerefentry project='man-pages'><refentrytitle>hier</refentrytitle><manvolnum>7</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-path</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry></member>
<member><citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry></member>
<member><ulink url="http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html">File System Hierarchy</ulink></member>
<member><ulink url="https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG Base Directory Specification</ulink></member>
<member><ulink url="https://www.freedesktop.org/wiki/Software/xdg-user-dirs">XDG User Directories</ulink></member>
</simplelist></para>
</refsect1>

View file

@ -179,6 +179,16 @@
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
</varlistentry>
<varlistentry>
<term><option>--prompt-new-user</option></term>
<listitem><para>If used in conjunction with <command>firstboot</command> and no regular user account
exists on the system so far the tool will interactively query for user information and create an
account.</para>
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
</varlistentry>
<xi:include href="user-system-options.xml" xpointer="host" />
<xi:include href="user-system-options.xml" xpointer="machine" />
@ -1212,9 +1222,10 @@
<listitem><para>This command is supposed to be invoked during the initial boot of the system. It
checks whether any regular home area exists so far, and if not queries the user interactively on the
console for user name and password and creates one. Alternatively, if one or more service credentials
whose name starts with <literal>home.create.</literal> are passed to the command (containing a user
record in JSON format) these users are automatically created at boot.</para>
console for user name and password and creates one (only if <option>--prompt-new-user</option> is
specified). Alternatively, if one or more service credentials whose name starts with
<literal>home.create.</literal> are passed to the command (containing a user record in JSON format)
these users are automatically created at boot.</para>
<para>This command is invoked by the <filename>systemd-homed-firstboot.service</filename> service
unit.</para>

View file

@ -38,10 +38,12 @@
<para>The file should contain a single newline-terminated hostname string. Comments (lines starting with
a <literal>#</literal>) are ignored. The hostname should be composed of up to 64 7-bit ASCII lower-case
alphanumeric characters or hyphens forming a valid DNS domain name. It is recommended that this name
contains only a single label, i.e. without any dots. Invalid characters will be filtered out in an
attempt to make the name valid, but obviously it is recommended to use a valid name and not rely on this
filtering.</para>
alphanumeric characters or hyphens forming a valid DNS domain name. It is strongly recommended that this
name contains only a single DNS label, i.e does not contain any dots. This recommendation reflects both
usual expectations of applications, and the fact that the Linux kernel limits the length of the system
hostname to 64 (i.e. close to the maximum DNS label length of 63) rather than 255 (the maximum DNS domain
name length). When applied, invalid characters will be filtered out in an attempt to make the name valid,
but obviously it is recommended to use a valid name and not rely on this filtering.</para>
<para>You may use
<citerefentry><refentrytitle>hostnamectl</refentrytitle><manvolnum>1</manvolnum></citerefentry> to change

View file

@ -99,7 +99,7 @@
icon name to <replaceable>NAME</replaceable>. The icon name is used by some
graphical applications to visualize this host. The icon name
should follow the <ulink
url="https://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html">Icon
url="https://specifications.freedesktop.org/icon-naming/latest">Icon
Naming Specification</ulink>.</para>
<xi:include href="version-info.xml" xpointer="v249"/></listitem>

View file

@ -1,5 +1,6 @@
#!/bin/sh
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
if [ -z "$1" ]; then
@ -8,21 +9,21 @@ if [ -z "$1" ]; then
fi
# make sure the rules have been regenerated (in case update-man-rules was just run)
ninja -C "@BUILD_ROOT@" version.h
ninja -C @BUILD_ROOT@ version.h
target="man/$1.html"
ninja -C "@BUILD_ROOT@" "$target"
ninja -C @BUILD_ROOT@ "$target"
fullname="@BUILD_ROOT@/$target"
fullname=@BUILD_ROOT@/"$target"
if [ -f "$fullname" ]; then
redirect="$(readlink "$fullname" || :)"
else
redirect=""
fi
if [ -n "$redirect" ]; then
ninja -C "@BUILD_ROOT@" "man/$redirect"
ninja -C @BUILD_ROOT@ "man/$redirect"
fullname="@BUILD_ROOT@/man/$redirect"
fullname=@BUILD_ROOT@"/man/$redirect"
fi
set -x

View file

@ -335,7 +335,7 @@
<term><option>--machine=</option></term>
<listitem><para>Connect to
<citerefentry><refentrytitle>systemd-import.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
<citerefentry><refentrytitle>systemd-importd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
running in a local container, to perform the specified operation within the container.</para>
<xi:include href="version-info.xml" xpointer="v256"/></listitem>

View file

@ -737,8 +737,8 @@
<varlistentry>
<term><option>--no-hostname</option></term>
<listitem><para>Do not show the hostname field of log messages originating from the local host. This
switch has an effect only on the <option>short</option> family of output modes (see above).</para>
<listitem><para>Do not show the hostname field of log messages. This switch has an effect only on the
<option>short</option> family of output modes (see above).</para>
<para>Note: this option does not remove occurrences of the hostname from log entries themselves, so
it does not prevent the hostname from being visible in the logs.</para>

View file

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

View file

@ -62,7 +62,8 @@
<citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-json</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>
<citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-path</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
and
<citerefentry><refentrytitle>sd-varlink</refentrytitle><manvolnum>3</manvolnum></citerefentry>
for information about different parts of the library interface.</para>

View file

@ -21,53 +21,57 @@
</refnamediv>
<refsynopsisdiv>
<para><filename><replaceable>ESP</replaceable>/loader/loader.conf</filename>,
<filename><replaceable>ESP</replaceable>/loader/entries/*.conf</filename>
<filename><replaceable>XBOOTLDR</replaceable>/loader/entries/*.conf</filename>
</para>
<para><filename><replaceable>ESP</replaceable>/loader/loader.conf</filename></para>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
<citerefentry><refentrytitle>systemd-boot</refentrytitle><manvolnum>7</manvolnum></citerefentry> will
read <filename><replaceable>ESP</replaceable>/loader/loader.conf</filename>, and any files with the
<literal>.conf</literal> extension under
<filename><replaceable>ESP</replaceable>/loader/entries/</filename> on the EFI system partition (ESP),
and <filename><replaceable>XBOOTLDR</replaceable>/loader/entries/</filename> on the extended boot loader
partition (XBOOTLDR) as defined by <ulink url="https://uapi-group.org/specifications/specs/boot_loader_specification">Boot Loader
Specification</ulink>.
</para>
<citerefentry><refentrytitle>systemd-boot</refentrytitle><manvolnum>7</manvolnum></citerefentry> reads
<filename><replaceable>ESP</replaceable>/loader/loader.conf</filename>. This file configures whether the
menu is shown and for how long, the font, audible beep, types of menu entries to show, the default
choice, and some aspects of Secure Boot enrollment and firmware handling. See the list of available
options below.</para>
<para>Each of these configuration files must consist of series of newline (i.e. ASCII code 10) separated
lines, each consisting of an option name, followed by whitespace, and the option
value. <literal>#</literal> may be used to start a comment line. Empty and comment lines are ignored. The
files use UTF-8 encoding.</para>
<para>The file uses UTF-8 encoding and consists of series of lines separated by "line feed" (i.e. ASCII
code 10). Lines that are empty or start with the comment sign (<literal>#</literal>) are ignored. Other
lines consist of an option name, followed by whitespace, and the option value.
</para>
<para>Boolean arguments may be written as
<literal>yes</literal>/<literal>y</literal>/<literal>true</literal>/<literal>t</literal>/<literal>on</literal>/<literal>1</literal> or
<literal>yes</literal>/<literal>y</literal>/<literal>true</literal>/<literal>t</literal>/<literal>on</literal>/<literal>1</literal>
or
<literal>no</literal>/<literal>n</literal>/<literal>false</literal>/<literal>f</literal>/<literal>off</literal>/<literal>0</literal>.
</para>
<para>Note: <command>systemd-boot</command> will also read boot loader entry files,
type #1 (<filename><replaceable>ESP</replaceable>/loader/entries/*.conf</filename> and
<filename><replaceable>XBOOTLDR</replaceable>/loader/entries/*.conf</filename>)
and type #2 (<filename><replaceable>ESP</replaceable>/EFI/Linux/*.uki</filename>
and <filename><replaceable>XBOOTLDR</replaceable>/EFI/Linux/*.uki</filename>).
Those files are described by the
<ulink url="https://uapi-group.org/specifications/specs/boot_loader_specification">Boot Loader
Specification</ulink>.</para>
<para>Note: the behaviour of <command>systemd-boot</command> is also influenced by EFI variables. Some of
the settings specified in this file can be overridden by those, for example the default boot menu entry
or the menu timeouts. See
<citerefentry><refentrytitle>systemd-boot</refentrytitle><manvolnum>7</manvolnum></citerefentry> for
details.</para>
</refsect1>
<refsect1>
<title>Options</title>
<para>The configuration options supported by
<filename><replaceable>ESP</replaceable>/loader/entries/*.conf</filename> and
<filename><replaceable>XBOOTLDR</replaceable>/loader/entries/*.conf</filename> files are defined as part
of the <ulink url="https://uapi-group.org/specifications/specs/boot_loader_specification">Boot Loader
Specification</ulink>.</para>
<para>The following configuration are supported by the <filename>loader.conf</filename> configuration
file:</para>
<para>The following configuration are supported in <filename>loader.conf</filename>:</para>
<variablelist>
<varlistentry>
<term>default</term>
<listitem><para>A glob pattern to select the default entry. The default entry
<listitem><para>A glob pattern to select the default entry by id, which is the
file name including literal suffix <literal>.conf</literal>. The default entry
may be changed in the boot menu itself, in which case the name of the
selected entry will be stored as an EFI variable, overriding this option.
</para>
@ -251,11 +255,32 @@
<xi:include href="version-info.xml" xpointer="v239"/></listitem>
</varlistentry>
<varlistentry>
<term>auto-reboot</term>
<listitem><para>A boolean controlling the presence of the <literal>Reboot The System</literal>
entry (disabled by default). Even if this is disabled, the system may still be rebooted by pressing
<keycombo><keycap>Shift</keycap><keycap>b</keycap></keycombo>.</para>
<xi:include href="version-info.xml" xpointer="v255"/></listitem>
</varlistentry>
<varlistentry>
<term>auto-poweroff</term>
<listitem><para>A boolean controlling the presence of the <literal>Power Off The System</literal>
entry (disabled by default). Even if this is disabled, the system may still be powered off by
pressing <keycombo><keycap>Shift</keycap><keycap>o</keycap></keycombo>.</para>
<xi:include href="version-info.xml" xpointer="v255"/></listitem>
</varlistentry>
<varlistentry>
<term>beep</term>
<listitem><para>Takes a boolean argument. If timeout enabled beep every second, otherwise beep n times when n-th entry in boot menu is selected (default disabled).
Currently, only x86 is supported, where it uses the PC speaker.</para>
<listitem><para>Takes a boolean argument. If timeout enabled beep every second, otherwise beep n
times when n-th entry in boot menu is selected (default disabled). Currently, only x86 is supported,
where it uses the PC speaker.</para>
<xi:include href="version-info.xml" xpointer="v251"/></listitem>
</varlistentry>
@ -379,8 +404,8 @@ sbvarsign --attr "${attr}" --key KEK.key --cert KEK.pem --output db.auth db db.e
<listitem><para>Caveat: This feature is experimental, and is likely to be changed (or removed in its
current form) in a future version of systemd.</para>
<para>Work around BitLocker requiring a recovery key when the boot loader was
updated (disabled by default).</para>
<para>Work around BitLocker requiring a recovery key when the boot loader was updated (disabled by
default).</para>
<para>Try to detect BitLocker encrypted drives along with an active TPM. If both are found and
Windows Boot Manager is selected in the boot menu, set the <literal>BootNext</literal> EFI variable

View file

@ -9,22 +9,22 @@ if [ -z "$1" ]; then
fi
# make sure the rules have been regenerated (in case update-man-rules was just run)
ninja -C "@BUILD_ROOT@" version.h
ninja -C @BUILD_ROOT@ version.h
page="$(echo "$1" | sed 's/\./\\./')"
target=$(ninja -C "@BUILD_ROOT@" -t query man/man | grep -E -m1 "man/$page\.[0-9]$" | awk '{print $2}')
target=$(ninja -C @BUILD_ROOT@ -t query man/man | grep -E -m1 "man/$page\.[0-9]$" | awk '{print $2}')
if [ -z "$target" ]; then
echo "Cannot find page $1"
exit 1
fi
ninja -C "@BUILD_ROOT@" "$target"
ninja -C @BUILD_ROOT@ "$target"
fullname="@BUILD_ROOT@/$target"
fullname=@BUILD_ROOT@/"$target"
redirect="$(sed -n -r '1 s|^\.so man[0-9]/(.*)|\1|p' "$fullname")"
if [ -n "$redirect" ]; then
ninja -C "@BUILD_ROOT@" "man/$redirect"
ninja -C @BUILD_ROOT@ "man/$redirect"
fullname="@BUILD_ROOT@/man/$redirect"
fullname=@BUILD_ROOT@"/man/$redirect"
fi
exec man "$fullname"

View file

@ -29,7 +29,6 @@ custom_html_xsl = files('custom-html.xsl')
xslt_cmd = [xsltproc, '-o', '@OUTPUT0@'] + xsltproc_flags
custom_entities_ent = custom_target(
'custom-entities.ent',
input : 'custom-entities.ent.in',
output : 'custom-entities.ent',
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'])
@ -76,7 +75,6 @@ foreach tuple : manpages
if xsltproc.found()
p1 = custom_target(
man,
input : xml,
output : [man] + manaliases,
command : xslt_cmd + [custom_man_xsl, '@INPUT@'],
@ -88,7 +86,6 @@ foreach tuple : manpages
p2 = []
foreach htmlalias : htmlaliases
link = custom_target(
htmlalias,
output : htmlalias,
command : [ln, '-fs', html, '@OUTPUT@'])
if want_html
@ -99,7 +96,6 @@ foreach tuple : manpages
endforeach
p3 = custom_target(
html,
input : xml,
output : html,
command : xslt_cmd + [custom_html_xsl, '@INPUT@'],
@ -121,7 +117,6 @@ if not have_lxml
endif
systemd_directives_xml = custom_target(
'systemd.directives.xml',
input : ['directives-template.xml', source_xml_files],
output : 'systemd.directives.xml',
depends : man_page_depends,
@ -129,7 +124,6 @@ systemd_directives_xml = custom_target(
nonindex_xml_files = source_xml_files + [systemd_directives_xml]
systemd_index_xml = custom_target(
'systemd.index.xml',
input : nonindex_xml_files,
output : 'systemd.index.xml',
command : [make_man_index_py, '@OUTPUT@'] + nonindex_xml_files)
@ -146,7 +140,6 @@ foreach tuple : xsltproc.found() ? [['systemd.directives', '7', systemd_directiv
mandirn = get_option('mandir') / ('man' + section)
p1 = custom_target(
man,
input : xml,
output : man,
command : xslt_cmd + [custom_man_xsl, '@INPUT@'],
@ -158,7 +151,6 @@ foreach tuple : xsltproc.found() ? [['systemd.directives', '7', systemd_directiv
if html == 'systemd.index.html'
htmlalias = 'index.html'
link = custom_target(
htmlalias,
input : p2,
output : htmlalias,
command : [ln, '-fs', html, '@OUTPUT@'])
@ -170,7 +162,6 @@ foreach tuple : xsltproc.found() ? [['systemd.directives', '7', systemd_directiv
endif
p3 = custom_target(
html,
input : xml,
output : html,
command : xslt_cmd + [custom_html_xsl, '@INPUT@'],
@ -183,13 +174,11 @@ endforeach
# Cannot use run_target because those targets are used in depends
# Also see https://github.com/mesonbuild/meson/issues/368.
man = custom_target(
'man',
output : 'man',
depends : man_pages,
command : [echo])
html = custom_target(
'html',
output : 'html',
depends : html_pages,
command : [echo])

View file

@ -341,7 +341,8 @@ node /org/freedesktop/machine1 {
be either <literal>container</literal> or <literal>vm</literal> indicating whether the machine to
register is of the respective class. The leader PID should be the host PID of the init process of the
container or the encapsulating process of the VM. If the root directory of the container is known and
available in the host's hierarchy, it should be passed. Otherwise, pass the empty string instead. Finally, the
available in the host's hierarchy, it should be passed (note that this is for informational purposes
only, and will not be used otherwise). Otherwise, pass the empty string instead. Finally, the
scope properties are passed as array in the same way as to PID1's
<function>StartTransientUnit()</function> method. Calling this method will internally register a transient scope
unit for the calling client (utilizing the passed scope_properties) and move the leader PID into

View file

@ -285,7 +285,7 @@ node /org/freedesktop/resolve1 {
(no IDNA conversion is applied), followed by the 16-bit class and type fields (which may be
ANY). Finally, a <varname>flags</varname> field may be passed in to alter behaviour of the look-up (see
below). On completion, an array of RR items is returned. Each array entry consists of the network interface
index the RR was discovered on, the type and class field of the RR found, and a byte array of the raw
index the RR was discovered on, the class and type field of the RR found, and a byte array of the raw
RR discovered. The raw RR data starts with the RR's domain name, in the original casing, followed
by the RR type, class, TTL and RDATA, in the binary format documented in
<ulink url="https://www.ietf.org/rfc/rfc1035.txt">RFC 1035</ulink>. For RRs that support name

View file

@ -2552,9 +2552,9 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
<para><varname>SubState</varname> encodes states of the same state machine that
<varname>ActiveState</varname> covers, but knows more fine-grained states that are
unit-type-specific. Where <varname>ActiveState</varname> only covers six high-level states,
unit-type-specific. Where <varname>ActiveState</varname> only covers eight high-level states,
<varname>SubState</varname> covers possibly many more low-level unit-type-specific states that are
mapped to the six high-level states. Note that multiple low-level states might map to the same
mapped to the eight high-level states. Note that multiple low-level states might map to the same
high-level state, but not vice versa. Not all high-level states have low-level counterparts on all unit
types. At this point the low-level states are not documented here, and are more likely to be extended
later on than the common high-level states explained above.</para>
@ -4799,7 +4799,7 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
has no main PID. The control PID is the PID of the current start/stop/reload process running and is 0
if no such process is currently running. That means that <varname>ExecMainPID</varname> and
<varname>MainPID</varname> differ in the way that the latter immediately reflects whether a main
process is currently running while the latter possible contains information collected from the last run
process is currently running while the former possibly contains information collected from the last run
even if the process is no longer around.</para>
<para><varname>StatusText</varname>, <varname>StatusErrno</varname>, <varname>StatusBusError</varname>,

View file

@ -196,8 +196,8 @@ $ gdbus introspect --system \
<title>See Also</title>
<para><simplelist type="inline">
<member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-timedate.service</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>timedatectl.service</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-timedated.service</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>timedatectl</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><ulink url="https://lists.freedesktop.org/archives/systemd-devel/2011-May/002526.html">More information on how the system clock and RTC interact</ulink></member>
</simplelist></para>
</refsect1>

View file

@ -157,7 +157,7 @@ $ gdbus introspect --system \
<title>See Also</title>
<para><simplelist type="inline">
<member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-timesync.service</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
<member><citerefentry><refentrytitle>systemd-timesyncd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry></member>
</simplelist></para>
</refsect1>
</refentry>

View file

@ -108,8 +108,9 @@
follows the syntax and rules as described in the <ulink
url="https://systemd.io/PORTABLE_SERVICES">Portable Services</ulink> page. The purpose of this
file is to identify the extension and to allow the operating system to verify that the extension image
matches the base OS. This is typically implemented by checking that the <varname>ID=</varname> options
match, and either <varname>SYSEXT_LEVEL=</varname> exists and matches too, or if it is not present,
matches the base OS. This is typically implemented by checking that the extension <varname>ID=</varname>
option either matches the host <varname>ID=</varname> option or is included the host <varname>ID_LIKE=</varname>
option, and either <varname>SYSEXT_LEVEL=</varname> exists and matches too, or if it is not present,
<varname>VERSION_ID=</varname> exists and matches. This ensures ABI/API compatibility between the
layers and prevents merging of an incompatible image in an overlay.</para>
@ -639,7 +640,7 @@
set.</para>
<para>Operating system vendors may extend the file format and introduce new fields. It is highly
recommended to prefix new fields with an OS specific name in order to avoid name clashes. Applications
recommended to prefix new fields with an OS-specific name in order to avoid name clashes. Applications
reading this file must ignore unknown fields.</para>
<para>Example: <literal>DEBIAN_BTS="debbugs://bugs.debian.org/"</literal>.</para>

View file

@ -593,7 +593,7 @@
<citerefentry project="url"><refentrytitle url="https://btrfs.readthedocs.io/en/latest/btrfs.html">btrfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
<para>Note that this option is only supported in combination with <option>--offline=yes</option>
since <filename>btrfs-progs</filename> 6.11 or newer.</para>
since <filename>btrfs-progs</filename> 6.12 or newer.</para>
<xi:include href="version-info.xml" xpointer="v255"/></listitem>
</varlistentry>
@ -610,7 +610,7 @@
</para>
<para>Note that this option is only supported in combination with <option>--offline=yes</option>
since <filename>btrfs-progs</filename> 6.11 or newer.</para>
since <filename>btrfs-progs</filename> 6.12 or newer.</para>
<xi:include href="version-info.xml" xpointer="v256"/></listitem>
</varlistentry>
@ -807,8 +807,10 @@
partition should be mounted. The second field specifies extra mount options to append to the default
mount options. These fields correspond to the second and fourth column of the
<citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
format. This setting may be specified multiple times to mount the partition multiple times. This can
be used to add mounts for different
format. As a colon is used for separating fields, each field needs to be quoted when it contains
colons. E.g. <programlisting>MountPoint="/path/with:colon":"zstd:1,noatime,lazytime"</programlisting>
This setting may be specified multiple times to mount the partition multiple times. This can be used
to add mounts for different
<citerefentry project="url"><refentrytitle url="https://btrfs.readthedocs.io/en/latest/btrfs.html">btrfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
subvolumes located on the same btrfs partition.</para>

View file

@ -155,6 +155,7 @@ manpages = [
['sd-journal', '3', [], ''],
['sd-json', '3', [], ''],
['sd-login', '3', [], 'HAVE_PAM'],
['sd-path', '3', [], ''],
['sd-varlink', '3', [], ''],
['sd_booted', '3', [], ''],
['sd_bus_add_match',

View file

@ -75,13 +75,14 @@
<refsect1>
<title>Thread safety</title>
<para>Functions that operate on <structname>sd_journal</structname> objects are thread agnostic — given
<structname>sd_journal</structname> pointer may only be used from one specific thread at all times (and it has to
be the very same one during the entire lifetime of the object), but multiple, independent threads may use multiple,
independent objects safely. Other functions — those that are used to send entries to the journal, like
<citerefentry><refentrytitle>sd_journal_print</refentrytitle><manvolnum>3</manvolnum></citerefentry> and similar,
or those that are used to retrieve global information like
<citerefentry><refentrytitle>sd_journal_stream_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry> and
<para>Functions that operate on <structname>sd_journal</structname> objects are thread agnostic — a given
<structname>sd_journal</structname> pointer may only be used from one thread at a time, but multiple
independent threads may use multiple objects concurrently. Some functions — those that are used to send
entries to the journal, like
<citerefentry><refentrytitle>sd_journal_print</refentrytitle><manvolnum>3</manvolnum></citerefentry> and
similar, or those that are used to retrieve global information like
<citerefentry><refentrytitle>sd_journal_stream_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry>
and
<citerefentry><refentrytitle>sd_journal_get_catalog_for_message_id</refentrytitle><manvolnum>3</manvolnum></citerefentry>
— are fully thread-safe and may be called from multiple threads in parallel.</para>
</refsect1>

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