summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* boot: Drop use of xpool_print/SPrintJan Janssen2023-01-186-44/+43
|
* tree-wide: Use __func__ in assertsJan Janssen2023-01-183-7/+7
| | | | | | clang puts the whole function signature in __PRETTY_FUNCTION__, which is a bit excessive for something that can already be figured out by using the line number.
* boot: Add log_trace debugging helperJan Janssen2023-01-181-0/+1
|
* boot: Introduce log_waitJan Janssen2023-01-189-16/+46
| | | | | Instead of stalling for every log message as it appears we now wait for several messages at strategic locations.
* boot: Use printf for error loggingJan Janssen2023-01-1818-161/+148
| | | | This also drops the _stall suffix in anticipation of the next commit.
* boot: Add printf functionsJan Janssen2023-01-186-0/+748
|
* test-network: reprocess the loopback network interfaceYu Watanabe2023-01-181-0/+4
| | | | Fixes the issue reported at https://github.com/systemd/systemd-centos-ci/pull/585#issuecomment-1385537641.
* Merge pull request #26021 from fbuihuu/some-journald-improvementsLennart Poettering2023-01-185-46/+135
|\ | | | | Some journald improvements
| * journald: split find_journal() upFranck Bui2023-01-161-28/+44
| | | | | | | | No functional change.
| * journald: introduce journal_file_parse_uid_from_filename() helperFranck Bui2023-01-165-16/+89
| |
| * journald: rename vacuum_offline_user_journals()Franck Bui2023-01-161-2/+2
| | | | | | | | | | | | | | The name was misleading because the function actually archives offline journals, ie it doesn't try to remove them to make some room. No functional change.
* | Merge pull request #26092 from poettering/dissect-sector-sizeLennart Poettering2023-01-1816-39/+310
|\ \ | | | | | | auto-detect intended sector size from DDI disk images, and configure loopback devices for it
| * | repart: auto-probe sector size when not specifiedLennart Poettering2023-01-181-3/+17
| | |
| * | homework: when creating/resizing GPT partitions, also set sector size explicitlyLennart Poettering2023-01-186-14/+61
| | |
| * | dissect: show sector size in info outputLennart Poettering2023-01-181-0/+5
| | |
| * | loop-util: always tell kernel explicitly about loopback sector sizeLennart Poettering2023-01-1811-16/+102
| | | | | | | | | | | | | | | | | | Let's not leave the sector size unspecified: either set a user supplied value, or auto-detect the right size by probing the disk image accordingly.
| * | dissect-image: add probe_sector_size() helper for detecting sector size of a ↵Lennart Poettering2023-01-182-0/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GPT disk image When we operate with DDIs with sector sizes != 512 we need to configure the loopback device to match it, otherwise the image and the kernel block device will disagree what things are. Let's add a prober that tries to determine the sector size of a GPT DDI. It does this by looking for the GPT partition table header at the various byte offsets they must be located on, given a specific sector size. It will try sector size 512, 1024, 2048 and 4096. Of these only the 512 and 4096 really make sense IRL I guess, but let's be thorough.
| * | loop-util: insist on setting the sector size correctlyLennart Poettering2023-01-181-1/+19
| | | | | | | | | | | | | | | | | | If we attach a disk image to a loopback device the sector size of the image must match the one of the loopback device, hence be more careful here.
| * | blockdev-util: add simple wrapper around BLKSSZGETLennart Poettering2023-01-183-6/+23
| | | | | | | | | | | | | | | Just adds some typesafety and generates an error if the field is not initialized in the block device yet.
* | | core: add GetUnitByPIDFD method and use it in systemctlLuca Boccassi2023-01-185-13/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A pid can be recycled, but a pidfd is pinned. Add a new method that is safer as it takes a pidfd as input. Return not only the D-Bus object path, but also the unit id and the last recorded invocation id, as they are both useful (especially the id, as converting from a path object to a unit id from a script requires another round-trip via D-Bus). Note that the manager still tracks processes by pid, so theorethically this is not fully error-proof, but on the other hand the method response is synchronous and the manager is single-threaded, so once a call is being processed the unit database will not change anyway. Once the manager switches to use pidfds everywhere, this can be further hardened.
* | | hwdb: Add mic mute key mappings for Dell G16 SeriesKoba Ko2023-01-181-0/+2
|/ / | | | | | | add Dell G16 series to use the mic mute hotkey.
* | Merge pull request #26044 from DaanDeMeyer/repart-sector-sizeDaan De Meyer2023-01-1810-77/+112
|\ \ | | | | | | repart: Allow configuring sector size
| * | repart: Allow configuring sector sizeDaan De Meyer2023-01-1710-41/+97
| | | | | | | | | | | | | | | | | | Let's allow users to configure the (logical) sector size of their image. This is required when building images for a 4k sector size disk on a 512b sector size host or vice-versa.
| * | mkfs-util: Shorten strv operations error handlingDaan De Meyer2023-01-171-36/+15
| | |
* | | test: bump D-Bus service start timeout if we run without accelFrantisek Sumsal2023-01-181-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The default (25s) doesn't seem to be enough in some cases (especially in VMs without acceleration), causing spurious timeouts: [ 174.297658] dbus-daemon[647]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.0' (uid=0 pid=645 comm="hostnamectl " label="kernel") [ 184.202313] systemd[1]: systemd-update-utmp-runlevel.service: Consumed 1.253s CPU time. [ 197.335422] systemd[1]: Started dbus.service. [ 199.211468] testsuite-71.sh[639]: + assert_in 'Static hostname: H' '' [ 199.347192] dbus-daemon[647]: [system] Failed to activate service 'org.freedesktop.hostname1': timed out (service_start_timeout=25000ms) [ 199.394879] testsuite-71.sh[657]: + set +ex [ 199.438918] testsuite-71.sh[657]: FAIL: 'Static hostname: H' not found in: [ 200.966006] systemd-logind[631]: Watching system buttons on /dev/input/event0 (Power Button) [ 201.008178] systemd-logind[631]: Watching system buttons on /dev/input/event1 (AT Translated Set 2 keyboard) [ 201.034106] systemd-logind[631]: New seat seat0. [ 201.238267] sh[658]: + systemctl poweroff --no-block [ 201.329890] systemd[1]: Starting systemd-hostnamed.service... [ 202.156622] systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully. [ 204.818913] hostnamectl[645]: Failed to query system properties: Connection timed out [ 205.195583] systemd[1]: testsuite-71.service: Main process exited, code=exited, status=1/FAILURE [ 205.227237] systemd[1]: testsuite-71.service: Failed with result 'exit-code'. [ 205.712780] systemd[1]: Failed to start testsuite-71.service.
* | | Merge pull request #26081 from yuwata/udev-symlink-removeLuca Boccassi2023-01-174-9/+28
|\ \ \ | | | | | | | | udev: support -= operator for SYMLINK
| * | | test-udev: add a brief test for -= operator for SYMLINKYu Watanabe2023-01-171-2/+3
| | | |
| * | | udev: support '-=' operator for SYMLINKFranck Bui2023-01-173-7/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For some (corner) cases, it might be desirable to disable the generation of some persistent storage symlinks that 60-persistent-storage.rules creates. For example on big setups with a high number of partitions which uses the same label name, this can result in a noticeable slow-down in the (re)start of the udevd as there are many contenders for the symlink /dev/disk/by-partlabel. However it's currently pretty hard to overwrite just some specific part of the rule file. Indeed one need to copy and modify the whole rule file in /etc but will lost any upcoming updates/fixes that the distro might release in the future. With this simple patch, one can now disable the generation of the "by-partlabel" symlinks (for example) with the following single rule: $ cat /etc/udev/rules.d/99-no-by-partlabel.rules ENV{ID_PART_ENTRY_NAME}=="?*", SYMLINK-="disk/by-partlabel/$env{ID_PART_ENTRY_NAME}" Closes #24607.
* | | | coredump: use fstatvfs to check the available spaceDmitry V. Levin2023-01-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Given that we already have the file descriptor opened for writing, it would make sense to call fstatvfs with that file descriptor rather than statvfs with the directory path that was used to open that descriptor.
* | | | doc: document how we expect empty lines to be usedLennart Poettering2023-01-171-2/+16
| | | |
* | | | boot: Fix missed argument to Print()Jan Janssen2023-01-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | This fixes 3e87a057a796b57bf9540b948823fbefef6693d7, which passed the path to the wrong Print() call. Miraculously, this was printing the correct path during testing and was therefore missed.
* | | | units: don't install pcrphase-related units without gnu-efiFrantisek Sumsal2023-01-171-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | since we don't have systemd-pcrphase built anyway, which breaks the tests: ... I: Attempting to install /usr/lib/systemd/systemd-networkd-wait-online (based on unit file reference) I: Attempting to install /usr/lib/systemd/systemd-network-generator (based on unit file reference) I: Attempting to install /usr/lib/systemd/systemd-oomd (based on unit file reference) I: Attempting to install /usr/lib/systemd/systemd-pcrphase (based on unit file reference) W: Failed to install '/usr/lib/systemd/systemd-pcrphase' make: *** [Makefile:4: setup] Error 1 make: Leaving directory '/root/systemd/test/TEST-01-BASIC' Follow-up to 04959faa632272a8fc9cdac3121b2e4af721c1b6.
* | | | send dhcpv6 release when stoppingchris2023-01-1712-16/+168
| | | |
* | | | tpm2: replace magic numberDan Streetman2023-01-171-1/+1
| | | |
* | | | Merge pull request #25006 from poettering/pcr15Lennart Poettering2023-01-1729-195/+1073
|\ \ \ \ | | | | | | | | | | cryptsetup: measure LUKS volume keys to PCR 15
| * | | | update TODOLennart Poettering2023-01-171-3/+2
| | | | |
| * | | | test: add simple integration test for checking PCR extension works as it shouldLennart Poettering2023-01-172-0/+31
| | | | |
| * | | | man: document new machine-id/fs measurement optionsLennart Poettering2023-01-173-6/+64
| | | | |
| * | | | tpm2: add common helper for checking if we are running on UKI with TPM ↵Lennart Poettering2023-01-177-39/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | measurements Let's introduce a common implementation of a function that checks whether we are booted on a kernel with systemd-stub that has TPM PCR measurements enabled. Do our own userspace measurements only if we detect that. PCRs are scarce and most likely there are projects which already make use of them in other ways. Hence, instead of blindly stepping into their territory let's conditionalize things so that people have to explicitly buy into our PCR assignments before we start measuring things into them. Specifically bind everything to an UKI that reported measurements. This was previously already implemented in systemd-pcrphase, but with this change we expand this to all tools that process PCR measurement settings. The env var to override the check is renamed to SYSTEMD_FORCE_MEASURE, to make it more generic (since we'll use it at multiple places now). This is not a compat break, since the original env var for that was not included in any stable release yet.
| * | | | generators: optionally, measure file systems at bootLennart Poettering2023-01-178-4/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we use gpt-auto-generator, automatically measure root fs and /var. Otherwise, add x-systemd.measure option to request this.
| * | | | units: rework growfs units to be just a regular unit that is instantiatedLennart Poettering2023-01-175-49/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The systemd-growfs@.service units are currently written in full for each file system to grow. Which is kinda pointless given that (besides an optional ordering dep) they contain always the same definition. Let's fix that and add a static template for this logic, that the generator simply instantiates (and adds an ordering dep for). This mimics how systemd-fsck@.service is handled. Similar to the wait that for root fs there's a special instance systemd-fsck-root.service we also add a special instance systemd-growfs-root.service for the root fs, since it has slightly different deps. Fixes: #20788 See: #10014
| * | | | generator: teach generator_add_symlink() to instantiate specified unitLennart Poettering2023-01-172-13/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | if we want generators to instantiate a template service, we need to teach generator_add_symlink() the concept. Just some preparation for a later commit. While we are at it, modernize the function around path_extract_filename() + path_extract_directory()
| * | | | units: measure /etc/machine-id into PCR 15 during early bootLennart Poettering2023-01-172-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We want PCR 15 to be useful for binding per-system policy to. Let's measure the machine ID into it, to ensure that every OS we can distinguish will get a different PCR (even if the root disk encryption key is already measured into it).
| * | | | pcrphase: make tool more generic, reuse for measuring machine id/fs uuidsLennart Poettering2023-01-172-24/+187
| | | | | | | | | | | | | | | | | | | | See: #24503
| * | | | gpt-auto-generator: automatically measure root/var volume keys into PCR 15Lennart Poettering2023-01-172-5/+39
| | | | | | | | | | | | | | | | | | | | | | | | | let's enable PCR 15 measurements automatically if gpt-auto discovery is used and systemd-stub is also used.
| * | | | man: document the new crypttab measurement optionsLennart Poettering2023-01-172-0/+27
| | | | |
| * | | | cryptsetup: add tpm2-measure-pcr= and tpm2-measure-bank= crypttab optionsLennart Poettering2023-01-173-15/+217
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These options allow measuring the volume key used for unlocking the volume to a TPM2 PCR. This is ideally used for the volume key of the root file system and can then be used to bind other resources to the root file system volume in a secure way. See: #24503
| * | | | tpm2-util: optionally do HMAC in tpm2_extend_bytes() in case we process ↵Lennart Poettering2023-01-173-6/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sensitive data When measuring data into a PCR we are supposed to hash the data on the CPU and then pass the hash value over the wire to the TPM2. That's all good as long as the data we intend to measure is not sensitive. Let's be extra careful though if we want to measure sensitive data, for example the root file system volume key. Instead of just hashing that and passing it over the wire to the TPM2, let's do a HMAC signature instead. It's also a hash operation, but should protect our secret reasonably well and not leak direct information about it to wiretappers.
| * | | | tpm2-util: split out code that extends a PCR from pcrphaseLennart Poettering2023-01-173-39/+72
| | | | | | | | | | | | | | | | | | | | This way we can reuse it later outside of pcrphase
| * | | | tpm2-util: split out code that derives "good" TPM2 banks into an strv from ↵Lennart Poettering2023-01-173-22/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pcrphase and generalize it in tpm2-util.c That way we can reuse it later from different places.