]> git.ipfire.org Git - thirdparty/dracut.git/blob - modules.d/98systemd/dracut-pre-udev.sh
systemd: changes for new initrd services
[thirdparty/dracut.git] / modules.d / 98systemd / dracut-pre-udev.sh
1 #!/bin/sh
2 # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
3 # ex: ts=8 sw=4 sts=4 et filetype=sh
4 export DRACUT_SYSTEMD=1
5 if [ -f /dracut-state.sh ]; then
6 . /dracut-state.sh 2>/dev/null
7 fi
8 type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
9
10 source_conf /etc/conf.d
11
12 make_trace_mem "hook pre-udev" '1:shortmem' '2+:mem' '3+:slab'
13 # pre pivot scripts are sourced just before we doing cleanup and switch over
14 # to the new root.
15 getarg 'rd.break=pre-udev' 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Break pre-udev"
16 source_hook pre-udev
17
18 _modprobe_d=/etc/modprobe.d
19 if [ -d /usr/lib/modprobe.d ] ; then
20 _modprobe_d=/usr/lib/modprobe.d
21 elif [ -d /lib/modprobe.d ] ; then
22 _modprobe_d=/lib/modprobe.d
23 elif [ ! -d $_modprobe_d ] ; then
24 mkdir -p $_modprobe_d
25 fi
26
27 for i in $(getargs rd.driver.pre -d rdloaddriver=); do
28 (
29 IFS=,
30 for p in $i; do
31 modprobe $p 2>&1 | vinfo
32 done
33 )
34 done
35
36
37 [ -d /etc/modprobe.d ] || mkdir -p /etc/modprobe.d
38
39 for i in $(getargs rd.driver.blacklist -d rdblacklist=); do
40 (
41 IFS=,
42 for p in $i; do
43 echo "blacklist $p" >> $_modprobe_d/initramfsblacklist.conf
44 done
45 )
46 done
47
48 for p in $(getargs rd.driver.post -d rdinsmodpost=); do
49 echo "blacklist $p" >> $_modprobe_d/initramfsblacklist.conf
50 _do_insmodpost=1
51 done
52
53 [ -n "$_do_insmodpost" ] && initqueue --settled --unique --onetime insmodpost.sh
54 unset _do_insmodpost _modprobe_d
55 unset i
56
57 export -p > /dracut-state.sh
58 service="${0##*/}"
59 cp "/etc/systemd/system/${service%.sh}.service" /run/systemd/system/
60 exit 0