systemd: add system.slice unit
[platform/upstream/dracut.git] / modules.d / 98systemd / module-setup.sh
1 #!/bin/bash
2 # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
3 # ex: ts=8 sw=4 sts=4 et filetype=sh
4
5 check() {
6     [[ $mount_needs ]] && return 1
7     if [[ -x $systemdutildir/systemd ]]; then
8        return 255
9     fi
10
11     return 1
12 }
13
14 depends() {
15     return 0
16 }
17
18 install() {
19     local _mods
20
21 #    SYSTEMD_VERSION=$($systemdutildir/systemd --version | { read a b a; echo $b; })
22 #    if (( $SYSTEMD_VERSION < 198 )); then
23 #        dfatal "systemd version $SYSTEMD_VERSION is too low. Need at least version 198."
24 #        exit 1
25 #    fi
26
27     if strstr "$prefix" "/run/"; then
28         dfatal "systemd does not work with a prefix, which contains \"/run\"!!"
29         exit 1
30     fi
31
32     dracut_install -o \
33         $systemdutildir/systemd \
34         $systemdutildir/systemd-cgroups-agent \
35         $systemdutildir/systemd-shutdown \
36         $systemdutildir/systemd-reply-password \
37         $systemdutildir/systemd-fsck \
38         $systemdutildir/systemd-udevd \
39         $systemdutildir/systemd-journald \
40         $systemdutildir/systemd-sysctl \
41         $systemdutildir/systemd-modules-load \
42         $systemdutildir/system-generators/systemd-fstab-generator \
43         $systemdsystemunitdir/cryptsetup.target \
44         $systemdsystemunitdir/emergency.target \
45         $systemdsystemunitdir/sysinit.target \
46         $systemdsystemunitdir/basic.target \
47         $systemdsystemunitdir/halt.target \
48         $systemdsystemunitdir/kexec.target \
49         $systemdsystemunitdir/initrd.target \
50         $systemdsystemunitdir/initrd-fs.target \
51         $systemdsystemunitdir/initrd-root-fs.target \
52         $systemdsystemunitdir/local-fs.target \
53         $systemdsystemunitdir/local-fs-pre.target \
54         $systemdsystemunitdir/remote-fs.target \
55         $systemdsystemunitdir/remote-fs-pre.target \
56         $systemdsystemunitdir/network.target \
57         $systemdsystemunitdir/nss-lookup.target \
58         $systemdsystemunitdir/nss-user-lookup.target \
59         $systemdsystemunitdir/poweroff.target \
60         $systemdsystemunitdir/reboot.target \
61         $systemdsystemunitdir/rescue.target \
62         $systemdsystemunitdir/rpcbind.target \
63         $systemdsystemunitdir/shutdown.target \
64         $systemdsystemunitdir/final.target \
65         $systemdsystemunitdir/sigpwr.target \
66         $systemdsystemunitdir/sockets.target \
67         $systemdsystemunitdir/swap.target \
68         $systemdsystemunitdir/timers.target \
69         $systemdsystemunitdir/paths.target \
70         $systemdsystemunitdir/systemd-ask-password-console.path \
71         $systemdsystemunitdir/systemd-udevd-control.socket \
72         $systemdsystemunitdir/systemd-udevd-kernel.socket \
73         $systemdsystemunitdir/systemd-ask-password-plymouth.path \
74         $systemdsystemunitdir/systemd-journald.socket \
75         $systemdsystemunitdir/systemd-ask-password-console.service \
76         $systemdsystemunitdir/systemd-modules-load.service \
77         $systemdsystemunitdir/systemd-halt.service \
78         $systemdsystemunitdir/systemd-poweroff.service \
79         $systemdsystemunitdir/systemd-reboot.service \
80         $systemdsystemunitdir/systemd-kexec.service \
81         $systemdsystemunitdir/systemd-fsck@.service \
82         $systemdsystemunitdir/systemd-udevd.service \
83         $systemdsystemunitdir/systemd-udev-trigger.service \
84         $systemdsystemunitdir/systemd-udev-settle.service \
85         $systemdsystemunitdir/systemd-ask-password-plymouth.service \
86         $systemdsystemunitdir/systemd-journald.service \
87         $systemdsystemunitdir/systemd-vconsole-setup.service \
88         $systemdsystemunitdir/systemd-random-seed-load.service \
89         $systemdsystemunitdir/sysinit.target.wants/systemd-modules-load.service \
90         $systemdsystemunitdir/sysinit.target.wants/systemd-ask-password-console.path \
91         $systemdsystemunitdir/sysinit.target.wants/systemd-journald.service \
92         $systemdsystemunitdir/sockets.target.wants/systemd-udevd-control.socket \
93         $systemdsystemunitdir/sockets.target.wants/systemd-udevd-kernel.socket \
94         $systemdsystemunitdir/sockets.target.wants/systemd-journald.socket \
95         $systemdsystemunitdir/sysinit.target.wants/systemd-udevd.service \
96         $systemdsystemunitdir/sysinit.target.wants/systemd-udev-trigger.service \
97         \
98         $systemdsystemunitdir/ctrl-alt-del.target \
99         $systemdsystemunitdir/syslog.socket \
100         $systemdsystemunitdir/initrd-switch-root.target \
101         $systemdsystemunitdir/initrd-switch-root.service \
102         $systemdsystemunitdir/initrd-cleanup.service \
103         $systemdsystemunitdir/initrd-udevadm-cleanup-db.service \
104         $systemdsystemunitdir/initrd-parse-etc.service \
105         \
106         $systemdsystemunitdir/umount.target \
107         \
108         $systemdsystemunitdir/system.slice
109         \
110         journalctl systemctl echo swapoff systemd-cgls
111
112     dracut_install -o \
113         /usr/lib/modules-load.d/*.conf \
114         /usr/lib/sysctl.d/*.conf
115
116     modules_load_get() {
117         local _line i
118         for i in "$1"/*.conf; do
119             [[ -f $i ]] || continue
120             while read _line; do
121                 case $_line in
122                     \#*)
123                         ;;
124                     \;*)
125                         ;;
126                     *)
127                         echo $_line
128                 esac
129             done < "$i"
130         done
131     }
132
133     _mods=$(modules_load_get /usr/lib/modules-load.d)
134     [[ $_mods ]] && instmods $_mods
135
136     if [[ $hostonly ]]; then
137         dracut_install -o \
138             /etc/systemd/journald.conf \
139             /etc/systemd/system.conf \
140             /etc/hostname \
141             /etc/machine-id \
142             /etc/vconsole.conf \
143             /etc/locale.conf \
144             /etc/modules-load.d/*.conf \
145             /etc/sysctl.d/*.conf \
146             /etc/sysctl.conf
147
148         _mods=$(modules_load_get /etc/modules-load.d)
149         [[ $_mods ]] && instmods $_mods
150     else
151         if ! [[ -e "$initdir/etc/machine-id" ]]; then
152             > "$initdir/etc/machine-id"
153         fi
154     fi
155
156     # install adm user/group for journald
157     dracut_install nologin
158     egrep '^systemd-journal:' "$initdir/etc/passwd" 2>/dev/null >> "$initdir/etc/passwd"
159     egrep '^systemd-journal:' /etc/group >> "$initdir/etc/group"
160
161     ln -fs $systemdutildir/systemd "$initdir/init"
162     ln -fs $systemdutildir/systemd "$initdir/sbin/init"
163
164     inst_script "$moddir/dracut-emergency.sh" /bin/dracut-emergency
165     inst_simple "$moddir/emergency.service" ${systemdsystemunitdir}/emergency.service
166     inst_simple "$moddir/dracut-emergency.service" ${systemdsystemunitdir}/dracut-emergency.service
167     inst_simple "$moddir/emergency.service" ${systemdsystemunitdir}/rescue.service
168
169     ln -fs initrd.target "${initdir}${systemdsystemunitdir}/default.target"
170
171     inst_script "$moddir/dracut-cmdline.sh" /bin/dracut-cmdline
172     inst_script "$moddir/dracut-pre-udev.sh" /bin/dracut-pre-udev
173     inst_script "$moddir/dracut-pre-trigger.sh" /bin/dracut-pre-trigger
174     inst_script "$moddir/dracut-initqueue.sh" /bin/dracut-initqueue
175     inst_script "$moddir/dracut-pre-mount.sh" /bin/dracut-pre-mount
176     inst_script "$moddir/dracut-mount.sh" /bin/dracut-mount
177     inst_script "$moddir/dracut-pre-pivot.sh" /bin/dracut-pre-pivot
178
179     inst_rules 99-systemd.rules
180
181     for i in \
182         emergency.target \
183         dracut-emergency.service \
184         rescue.service \
185         systemd-ask-password-console.service \
186         systemd-ask-password-plymouth.service \
187         ; do
188         mkdir -p "${initdir}${systemdsystemunitdir}/${i}.wants"
189         ln_r "${systemdsystemunitdir}/systemd-vconsole-setup.service" \
190             "${systemdsystemunitdir}/${i}.wants/systemd-vconsole-setup.service"
191     done
192
193     mkdir -p "${initdir}/$systemdsystemunitdir/initrd.target.wants"
194     for i in \
195         dracut-cmdline.service \
196         dracut-initqueue.service \
197         dracut-mount.service \
198         dracut-pre-mount.service \
199         dracut-pre-pivot.service \
200         dracut-pre-trigger.service \
201         dracut-pre-udev.service \
202         ; do
203         inst_simple "$moddir/${i}" "$systemdsystemunitdir/${i}"
204         ln_r "$systemdsystemunitdir/${i}" "$systemdsystemunitdir/initrd.target.wants/${i}"
205     done
206
207     mkdir -p "$initdir/etc/systemd"
208     # turn off RateLimit for journal
209     {
210         echo "[Journal]"
211         echo "RateLimitInterval=0"
212         echo "RateLimitBurst=0"
213     } >> "$initdir/etc/systemd/journald.conf"
214
215 }
216