Ninjatrappeur's systemd working tree
Go to file
Lennart Poettering d4dffb8533 dissect: introduce new recognizable partition types for /var and /var/tmp
This has been requested many times before. Let's add it finally.

GPT auto-discovery for /var is a bit more complex than for other
partition types: the other partitions can to some degree be shared
between multiple OS installations on the same disk (think: swap, /home,
/srv). However, /var is inherently something bound to an installation,
i.e. specific to its identity, or actually *is* its identity, and hence
something that cannot be shared.

To deal with this this new code is particularly careful when it comes to
/var: it will not mount things blindly, but insist that the UUID of the
partition matches a hashed version of the machine-id of the
installation, so that each installation has a very specific /var
associated with it, and would never use any other. (We actually use
HMAC-SHA256 on the GPT partition type for /var, keyed by the machine-id,
since machine-id is something we want to keep somewhat private).

Setting the right UUID for installations takes extra care. To make
things a bit simpler to set up, we avoid this safety check for nspawn
and RootImage= in unit files, under the assumption that such container
and service images unlikely will have multiple installations on them.
The check is hence only required when booting full machines, i.e. in
in systemd-gpt-auto-generator.

To help with putting together images for full machines, PR #14368
introduces a repartition tool that can automatically fill in correctly
calculated UUIDs on first boot if images have the var partition UUID
initialized to all zeroes. With that in place systems can be put
together in a way that on first boot the machine ID is determined and
the partition table automatically adjusted to have the /var partition
with the right UUID.
2019-12-23 14:43:59 +01:00
.github github: use systemd.io links in issue template 2019-12-16 09:49:51 +01:00
.lgtm/cpp-queries lgtm: complain about accept() [people should use accept4() instead, due to O_CLOEXEC] 2019-04-10 20:03:38 +02:00
.mkosi mkosi: Find hostname command on Arch Linux 2019-11-01 13:34:41 +01:00
catalog catalog: update Polish translation 2019-07-29 09:30:24 +02:00
coccinelle tree-wide: use empty-to-root a bit more 2019-07-16 12:40:22 +02:00
docs docs: CSS files should not be executable 2019-12-16 09:50:02 +01:00
factory/etc factory: add default /etc/issue file 2019-07-24 08:57:23 +09:00
hwdb.d hwdb: assume all Medion Akoya E-models have the same matrix 2019-12-17 18:15:34 +01:00
man network: DHCP4 introduce send decline 2019-12-21 00:26:44 +09:00
modprobe.d Add SPDX license headers to various assorted files 2017-11-19 19:08:15 +01:00
network network: set AlternativeNamesPolicy= in 99-default.link 2019-12-17 15:44:48 +09:00
po po: update Polish translation 2019-10-26 17:17:30 +02:00
presets Drop my copyright headers 2018-06-14 13:03:20 +02:00
rules.d udev: mark all ccid/security devices with a special tag 2019-12-09 19:25:25 +01:00
semaphoreci semaphore: switch branch to debian/master 2019-11-30 19:05:53 +01:00
shell-completion bash-completion: move shell-completion for log-level or friends to systemctl 2019-12-21 19:23:02 +01:00
src dissect: introduce new recognizable partition types for /var and /var/tmp 2019-12-23 14:43:59 +01:00
sysctl.d sysctl: prefix ping port range setting with a dash 2019-07-26 09:26:07 +02:00
sysusers.d sysusers,tmpfiles: re-create systemd-network, systemd-resolve and systemd-timesync 2018-07-16 17:11:50 +02:00
test test-network: add a test case for DHCPv4.SendDecline= 2019-12-21 00:26:44 +09:00
tmpfiles.d resolved, networkd: don't resolve the user if not root 2019-12-07 18:55:54 +02:00
tools man: sort options without "=" in the directives index 2019-11-21 22:06:30 +01:00
travis-ci coverity: replace python with jq 2019-10-30 09:17:04 +01:00
units Revert "Drop dbus activation stub service" 2019-12-20 17:28:12 +01:00
xorg scripts: use 4 space indentation 2019-04-12 08:30:31 +02:00
.ctags editors: Prevent ctags from following symlinks 2019-02-15 11:01:20 -08:00
.dir-locals.el scripts: use 4 space indentation 2019-04-12 08:30:31 +02:00
.editorconfig scripts: use 4 space indentation 2019-04-12 08:30:31 +02:00
.gitattributes git: indicate that tabs are never OK in the systemd tree 2013-10-30 02:25:38 +01:00
.gitignore gitignore: add nspawn image lock and mkosi temporary files 2018-09-07 20:00:22 +02:00
.lgtm.yml lgtm: use python3 2018-12-10 03:07:17 +09:00
.mailmap mailmap: update 2019-11-22 09:33:40 +01:00
.travis.yml travis: add missing closing quote sign 2019-11-24 13:15:20 +03:00
.vimrc scripts: use 4 space indentation 2019-04-12 08:30:31 +02:00
.ycm_extra_conf.py ycm: add doc string for all the functions in configuration file 2017-11-29 13:21:49 -07:00
LICENSE.GPL2 relicense to LGPLv2.1 (with exceptions) 2012-04-12 00:24:39 +02:00
LICENSE.LGPL2.1 licence: remove references to old FSF address 2012-12-17 11:41:31 +01:00
Makefile build-sys: Fix Makefile wrapper for install target (#6548) 2017-08-07 11:29:20 +02:00
NEWS Fixup typo in NEWS 2019-12-03 08:02:24 +09:00
README Revert "Drop dbus activation stub service" 2019-12-20 17:28:12 +01:00
README.md minor: avoid double title 2019-12-11 19:57:57 +01:00
TODO update TODO 2019-12-18 11:02:21 +01:00
azure-pipelines.yml Free up some resources on Azure Pipelines 2019-07-17 13:28:38 +09:00
configure build-sys: add basic support for ./configure && make && make install 2017-07-18 10:05:06 -04:00
fuzzbuzz.yaml fuzzbuzz: rename fuzz.yaml to fuzzbuzz.yaml 2019-07-10 05:11:52 +03:00
meson.build cryptsetup: add native pkcs#11 support to cryptsetup 2019-12-09 19:25:25 +01:00
meson_options.txt shared: add pkcs11-util.[ch] 2019-12-09 19:25:25 +01:00
mkosi.build mkosi: let's update the boot loader also in /efi 2019-03-01 12:41:32 +01:00
mkosi.default mkosi: create .mkosi directory 2016-10-06 11:53:58 -04:00
zanata.xml po: add basic fedora.zanata.org configuration 2018-02-19 13:56:57 +01:00

README.md

Systemd

System and Service Manager

Count of open issues over time Count of open pull requests over time Semaphore CI Build Status
Coverity Scan Status
Fuzzit Status
OSS-Fuzz Status
CII Best Practices
Travis CI Build Status
Language Grade: C/C++
CentOS CI Build Status
Build Status

Details

General information about systemd can be found in the systemd Wiki.

Information about build requirements is provided in the README file.

Consult our NEWS file for information about what's new in the most recent systemd versions.

Please see the Hacking guide for information on how to hack on systemd and test your modifications.

Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.

When preparing patches for systemd, please follow our Coding Style Guidelines.

If you are looking for support, please contact our mailing list or join our IRC channel.

Stable branches with backported patches are available in the stable repo.