summaryrefslogtreecommitdiffstats
path: root/debian/systemd.postinst
blob: d70658894d328bbb6cc2e87fc3141f68617b57bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/sh

set -e

_systemctl() {
    if [ -d /run/systemd/system ]; then
        systemctl "$@"
    fi
}

_update_catalog() {
    journalctl --update-catalog || true
}

# Update Message Catalogs database in response to dpkg trigger
if [ "$1" = "triggered" ]; then
    _update_catalog
    exit 0
fi

# Enable getty and remote-fs.target by default on new installs
if [ -z "$2" ]; then
    systemctl enable getty@tty1.service || true
    systemctl enable remote-fs.target || true
fi

# Enable systemd-pstore by default on new installs and upgrades, see #952767
if dpkg --compare-versions "$2" lt "245.4-4~"; then
    systemctl enable systemd-pstore.service || true
fi

# Do a one-time migration of the local time setting
if [ -z "$2" ]; then
    if [ -f /etc/default/rcS ]; then
        . /etc/default/rcS
    fi
    if [ "$UTC" = "no" ] && [ ! -e /etc/adjtime ]; then
        printf "0.0 0 0.0\n0\nLOCAL\n" > /etc/adjtime
    fi
fi

# Do a one-time migration of the TMPTIME setting
if [ -z "$2" ]; then
    if [ -f /etc/default/rcS ]; then
        . /etc/default/rcS
    fi
    if [ ! -e /etc/tmpfiles.d/tmp.conf ]; then
        case "$TMPTIME" in
            -*|infinite|infinity)
                cat > /etc/tmpfiles.d/tmp.conf <<EOF
# Avoid clearing /tmp by shipping an empty /etc/tmpfiles.d/tmp.conf file
# which overrides /usr/lib/tmpfiles.d/tmp.conf.
# This file was automatically created because of local modifications in
# /etc/default/rcS where TMPTIME was set to infinite.
EOF
                ;;
        esac
    fi
fi

# Do a one-time migration of the RAMTMP setting
if [ -z "$2" ]; then
    if [ -f /etc/default/rcS ]; then
        . /etc/default/rcS
    fi
    if [ -f /etc/default/tmpfs ]; then
        . /etc/default/tmpfs
    fi
    if [ "$RAMTMP" = "yes" ]; then
        # systemctl enable will work even when systemd is not the active PID 1.
        if [ ! -e /etc/systemd/system/tmp.mount ]; then
            cp /usr/share/systemd/tmp.mount /etc/systemd/system/tmp.mount
            systemctl enable tmp.mount || true
        fi
    fi
fi

# Create /etc/machine-id
systemd-machine-id-setup

# Setup system users and groups
addgroup --quiet --system systemd-journal

adduser --quiet --system --group --no-create-home --home /run/systemd \
    --gecos "systemd Network Management" systemd-network
adduser --quiet --system --group --no-create-home --home /run/systemd \
    --gecos "systemd Resolver" systemd-resolve

# Enable persistent journal, in auto-mode, by default on new installs and upgrades
if dpkg --compare-versions "$2" lt "244.1-2~"; then
    mkdir -p /var/log/journal
    # Applying ACLs requires a mounted /proc and systemd-tmpfiles will fail if
    # /proc is not available. Skip systemd-tmpfiles in this case. This should
    # be fine, as this typically means we are inside a chroot and systemd is
    # not currently active. The permissions will be applied on the next boot.
    # https://github.com/systemd/systemd/issues/14745
    if mountpoint -q /proc; then
        systemd-tmpfiles --create --prefix /var/log/journal
    fi
fi

# Initial update of the Message Catalogs database
_update_catalog

if [ -n "$2" ]; then
    _systemctl daemon-reexec || true
    # don't restart logind; this can be done again once this gets implemented:
    # https://github.com/systemd/systemd/issues/1163
    if dpkg --compare-versions "$2" lt-nl "246.2-2~"; then
        # the socket configuration changed
        _systemctl stop systemd-networkd.socket || true
    fi
    _systemctl try-restart systemd-networkd.service || true
    _systemctl try-restart systemd-resolved.service || true
    _systemctl try-restart systemd-journald.service || true
fi

if dpkg --compare-versions "$2" lt-nl "235-3~"; then
    # systemd-bus-proxyd got dropped before stretch, and never created any file
    deluser --system systemd-bus-proxy || true
fi

if dpkg --compare-versions "$2" lt-nl "236-1~"; then
    # Clean up old /var/lib/systemd/clock on upgrade.
    # The clock file used by systemd-timesyncd is now stored in
    # StateDirectory=systemd/timesync.
    rm -f /var/lib/systemd/clock
fi

if dpkg --compare-versions "$2" lt-nl "239-12~"; then
    # clean up bogus "nobody" group from #912525; ensure that it's a system group
    if getent group nobody >/dev/null; then
        delgroup --system nobody || true
    fi
fi

if dpkg --compare-versions "$2" lt-nl "245.4-4~"; then
    # systemd-pstore.service is now enabled via sysinit.target
    rm -f /etc/systemd/system/systemd-remount-fs.service.wants/systemd-pstore.service
    rmdir --ignore-fail-on-non-empty /etc/systemd/system/systemd-remount-fs.service.wants 2> /dev/null || true
fi

if dpkg --compare-versions "$2" lt-nl "245.4-5~"; then
    # Clean up removed ondemand service
    rm -f /etc/systemd/system/multi-user.target.wants/ondemand.service
fi

#DEBHELPER#