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
|
#!/bin/sh
sd_booted() {
[ -d /run/systemd/system ]
}
add_privs() {
if ! setcap "$2" "$1" 2>/dev/null; then
echo "==> Warning: setcap failed, falling back to setuid root on /$1"
chmod u+s "$1"
fi
}
add_journal_acls() {
# ignore errors, since the filesystem might not support ACLs
setfacl -Rnm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/ 2>/dev/null
:
}
maybe_reexec() {
# don't reexec on 209-1 upgrade due to large infrastructural changes.
if [ "$(vercmp 209-1 "$2")" -eq 1 ]; then
echo ':: systemd has not been reexecuted. It is recommended that you'
echo ' reboot at your earliest convenience.'
return
fi
if sd_booted; then
systemctl --system daemon-reexec
fi
}
_dir_empty() {
set -- "$1"/*
[ ! -e "$1" ] && [ ! -L "$1" ]
}
post_common() {
systemd-machine-id-setup
add_privs usr/bin/systemd-detect-virt 'cap_dac_override,cap_sys_ptrace+ep'
udevadm hwdb --update
journalctl --update-catalog
}
_208_changes() {
chown root:systemd-journal var/log/journal
chmod 2755 var/log/journal
if [ -e var/lib/backlight ] && [ ! -e var/lib/systemd/backlight ]; then
mv -T var/lib/backlight var/lib/systemd/backlight
fi
if [ -e var/lib/random-seed ] && [ ! -e var/lib/systemd/random-seed ]; then
mv -T var/lib/random-seed var/lib/systemd/random-seed
fi
}
_209_changes() {
# attempt to preserve existing behavior
local old_rule=etc/udev/rules.d/80-net-name-slot.rules
local new_rule=etc/udev/rules.d/80-net-setup-link.rules
echo ":: Network device naming is now controlled by udev's net_setup_link"
echo " builtin. Refer to the systemd.link manpage for a full description."
# not clear what action we can take here, so don't do anything
[[ -e $new_rule ]] && return 0
# rename the old rule to the new one so that we preserve the user's
# existing option.
if [[ -e $old_rule ]]; then
printf ':: Renaming %s to %s in order\n' "${old_rule##*/}" "${new_rule##*/}"
printf ' to preserve existing network naming behavior.\n'
mv -v "$old_rule" "$new_rule"
else
echo ':: No changes have been made to your network naming configuration.'
echo ' Interfaces should continue to maintain the same names.'
fi
}
_210_changes() {
if sd_booted; then
# If /etc/systemd/network is non-empty, then this is a 209 user who used
# networkd. Re-enable it for them.
if ! _dir_empty etc/systemd/network; then
systemctl enable systemd-networkd
fi
fi
}
post_install() {
post_common "$@"
add_journal_acls
# enable getty@tty1 by default, but don't track the file
systemctl enable getty@tty1.service
echo ":: Append 'init=/usr/lib/systemd/systemd' to your kernel command line in your"
echo " bootloader to replace sysvinit with systemd, or install systemd-sysvcompat"
}
post_upgrade() {
post_common "$@"
maybe_reexec "$@"
if [ "$(vercmp 204-1 "$2")" -eq 1 ]; then
printf '==> The /bin/systemd symlink has been removed. Any references in your\n'
printf ' bootloader (or elsewhere) must be updated to /usr/lib/systemd/systemd.\n'
fi
if [ "$(vercmp 205-1 "$2")" -eq 1 ]; then
printf '==> systemd 205 restructures the cgroup hierarchy and changes internal\n'
printf ' protocols. You should reboot at your earliest convenience.\n'
fi
if [ "$(vercmp 206-1 "$2")" -eq 1 ]; then
printf '==> The "timestamp" hook for mkinitcpio no longer exists. If you used\n'
printf ' this hook, you must remove it from /etc/mkinitcpio.conf. A "systemd"\n'
printf ' hook has been added which provides this functionality, and more.\n'
fi
if [ "$(vercmp 208-1 "$2")" -eq 1 ]; then
_208_changes
fi
if [ "$(vercmp 208-8 "$2")" -eq 1 ]; then
add_journal_acls
fi
if [ "$(vercmp 209-1 "$2")" -eq 1 ]; then
_209_changes
fi
if [ "$(vercmp 210-1 "$2")" -eq 1 ]; then
_210_changes
fi
}
# vim:set ts=2 sw=2 et:
|