# SPDX-License-Identifier: LGPL-2.1-or-later

# Message catalog for systemd's own messages

# The catalog format is documented on
# https://www.freedesktop.org/wiki/Software/systemd/catalog

# For an explanation why we do all this, see https://xkcd.com/1024/

-- f77379a8490b408bbe5f6940505a777b
Subject: The journal has been started
Defined-By: systemd
Support: %SUPPORT_URL%

The system journal process has started up, opened the journal
files for writing and is now ready to process requests.

-- d93fb3c9c24d451a97cea615ce59c00b
Subject: The journal has been stopped
Defined-By: systemd
Support: %SUPPORT_URL%

The system journal process has shut down and closed all currently
active journal files.

-- ec387f577b844b8fa948f33cad9a75e6
Subject: Disk space used by the journal
Defined-By: systemd
Support: %SUPPORT_URL%

@JOURNAL_NAME@ (@JOURNAL_PATH@) is currently using @CURRENT_USE_PRETTY@.
Maximum allowed usage is set to @MAX_USE_PRETTY@.
Leaving at least @DISK_KEEP_FREE_PRETTY@ free (of currently available @DISK_AVAILABLE_PRETTY@ of disk space).
Enforced usage limit is thus @LIMIT_PRETTY@, of which @AVAILABLE_PRETTY@ are still available.

The limits controlling how much disk space is used by the journal may
be configured with SystemMaxUse=, SystemKeepFree=, SystemMaxFileSize=,
RuntimeMaxUse=, RuntimeKeepFree=, RuntimeMaxFileSize= settings in
/etc/systemd/journald.conf. See journald.conf(5) for details.

-- a596d6fe7bfa4994828e72309e95d61e
Subject: Messages from a service have been suppressed
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: man:journald.conf(5)

A service has logged too many messages within a time period. Messages
from the service have been dropped.

Note that only messages from the service in question have been
dropped, other services' messages are unaffected.

The limits controlling when messages are dropped may be configured
with RateLimitIntervalSec= and RateLimitBurst= in
/etc/systemd/journald.conf or LogRateLimitIntervalSec= and LogRateLimitBurst=
in the unit file. See journald.conf(5) and systemd.exec(5) for details.

-- e9bf28e6e834481bb6f48f548ad13606
Subject: Journal messages have been missed
Defined-By: systemd
Support: %SUPPORT_URL%

Kernel messages have been lost as the journal system has been unable
to process them quickly enough.

-- fc2e22bc6ee647b6b90729ab34a250b1
Subject: Process @COREDUMP_PID@ (@COREDUMP_COMM@) dumped core
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: man:core(5)

Process @COREDUMP_PID@ (@COREDUMP_COMM@) crashed and dumped core.

This usually indicates a programming error in the crashing program and
should be reported to its vendor as a bug.

-- 5aadd8e954dc4b1a8c954d63fd9e1137
Subject: Core file was truncated to @SIZE_LIMIT@ bytes.
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: man:coredump.conf(5)

The process had more memory mapped than the configured maximum for processing
and storage by systemd-coredump(8). Only the first @SIZE_LIMIT@ bytes were
saved. This core might still be usable, but various tools like gdb(1) will warn
about the file being truncated.

-- 8d45620c1a4348dbb17410da57c60c66
Subject: A new session @SESSION_ID@ has been created for user @USER_ID@
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: sd-login(3)

A new session with the ID @SESSION_ID@ has been created for the user @USER_ID@.

The leading process of the session is @LEADER@.

-- 3354939424b4456d9802ca8333ed424a
Subject: Session @SESSION_ID@ has been terminated
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: sd-login(3)

A session with the ID @SESSION_ID@ has been terminated.

-- fcbefc5da23d428093f97c82a9290f7b
Subject: A new seat @SEAT_ID@ is now available
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: sd-login(3)

A new seat @SEAT_ID@ has been configured and is now available.

-- e7852bfe46784ed0accde04bc864c2d5
Subject: Seat @SEAT_ID@ has now been removed
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: sd-login(3)

A seat @SEAT_ID@ has been removed and is no longer available.

-- c7a787079b354eaaa9e77b371893cd27
Subject: Time change
Defined-By: systemd
Support: %SUPPORT_URL%

The system clock has been changed to @REALTIME@ microseconds after January 1st, 1970.

-- c7a787079b354eaaa9e77b371893cd27 de
Subject: Zeitänderung
Defined-By: systemd
Support: %SUPPORT_URL%

Die System-Zeit wurde geändert auf @REALTIME@ Mikrosekunden nach dem 1. Januar 1970.

