]> git.ipfire.org Git - thirdparty/dracut.git/blob - modules.d/95dasd_rules/module-setup.sh
Fix boot with `fips` without a value
[thirdparty/dracut.git] / modules.d / 95dasd_rules / module-setup.sh
1 #!/bin/bash
2
3 # called by dracut
4 cmdline() {
5 is_dasd() {
6 local _dev=$1
7 local _devpath=$(cd -P /sys/dev/block/$_dev ; echo $PWD)
8
9 [ "${_devpath#*/dasd}" == "$_devpath" ] && return 1
10 _ccw="${_devpath%%/block/*}"
11 echo "rd.dasd=${_ccw##*/}"
12 return 0
13 }
14 [[ $hostonly ]] || [[ $mount_needs ]] && {
15 for_each_host_dev_and_slaves_all is_dasd || return 255
16 } | sort | uniq
17 }
18
19 # called by dracut
20 check() {
21 local _arch=$(uname -m)
22 local found=0
23 local bdev
24 [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
25 require_binaries /usr/lib/udev/collect || return 1
26
27 [[ $hostonly ]] || [[ $mount_needs ]] && {
28 for bdev in /sys/block/* ; do
29 case "${bdev##*/}" in
30 dasd*)
31 found=$(($found+1));
32 break;
33 esac
34 done
35 [ $found -eq 0 ] && return 255
36 }
37 return 0
38 }
39
40 # called by dracut
41 depends() {
42 echo 'dasd_mod'
43 return 0
44 }
45
46 # called by dracut
47 install() {
48 inst_multiple /usr/lib/udev/collect
49 inst_hook cmdline 30 "$moddir/parse-dasd.sh"
50 if [[ $hostonly_cmdline == "yes" ]] ; then
51 local _dasd=$(cmdline)
52 [[ $_dasd ]] && printf "%s\n" "$_dasd" >> "${initdir}/etc/cmdline.d/95dasd.conf"
53 fi
54 if [[ $hostonly ]] ; then
55 inst_rules_wildcard 51-dasd-*.rules
56 inst_rules_wildcard 41-s390x-dasd-*.rules
57 mark_hostonly /etc/udev/rules.d/51-dasd-*.rules
58 mark_hostonly /etc/udev/rules.d/41-s390x-dasd-*.rules
59 fi
60 inst_rules 59-dasd.rules
61 }