1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-12-23 17:34:00 +03:00
Commit Graph

67 Commits

Author SHA1 Message Date
Zbigniew Jędrzejewski-Szmek
a7df2d1e43 Add SPDX license headers to unit files 2017-11-19 19:08:15 +01:00
Alan Jenkins
0d18f808a4 Revert "units: don't kill the emergency shell when sysinit.target is triggered (#6765)" (#6904)
This reverts commit f1e24a259c.  Oops.

# systemctl emergency
Failed to start emergency.target: Transaction order is cyclic. See syste...
See system logs and 'systemctl status emergency.target' for details.
# systemctl status emergency.target
● emergency.target - Emergency Mode
   Loaded: loaded (/usr/lib/systemd/system/emergency.target; static; vendor preset: disabled)
   Active: inactive (dead) since Mon 2017-09-25 10:43:02 BST; 2h 42min ago
     Docs: man:systemd.special(7)

systemd[1]: sysinit.target: Found dependency on sysinit.target/stop
sysinit.target: Unable to break cycle starting with sysinit.target/stop
network.target: Found ordering cycle on wpa_supplicant.service/stop
network.target: Found dependency on sysinit.target/stop
network.target: Found dependency on emergency.target/start
network.target: Found dependency on emergency.service/start
network.target: Found dependency on serial-getty@ttyS0.service/stop
network.target: Found dependency on systemd-user-sessions.service/stop
network.target: Found dependency on network.target/stop
network.target: Unable to break cycle starting with network.target/stop


IMO #6509 is ugly enough that we should aim to answer it.  But it could
take some time to investigate, so let's re-open the issue as a first step.
2017-09-26 19:47:50 +02:00
Alan Jenkins
f1e24a259c units: don't kill the emergency shell when sysinit.target is triggered (#6765)
Why
---

The advantage of this is that starting sysinit.target from the emergency
shell will no longer kill the emergency shell and lock you out of the
system.  Our docs already claimed that emergency.target was useful for
"starting individual units in order to continue the boot process in steps".
This resolves #6509 for my purposes.

Remaining limitation
--------------------

Starting getty.target will still kill the shell, and if you don't have a
root password you will then be locked out at that point.  This is relevant
to distributions which patch the sulogin system to permit logins when the
root password is locked.  Both Debian and RedHat used to follow this
behaviour!  Debian have been discussing what they could replace it with at
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=806852

So this doesn't quite achieve perfection, but I think it's a worthwhile
change.  It should be easier to understand the logic now it doesn't have
such a big hole in it.  Repairing the sysinit stage of the boot is the main
reason we have emergency.target.  And as discussed in the issue,
sysinit.target gets pulled in implicitly as soon as any DefaultDependencies
service is activated.

How
---

sysinit.target only needs to conflict with emergency.target.  It didn't
need to conflict with emergency.service as well.  In theory the conflicts
are pointless, we could just change the dependency of sysinit.target on
local-fs.target from Wants to Requires.  However, doing so would mean that
when local-fs fails, the screen is flooded with yellow [DEPEND] failures.
That would hinder the poor unfortunate admin, so let's not do that.

There is no additional ordering requirement against emergency.  If the
failure happens, the job for sysinit will be cancelled instantly.  We don't
need to worry about when sysinit.target and its dependents would be
stopped, because sysinit waits for local-fs before it starts.

emergency.target is still necessarily stopped once we reach sysinit
(you can't express a one-way conflict in pure unit directives).
This is largely cosmetic... though perhaps it symbolizes that you're no
longer in Emergency Mode if System Initialization is successful ;-).

As a secondary advantage, the getty's which conflict on rescue.service now
need to conflict on emergency.service as well.  This makes the system more
uniform and simpler to understand.

The only other effect this should have is that
`systemctl start emergency.target` is now practically the same as
`systemctl start rescue.target`.  The only units this command will stop are
the conflicting getty units.  Neither of those commands should ever be
used.  E.g. they will not stop the gdm.service unit on Fedora 26.
2017-09-14 21:43:43 +02:00
Lennart Poettering
82f93439af units: properly unset the l10n environment variables where we need to
Now that we have UnsetEnvironment=, let's make proper use of it for
unsetting l10n settings for console gettys.

Fixes: #6407
2017-09-14 15:17:40 +02:00
Michal Sekletar
1759025418 units: introduce getty-pre.target (#6667)
This new target is a passive unit, hence it is supposed to be pulled in
to the transaction by the service that wants to block login on the
console (e.g. text version of initial-setup). Now both getty and
serial-getty are ordered after this target.

https://lists.freedesktop.org/archives/systemd-devel/2015-July/033754.html
2017-08-31 11:20:14 +02:00
Nikolai Kondrashov
db6aedab92 units: Tell login to preserve environment (#6023)
Make agetty started by *getty* units pass '-p' option to "login", so it
doesn't clear the environment and passes whatever was setup by systemd
to shells. This is needed especially for programs which are specified as
user shells, but won't read locale settings from anywhere but
environment.

[zj: cherry-pick just the second patch from the series, see discussion
on the pull request.]
2017-07-09 10:53:31 -04:00
Michal Soltys
5ed020d8d1 getty@.service.m4: add Conflicts=/Before= against rescue.service (#3792)
If user isolates rescue target from multi-user or graphical target (or just
starts the service), IgnoreOnIsolate will cause issues with sulogin which is
directly started on current virtual console. This patch adds necessary
Conflicts= and Before= against rescue.service.

Note that this is not needed for emergency target, as implicit Requires= and
After= against sysinit.target is in effect for this service
(DefaultDependencies=yes).
2016-07-25 16:18:00 +02:00
Lennart Poettering
d54c499369 install: introduce new DefaultInstance= field for [Install] sections
The DefaultInstance= name is used when enabling template units when only
specifying the template name, but no instance.

Add DefaultInstance=tty1 to getty@.service, so that when the template
itself is enabled an instance for tty1 is created.

This is useful so that we "systemctl preset-all" can work properly,
because we can operate on getty@.service after finding it, and the right
instance is created.
2014-06-17 02:43:43 +02:00
Lennart Poettering
ccf22d4a10 units: when spawning a getty configure TERM explicitly
This way we can make use of our logic to automatically determine an
appropriate TERM for a specific tty.
2013-12-18 18:21:28 +01:00
Lennart Poettering
82659fd757 core: optionally send SIGHUP in addition to the configured kill signal
This is useful to fake session ends for processes like shells.
2013-07-30 01:54:59 +02:00
Zbigniew Jędrzejewski-Szmek
7aa4fa34f7 units: do not special-case getty@tty1.service installation
Since a long while we can use "systemctl enable getty@tty1.service"
which does the right thing, so there's no need to abuse Alias=
for installation.
2013-07-13 10:00:29 -04:00
Karel Zak
7c1b8f043e units: cleanup agetty command line
* baud rate is optional and unnecessary for virtual terminals
 * term type is optional (default is 'linux' for virtual terminals
   and 'vt102' for serial lines)
 * long options are more user-friendly

... all this is supported since util-linux v2.20 (Aug 2011).
2013-06-04 15:34:44 +02:00
Lennart Poettering
83514a2fa0 units: drop distro specific stuff from units
Since rc-local is now enabled via the SysV compatibility we should only refer
to it based on that too.
2013-01-04 23:26:21 +01:00
Lennart Poettering
00addadd86 unit: link up getty configuration from man page and unit files 2012-11-20 20:10:30 +01:00
Michal Schmidt
2161de72c5 units: agetty overrides TERM
Environment=TERM=... has no effect on agetty who sets it by itself. To
really set TERM to a specified value, it has to be given on the command
line.

https://bugzilla.redhat.com/show_bug.cgi?id=870622
2012-10-29 22:58:40 +01:00
Ramkumar Ramachandra
9c2cd81e0e units: teach m4 scripts in units/ about Debian's rc.local
This makes the behaviour wrt. to rc[-.]local consistent between
various distributions supporting it.
2012-10-28 02:14:41 +02:00
Michal Schmidt
3305d6806d units: avoid redundant VT clearing by agetty
TTYVTDisallocate=yes already clears the VT. agetty does not need to do
it again. Run it with --noclear.

Felix Miata found the double clearing confusing in this bugreport:
https://bugzilla.redhat.com/show_bug.cgi?id=828007
Add a comment explaining what clears the VT.
2012-06-06 11:33:18 +02:00
Lennart Poettering
49dbfa7b2b units: introduce new Documentation= field and make use of it everywhere
This should help making the boot process a bit easier to explore and
understand for the administrator. The simple idea is that "systemctl
status" now shows a link to documentation alongside the other status and
decriptionary information of a service.

This patch adds the necessary fields to all our shipped units if we have
proper documentation for them.
2012-05-21 15:14:51 +02:00
Lennart Poettering
f2b6878955 service: introduce Type=idle and use it for gettys
Type=idle is much like Type=simple, however between the fork() and the
exec() in the child we wait until PID 1 informs us that no jobs are
left.

This is mostly a cosmetic fix to make gettys appear only after all boot
output is finished and complete.

Note that this does not impact the normal job logic as we do not delay
the completion of any jobs. We just delay the invocation of the actual
binary, and only for services that otherwise would be of Type=simple.
2012-04-24 14:42:24 +02:00
Lennart Poettering
8ef58b3efc getty: skip VC gettys if the VC subsystem is not available 2012-04-12 17:31:26 +02:00
Lennart Poettering
88e995fd72 getty: VC devices are always available, we don't need to wait until they show up 2012-04-12 17:29:42 +02:00
Lennart Poettering
5430f7f2bc relicense to LGPLv2.1 (with exceptions)
We finally got the OK from all contributors with non-trivial commits to
relicense systemd from GPL2+ to LGPL2.1+.

Some udev bits continue to be GPL2+ for now, but we are looking into
relicensing them too, to allow free copy/paste of all code within
systemd.

The bits that used to be MIT continue to be MIT.

The big benefit of the relicensing is that closed source code may now
link against libsystemd-login.so and friends.
2012-04-12 00:24:39 +02:00
Lennart Poettering
4771148bb9 units: exclude gettys from isolate requests
gettys are nowadays mostly autospawned and hence usually subject to
being shut down on isolate requests, since they are no dependency of any
other unit. This is a bad idea if the user isolates between
multi-user.graphical and graphical.target, hence exclude them from the
isolation.

This has the effect that gettys no longer cleaned up when
emergency.target is isolated, which might actualy be considered a
feature, even though it is a change from previous behaviour...

Note that the one getty that really matters (the one on tty1) is still
removed when isolating to emergency.target since it conflicts with
emergency.service.
2012-04-11 22:37:48 +02:00
Lennart Poettering
353e12c2f4 service: ignore SIGPIPE by default 2012-02-09 03:18:04 +01:00
Dexter Morgan
6fdae8a6a4 Add Mageia support
This patch adds support for the Mageia Linux distribution:
 http://www.mageia.org/

Mageia is a fork of Mandriva although some divergence has already occured
and thus inclusion of these changes upstream allow us to (hopefully)
migrate more rapidly to the new standard approaches systemd offers.
Indeed, we already use the preferred mechanism of OS identification via
the /etc/os-release file rather than a distro specific variation.

This patch mostly mirrors the patch added previously for Mandriva
support. In addition to those original authors, this patch was mostly
written by Dexter Morgan with help from Colin Guthrie and Eugeni Dodonov.
2011-11-02 02:16:39 +01:00
Lennart Poettering
07bceef2a9 locale: support $LANGUAGE too
$LANGUAGE is a GNU extension that is probably worth supporting, since it
allows specifiying an order of languages.

https://bugs.freedesktop.org/show_bug.cgi?id=40510
2011-08-31 14:10:50 +02:00
Lennart Poettering
d0a522eb31 logind: autospawn gettys when necessary 2011-06-28 00:26:10 +02:00
Lennart Poettering
6ea832a207 exec: hangup/reset/deallocate VTs in gettys
Explicitly disconnect all clients from a VT when a getty starts/finishes
(requires TIOCVHANGUP, available in 2.6.29).

Explicitly deallocate getty VTs in order to flush scrollback buffer.

Explicitly reset terminals to a defined state before spawning getty.
2011-05-18 01:07:36 +02:00
Lennart Poettering
cd25cce98f exec: drop process group kill mode since it has little use and confuses the user 2011-03-29 23:31:38 +02:00
Lennart Poettering
1ead1cad4b man: really fix all LC_MESSAGE to LC_MESSAGES
https://bugs.freedesktop.org/show_bug.cgi?id=35534
2011-03-29 12:12:31 +02:00
Andrey Borzenkov
1de4d79bf5 build-sys: add Mandriva distribution support
This merges several separate patches that I carry as part of
Mandriva systemd RPM. They touch those parts that are very
unlikely to be changed in near future and do not impose any
functionality change for systemd core. I also think it is
useful for troubleshooting to have real distribution name in
system logs, espicially when someone reports problem upstream.

The patch looks bigger than sum of replaced patches because

- previous patches were applied on top of distro=fedora, now
I need to add all those bits for distro=mandriva as well

- part of patch was done as spec file magic, but it seems more
logical to ship all these bits together
2011-03-08 19:47:36 +01:00
53bdb7c186 build-sys: update ALTLinux support
Please apply patch for update ALTLinux support.
2011-02-28 22:10:13 +01:00
Lennart Poettering
aa2e211587 units: synchronize gettys to plymouth even if plymouth is killed by gdm 2011-02-24 02:32:50 +01:00
Lennart Poettering
b7ff1e47da plymouth: ensure we start not a single getty before plymouth is gone because we never know which ttys plymouth still controls 2011-02-21 23:55:17 +01:00
Lennart Poettering
1640944a84 getty: unset locale before execution
On the console indian characters cannot be displayed, hence it is
advisable to disable indian locales on the console, which most
distributions traditionally did from a shell fragment executed post
login. If getty gets started with locale settings passed it would itself
however be translated without the no-indian-on-console fixup applied.

Hence, for now don't pass any locale settings to getty/login, and thus
rely on the classic post-login script fragment to set and fix the
locale.

Eventually we probably want to drop this again since the system locale
should be read and set at one place, and not at multiple, and that one
place should be PID 1.

https://bugzilla.redhat.com/show_bug.cgi?id=663900
2011-01-06 20:38:06 +01:00
Miklos Vajna
6279e1f014 Frugalware: start gettys after local.service 2010-12-16 15:02:19 +01:00
Lennart Poettering
180f90cb13 units: set TERM for gettys again, since they acquire a TTY on their own 2010-11-16 01:54:07 +01:00
Lennart Poettering
1e7ba843da units: delay getty until logins are allowed 2010-11-16 01:25:19 +01:00
Lennart Poettering
e3aa71c38c exec: automatically determine right TERM= setting based on tty name 2010-11-15 23:49:02 +01:00
Lennart Poettering
92ab323c82 units: make use of agetty mandatory 2010-11-14 23:48:20 +01:00
Lennart Poettering
f54409d8b8 units: deal properly with the fact that agetty is called getty on Debian 2010-11-11 00:30:00 +01:00
Kay Sievers
9ed81015f0 getty@.service: switch to agetty as the default 2010-10-29 15:50:09 +02:00
Lennart Poettering
b81884e746 unit: replace StopRetroactively= by BindTo= dependencies
The property StopRetroactively= needs to be per-dependency, not
per-unit, in order to properly express dependencies between .mount units
and its .device and fsck .service units. If the .device unit is
unplugged the mount should go away, but if the fsck process terminates
the .mount should stay.
2010-10-29 00:45:46 +02:00
Andrew Edmunds
858dae181b ubuntu: Treat Ubuntu as a distinct distro in configure.ac etc
Previously Ubuntu was treated as being equivalent to Debian, but the two
distributions require different behaviour in certain places.  This commit does
not change the behaviour of systemd on either distro but it creates a
framework for changes to be introduced by later commits.

The following previously meant "Target is Debian or Ubuntu".
    * configure option "--with-distro=debian"
    * C preprocessor symbol "TARGET_DEBIAN"
    * Automake conditional "TARGET_DEBIAN"
After this commit, all of the above are redefined to mean "Target is Debian"

The following are introduced to mean "Target is Ubuntu".
    * configure option "--with-distro=ubuntu"
    * C preprocessor symbol "TARGET_UBUNTU"
    * Automake conditional "TARGET_UBUNTU"

Most code written for Debian will also be applicable to Ubuntu. An extra
Automake conditional "TARGET_DEBIAN_OR_UBUNTU" is introduced to avoid
duplication of code that would otherwise occur.

This commit updates configure.ac, Makefile.am and distro-specific source files
in line with the above definitions.
2010-10-25 21:09:56 +02:00
Lennart Poettering
c84ed68f30 units: enable utmp for serial gettys too 2010-10-08 18:22:44 +02:00
Lennart Poettering
169c1bda80 service: optionally, create INIT_PROCESS/DEAD_PROCESS entries for a service
This should fix accounting for pam_limits and suchlike.

https://bugzilla.redhat.com/show_bug.cgi?id=636036
2010-10-08 16:07:50 +02:00
Lennart Poettering
525ee6f4a1 service: rename settings for Restart= from 'restart-always' to 'always' and similar 2010-10-05 20:30:44 +02:00
Lennart Poettering
93a45c562a serial: use seperate getty template for serial ttys 2010-08-25 03:09:57 +02:00
Lennart Poettering
9f24a81068 units: make sure getty@xxx.service is always run before gettys.target 2010-08-18 23:12:16 +02:00
Lennart Poettering
61bec80cf3 getty: properly synchronize of tty devices being plugged in 2010-08-10 00:21:25 +02:00