-- 45f82f4aef7a4bbf942ce861d1f20990
Subject: Time zone change to @TIMEZONE@
Defined-By: systemd
Support: %SUPPORT_URL%

The system timezone has been changed to @TIMEZONE@.

-- b07a249cd024414a82dd00cd181378ff
Subject: System start-up is now complete
Defined-By: systemd
Support: %SUPPORT_URL%

All system services necessary queued for starting at boot have been
started. Note that this does not mean that the machine is now idle as services
might still be busy with completing start-up.

Kernel start-up required @KERNEL_USEC@ microseconds.

Initial RAM disk start-up required @INITRD_USEC@ microseconds.

Userspace start-up required @USERSPACE_USEC@ microseconds.

-- eed00a68ffd84e31882105fd973abdd1
Subject: User manager start-up is now complete
Defined-By: systemd
Support: %SUPPORT_URL%

The user manager instance for user @_UID@ has been started. All services queued
for starting have been started. Note that other services might still be starting
up or be started at any later time.

Startup of the manager took @USERSPACE_USEC@ microseconds.

-- 6bbd95ee977941e497c48be27c254128
Subject: System sleep state @SLEEP@ entered
Defined-By: systemd
Support: %SUPPORT_URL%

The system has now entered the @SLEEP@ sleep state.

-- 8811e6df2a8e40f58a94cea26f8ebf14
Subject: System sleep state @SLEEP@ left
Defined-By: systemd
Support: %SUPPORT_URL%

The system has now left the @SLEEP@ sleep state.

-- 98268866d1d54a499c4e98921d93bc40
Subject: System shutdown initiated
Defined-By: systemd
Support: %SUPPORT_URL%

System shutdown has been initiated. The shutdown has now begun and
all system services are terminated and all file systems unmounted.

-- 7d4958e842da4a758f6c1cdc7b36dcc5
Subject: A start job for unit @UNIT@ has begun execution
Defined-By: systemd
Support: %SUPPORT_URL%

A start job for unit @UNIT@ has begun execution.

The job identifier is @JOB_ID@.

-- 39f53479d3a045ac8e11786248231fbf
Subject: A start job for unit @UNIT@ has finished successfully
Defined-By: systemd
Support: %SUPPORT_URL%

A start job for unit @UNIT@ has finished successfully.

The job identifier is @JOB_ID@.

-- be02cf6855d2428ba40df7e9d022f03d
Subject: A start job for unit @UNIT@ has failed
Defined-By: systemd
Support: %SUPPORT_URL%

A start job for unit @UNIT@ has finished with a failure.

The job identifier is @JOB_ID@ and the job result is @JOB_RESULT@.

-- de5b426a63be47a7b6ac3eaac82e2f6f
Subject: A stop job for unit @UNIT@ has begun execution
Defined-By: systemd
Support: %SUPPORT_URL%

A stop job for unit @UNIT@ has begun execution.

The job identifier is @JOB_ID@.

-- 9d1aaa27d60140bd96365438aad20286
Subject: A stop job for unit @UNIT@ has finished
Defined-By: systemd
Support: %SUPPORT_URL%

A stop job for unit @UNIT@ has finished.

The job identifier is @JOB_ID@ and the job result is @JOB_RESULT@.

-- d34d037fff1847e6ae669a370e694725
Subject: A reload job for unit @UNIT@ has begun execution
Defined-By: systemd
Support: %SUPPORT_URL%

A reload job for unit @UNIT@ has begun execution.

The job identifier is @JOB_ID@.

-- 7b05ebc668384222baa8881179cfda54
Subject: A reload job for unit @UNIT@ has finished
Defined-By: systemd
Support: %SUPPORT_URL%

A reload job for unit @UNIT@ has finished.

The job identifier is @JOB_ID@ and the job result is @JOB_RESULT@.

-- 641257651c1b4ec9a8624d7a40a9e1e7
Subject: Process @EXECUTABLE@ could not be executed
Defined-By: systemd
Support: %SUPPORT_URL%

The process @EXECUTABLE@ could not be executed and failed.

The error number returned by this process is @ERRNO@.

-- 0027229ca0644181a76c4e92458afa2e
Subject: One or more messages could not be forwarded to syslog
Defined-By: systemd
Support: %SUPPORT_URL%

One or more messages could not be forwarded to the syslog service
running side-by-side with journald. This usually indicates that the
syslog implementation has not been able to keep up with the speed of
messages queued.

-- 1dee0369c7fc4736b7099b38ecb46ee7
Subject: Mount point is not empty
Defined-By: systemd
Support: %SUPPORT_URL%

