Ulrich Ölmann [Tue, 5 Jan 2021 17:53:44 +0000 (18:53 +0100)]
network: can: add support for bus error reporting
Enhance systemd-networkd to be able to control a CAN device's berr-reporting
flag via the new boolean directive BusErrorReporting= to be used in network
files.
Jan Tojnar [Sat, 2 Jan 2021 01:46:33 +0000 (02:46 +0100)]
pkg-config: make prefix overridable again
While we don't support prefix being != /usr, and this is hardcoded
all over the place, variables in pkg-config file are expected
to have overridable base directory.
This is important for at least the following two use cases:
- Installing projects to non-FHS package-specific prefixes for Nix-style
package managers. Of course, it is then their responsibility
to ensure systemd can find the service files.
- Installing to local path for development purposes.
This is a compromise between running a program from a build directory,
and running it fully installed to system prefix.
You will not want to write to system prefix in either case.
For more information, see also
https://www.bassi.io/articles/2018/03/15/pkg-config-and-paths/
Daan De Meyer [Wed, 6 Jan 2021 17:41:44 +0000 (18:41 +0100)]
mkosi: Enable InstallDirectory and SourceFileTransferFinal options
- InstallDirectory caches the install part of the build process
which speeds up incremental builds a little and allows inspecting
the installed components in mkosi.installdir.
- SourceFileTransferFinal copies the source files to the final
image which makes the gdb experience in qemu/systemd-nspawn a bit
nicer as it can now find the source files and show the source code
in the gdb cli itself.
Daan De Meyer [Sat, 26 Dec 2020 14:27:55 +0000 (15:27 +0100)]
networkd: Enable IPv6SendRA on builtin network files
RAs trigger neighbor discovery which allows users to query the
LL address of the container/VM via `ip neighbor get dev`. This is
useful as it gives users an easy way to connect to the container
without needing LLMNR or mDNS to resolve the hostname of the container
to an IP address. In practice, this allows connecting with only
networkd enabled and without resolved running in the host/container.
Luca Boccassi [Tue, 5 Jan 2021 13:44:26 +0000 (13:44 +0000)]
systemctl: have is-enabled return success for aliases when calling into pid1 too
commit 15d7ab87c4e5917f5788f1f8dce327a1e272bea3 introduced the
change to add an 'alias' state, but it was wired to systemctl
only when running in 'client-side' mode. Return success as
expected and documented also when running in 'server-mode'.
string-util: use GREEDY_ALLOC_ROUND_UP() in strextend()
This uses GREEDY_ALLOC_ROUND_UP() to grow the allocation size
exponentially. This should speed allocation loops up a bit, given
that we often call strextend() repeatedly in a loop on the same
buffer.
Merge pull request #18088 from bluca/test_force_nspawn
tests: add TEST_QEMU_ONLY variable to run only tests where qemu is mandatory, TEST_PREFER_NSPAWN to run under nspawn unless unsupported, fix some testsuite issues on Debian
man: use 'weak' and 'strong' for explaining difference between Wants= + Requires=
A minor tweak, that hopefully makes things a bit clearer, given that we
previously used "requirement dependency" when referring to Wants=, which
might be confusing given that we have Requires=
Document that systemd-sysusers doesn’t create the specified home
directory, and point to systemd-tmpfiles as the service that can create
the home directory instead. (systemd-tmpfiles-setup.service is ordered
After=systemd-sysusers.service, so by the time systemd-tmpfiles would
create the home directory, sysusers would have created the owning user
already, and it should all work out.)
A S Alam [Sat, 2 Jan 2021 00:37:00 +0000 (01:37 +0100)]
Translated using Weblate (Punjabi)
Currently translated at 3.2% (6 of 187 strings)
Added translation using Weblate (Punjabi)
Co-authored-by: A S Alam <amanpreet.alam@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/master/pa/
Translation: systemd/master
Luca Boccassi [Thu, 31 Dec 2020 17:29:58 +0000 (17:29 +0000)]
tests: add TEST_PREFER_NSPAWN variable to run as many as possible under nspawn
By default the test suite prefers qemu, and uses nspawn only if
a test specifically says it doesn't support qemu.
Add a variable to allow flipping the default, and run as many
tests under nspawn as possible.
Luca Boccassi [Sat, 26 Dec 2020 20:11:55 +0000 (20:11 +0000)]
tests: add TEST_QEMU_ONLY variable to run only tests where qemu is mandatory
Allows to split the test run in two parts. Most tests can run under
nspawn which is much faster, and they can be ran in one chunk with
TEST_NO_QEMU=1. The qemu-only tests, which are just a handful, can
be ran in another chunk with TEST_QEMU_ONLY=1.
Luca Boccassi [Tue, 22 Dec 2020 17:50:34 +0000 (17:50 +0000)]
test: check for binariers in [usr/][s]bin
The image build function greps for ExecStart lines in unit files, but some
of them (eg: systemd-firstboot) do not use a full path.
It then falls back to 'type -P' but that only works if you have the binary
installed. For optional binaries like systemd-firstboot, the installation
can then fail.
Manually check if the binary already exists in /[usr/][s]bin.
Luca Boccassi [Tue, 22 Dec 2020 17:47:39 +0000 (17:47 +0000)]
test: use pkg-config to get user unit dir when installing dbus user socket
Usually on Debian ROOTLIBDIR is /lib/<arch triplet>, which is not the right place.
Use pkg-config since we define it, and then fallback to /usr/lib/systemd/user which is
the canonical location.
On both Debian&friends and Fedora dbus/dbus-broker install the user socket/service
under /usr/lib/systemd/user, not /lib/systemd/systemd/user.
Daan De Meyer [Wed, 9 Dec 2020 21:51:56 +0000 (21:51 +0000)]
Enable more mkosi options
- HostonlyInitrd reduces the size of the initramfs which speeds up
QEMU boot times.
- Autologin and deleting the root password remove
the manual login step whenever starting the systemd-nspawn container
or QEMU vm.
- NetworkVeth passes --network-veth to the nspawn container when
using mkosi boot and emulates --network-veth with a tap device
and networkd's 80-vm-vt.network builtin network file when using
mkosi qemu. --network-veth makes it easier to test network and
resolved in mkosi's nspawn container or QEMU vm.
Yu Watanabe [Tue, 29 Dec 2020 14:50:54 +0000 (23:50 +0900)]
resolve: slightly optimize dns_answer_add()
Previously, dns_answer_add() was O(n^2).
With this change dns_packet_extract() becomes ~15 times faster for some
extremal case.
Before:
```
$ time ./fuzz-dns-packet ~/downloads/clusterfuzz-testcase-minimized-fuzz-dns-packet-5631106733047808
/home/watanabe/downloads/clusterfuzz-testcase-minimized-fuzz-dns-packet-5631106733047808... ok
real 0m15.453s
user 0m15.430s
sys 0m0.007s
```
After:
```
$ time ./fuzz-dns-packet ~/downloads/clusterfuzz-testcase-minimized-fuzz-dns-packet-5631106733047808
/home/watanabe/downloads/clusterfuzz-testcase-minimized-fuzz-dns-packet-5631106733047808... ok
Yu Watanabe [Wed, 28 Oct 2020 08:02:41 +0000 (17:02 +0900)]
network: do not serialize/deserialize routing policy rules
We already handle foreign routing policy rules correctly by the previous
commit. So, the serialization/deserialization of rules are not necessary
anymore.
Yu Watanabe [Wed, 28 Oct 2020 11:27:23 +0000 (20:27 +0900)]
network: drop unnecessary routing policy rules
networkd already drop foreign address, routes, and nexthops on startup,
except those created by kernel. However, previously, routing policy
rules were not. The logic of serialization/deserialization of rules only
works for rules created by previous invocation of networkd, and does not
work for one created by other tools like `ip rule`.
This makes networkd drop foreign routing policy rules except created by
kernel on startup. Also, remove rules created by networkd when the
corresponding links are dropped or networkd is stopping.
Let's link the three man pages together more tightly and explain what
the two targets are about, emphasizing local/quick/reliable/approximate
vs remote/slow/unreliable/accurate synchronization.
Improve instructions for debugging failing service
In situations where a service fails to start, systemd suggests the user to
use "journalctl -xe" to get details about the failure. While running this
command does provide some additional details, most of the information is
similar to what was already printed when the service fails.
often the actual reason for the failure can be found in the logs of the
service that fails to start.
This patch updates the wording to suggest using "-u" to view the service
logs instead.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit adds support for disabling the read and write
workqueues with the new crypttab options no-read-workqueue
and no-write-workqueue. These correspond to the cryptsetup
options --perf-no_read_workqueue and --perf-no_write_workqueue
respectively.
man/systemd-nspawn: document hashing machine name for uid base
Explicitly document the behavior introduced in #7437: when picking a new
UID shift base with "-U", a hash of the machine name will be tried
before falling back to fully random UID base candidates.
pali [Sun, 20 Dec 2020 02:24:51 +0000 (03:24 +0100)]
udev: Updates for cdrom_id helper
cdrom_id udev helper does not parse all MMC profiles. Following change
fixes this issue and parse all 34 profiles from all MMC standard versions.
Also it replaces magic constants by macros provided by linux/cdrom.h and
fixes cd_profiles_old_mmc() to issue READ_DISC_INFO command in two steps,
like it is doing kernel and also mkudffs.
Florian Klink [Sun, 20 Dec 2020 17:24:05 +0000 (18:24 +0100)]
man/systemd.netdev: clarify the wireguard AllowedIPs= setting
`AllowedIPs=` only affects "routing inside the network interface
itself", as in, which wireguard peer packets with a specific destination
address are sent to, and what source addresses are accepted from which
peer.
To cause packets to be sent via wireguard in first place, a route via
that interface needs to be added - either in the `[Routes]` section on
the `.network` matching the wireguard interface, or outside of networkd.
This is a common cause of misunderstanding, because tools like wg-quick
also add routes to the interface. However, those tools are meant as a
"extremely simple script for easily bringing up a WireGuard interface,
suitable for a few common use cases (from their manpage).
Networkd also should support other usecases - like setting AllowedIPs to
0.0.0.0/0 and ::/0 and having a dynamic routing protocol setting more
specific routes (or the user manually setting them).
Daan De Meyer [Sat, 19 Dec 2020 18:47:50 +0000 (19:47 +0100)]
mkosi: Add basic editors to final images
It's often useful to have an editor available to edit some random
config file in the final image. Let's install some basic editors
that don't take up too much space.