The directory @WHERE@ is specified as the mount point (second field in
/etc/fstab or Where= field in systemd unit file) and is not empty.
This does not interfere with mounting, but the pre-exisiting files in
this directory become inaccessible. To see those over-mounted files,
please manually mount the underlying file system to a secondary
location.

-- 24d8d4452573402496068381a6312df2
Subject: A virtual machine or container has been started
Defined-By: systemd
Support: %SUPPORT_URL%

The virtual machine @NAME@ with its leader PID @LEADER@ has been
started is now ready to use.

-- 58432bd3bace477cb514b56381b8a758
Subject: A virtual machine or container has been terminated
Defined-By: systemd
Support: %SUPPORT_URL%

The virtual machine @NAME@ with its leader PID @LEADER@ has been
shut down.

-- 36db2dfa5a9045e1bd4af5f93e1cf057
Subject: DNSSEC mode has been turned off, as server doesn't support it
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: man:systemd-resolved.service(8)
Documentation: man:resolved.conf(5)

The resolver service (systemd-resolved.service) has detected that the
configured DNS server does not support DNSSEC, and DNSSEC validation has been
turned off as result.

This event will take place if DNSSEC=allow-downgrade is configured in
resolved.conf and the configured DNS server is incompatible with DNSSEC. Note
that using this mode permits DNSSEC downgrade attacks, as an attacker might be
able turn off DNSSEC validation on the system by inserting DNS replies in the
communication channel that result in a downgrade like this.

This event might be indication that the DNS server is indeed incompatible with
DNSSEC or that an attacker has successfully managed to stage such a downgrade
attack.

-- 1675d7f172174098b1108bf8c7dc8f5d
Subject: DNSSEC validation failed
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: man:systemd-resolved.service(8)

A DNS query or resource record set failed DNSSEC validation. This is usually
indication that the communication channel used was tampered with.

-- 4d4408cfd0d144859184d1e65d7c8a65
Subject: A DNSSEC trust anchor has been revoked
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: man:systemd-resolved.service(8)

A DNSSEC trust anchor has been revoked. A new trust anchor has to be
configured, or the operating system needs to be updated, to provide an updated
DNSSEC trust anchor.

-- 5eb03494b6584870a536b337290809b3
Subject: Automatic restarting of a unit has been scheduled
Defined-By: systemd
Support: %SUPPORT_URL%

Automatic restarting of the unit @UNIT@ has been scheduled, as the result for
the configured Restart= setting for the unit.

-- ae8f7b866b0347b9af31fe1c80b127c0
Subject: Resources consumed by unit runtime
Defined-By: systemd
Support: %SUPPORT_URL%

The unit @UNIT@ completed and consumed the indicated resources.

-- 7ad2d189f7e94e70a38c781354912448
Subject: Unit succeeded
Defined-By: systemd
Support: %SUPPORT_URL%

The unit @UNIT@ has successfully entered the 'dead' state.

-- 0e4284a0caca4bfc81c0bb6786972673
Subject: Unit skipped
Defined-By: systemd
Support: %SUPPORT_URL%

The unit @UNIT@ was skipped due to an ExecCondition= command failure, and has
entered the 'dead' state with result '@UNIT_RESULT@'.

-- d9b373ed55a64feb8242e02dbe79a49c
Subject: Unit failed
Defined-By: systemd
Support: %SUPPORT_URL%

The unit @UNIT@ has entered the 'failed' state with result '@UNIT_RESULT@'.

-- 98e322203f7a4ed290d09fe03c09fe15
Subject: Unit process exited
Defined-By: systemd
Support: %SUPPORT_URL%

An @COMMAND@= process belonging to unit @UNIT@ has exited.

The process' exit code is '@EXIT_CODE@' and its exit status is @EXIT_STATUS@.

-- 50876a9db00f4c40bde1a2ad381c3a1b
Subject: The system is configured in a way that might cause problems
Defined-By: systemd
Support: %SUPPORT_URL%

The following "tags" are possible:
- "split-usr" — /usr is a separate file system and was not mounted when systemd
  was booted
- "cgroups-missing" — the kernel was compiled without cgroup support or access
  to expected interface files is restricted
- "var-run-bad" — /var/run is not a symlink to /run
- "overflowuid-not-65534" — the kernel user ID used for "unknown" users (with
  NFS or user namespaces) is not 65534
- "overflowgid-not-65534" — the kernel group ID used for "unknown" users (with
  NFS or user namespaces) is not 65534
Current system is tagged as @TAINT@.

-- fe6faa94e7774663a0da52717891d8ef
Subject: A process of @UNIT@ unit has been killed by the OOM killer.
Defined-By: systemd
Support: %SUPPORT_URL%

A process of unit @UNIT has been killed by the Linux kernel out-of-memory (OOM)
killer logic. This usually indicates that the system is low on memory and that
memory needed to be freed. A process associated with @UNIT@ has been determined
as the best process to terminate and has been forcibly terminated by the
kernel.

Note that the memory pressure might or might not have been caused by @UNIT@.

-- b61fdac612e94b9182285b998843061f
Subject: Accepting user/group name @USER_GROUP_NAME@, which does not match strict user/group name rules.
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: https://systemd.io/USER_NAMES

The user/group name @USER_GROUP_NAME@ has been specified, which is accepted
according the relaxed user/group name rules, but does not qualify under the
strict rules.

The strict user/group name rules written as regular expression are:

^[a-zA-Z_][a-zA-Z0-9_-]{0,30}$

The relaxed user/group name rules accept all names, except for the empty
string; names containing NUL bytes, control characters, colon or slash
characters; names not valid UTF-8; names with leading or trailing whitespace;
the strings "." or ".."; fully numeric strings, or strings beginning in a
hyphen and otherwise fully numeric.

-- 1b3bb94037f04bbf81028e135a12d293
Subject: Failed to generate valid unit name from path '@MOUNT_POINT@'.
Defined-By: systemd
Support: %SUPPORT_URL%

The following mount point path could not be converted into a valid .mount
unit name:

    @MOUNT_POINT@

Typically this means that the path to the mount point is longer than allowed
for valid unit names.

systemd dynamically synthesizes .mount units for all mount points appearing on
the system. For that a simple escaping algorithm is applied: the absolute path
name is used, with all "/" characters replaced by "-" (the leading one is
removed). Moreover, any non-alphanumeric characters (as well as any of ":",
"-", "_", ".", "\") are replaced by "\xNN" where "NN" is the hexadecimal code
of the character. Finally, ".mount" is suffixed. The resulting string must be
under 256 characters in length to be a valid unit name. This restriction is
made in order for all unit names to also be suitable as file names. If a mount
point appears that — after escaping — is longer than this limit it cannot be
mapped to a unit. In this case systemd will refrain from synthesizing a unit
and cannot be used to manage the mount point. It will not appear in the service
manager's unit table and thus also not be torn down safely and automatically at
system shutdown.

It is generally recommended to avoid such overly long mount point paths, or —
if used anyway – manage them independently of systemd, i.e. establish them as
well as tear them down automatically at system shutdown by other software.

-- b480325f9c394a7b802c231e51a2752c
Subject: Special user @OFFENDING_USER@ configured, this is not safe!
Defined-By: systemd
Support: %SUPPORT_URL%
Documentation: https://systemd.io/UIDS-GIDS

The unit @UNIT@ is configured to use User=@OFFENDING_USER@.

This is not safe. The @OFFENDING_USER@ user's main purpose on Linux-based
operating systems is to be the owner of files that otherwise cannot be mapped
to any local user. It's used by the NFS client and Linux user namespacing,
among others. By running a unit's processes under the identity of this user
they might possibly get read and even write access to such files that cannot
otherwise be mapped.

It is strongly recommended to avoid running services under this user identity,
in particular on systems using NFS or running containers. Allocate a user ID
specific to this service, either statically via systemd-sysusers or dynamically
via the DynamicUser= service setting.

-- 1c0454c1bd2241e0ac6fefb4bc631433
Subject: systemd-udev-settle.service is deprecated.
Defined-By: systemd
Support: %SUPPORT_URL%

Usage of the systemd service unit systemd-udev-settle.service is deprecated. It
inserts artificial delays into the boot process without providing the
guarantees other subsystems traditionally assumed it provides. Relying on this
service is racy, and it is generally a bug to make use of it and depend on it.

Traditionally, this service's job was to wait until all devices a system
possesses have been fully probed and initialized, delaying boot until this
phase is completed. However, today's systems and hardware generally don't work
this way anymore, hardware today may show up any time and take any time to be
probed and initialized. Thus, in the general case, it's no longer possible to
correctly delay boot until "all devices" have been processed, as it is not
clear what "all devices" means and when they have been found. This is in
particular the case if USB hardware or network-attached hardware is used.

Modern software that requires some specific hardware (such as a network device
or block device) to operate should only wait for the specific devices it needs
to show up, and otherwise operate asynchronously initializing devices as they
appear during boot and during runtime without delaying the boot process.

It is a defect of the software in question if it doesn't work this way, and
still pulls systemd-udev-settle.service into the boot process.

Please file a bug report against the following units, with a request for it to
be updated to operate in a hotplug fashion without depending on
systemd-udev-settle.service:

    @OFFENDING_UNITS@
