2 # we really need to use `expr substr` with dash
3 # shellcheck disable=SC2003
5 MD_UUID
=$
(getargs rd.md.uuid
-d rd_MD_UUID
=)
7 MD_UUID
=$
(str_replace
"$MD_UUID" "-" "")
8 MD_UUID
=$
(str_replace
"$MD_UUID" ":" "")
10 if { [ -z "$MD_UUID" ] && ! getargbool
0 rd.auto
; } ||
! getargbool
1 rd.md
-d -n rd_NO_MD
; then
11 info
"rd.md=0: removing MD RAID activation"
12 udevproperty rd_NO_MD
=1
14 # rewrite the md rules to only process the specified raid array
15 if [ -n "$MD_UUID" ]; then
16 for f
in /etc
/udev
/rules.d
/65-md-incremental*.rules
; do
17 [ -e "$f" ] ||
continue
18 while read -r line ||
[ -n "$line" ]; do
19 if [ "${line%%UUID CHECK}" != "$line" ]; then
20 for uuid
in $MD_UUID; do
21 printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8)-$(expr substr "$uuid" 9 4)-$(expr substr "$uuid" 13 4)-$(expr substr "$uuid" 17 4)-$(expr substr "$uuid" 21 12)"
23 # shellcheck disable=SC2016
24 printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
25 for uuid
in $MD_UUID; do
26 printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
28 printf 'GOTO="md_end"\n'
29 printf 'LABEL="md_uuid_ok"\n'
33 done < "${f}" > "${f}.new"
36 for uuid
in $MD_UUID; do
37 uuid
="$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
38 wait_for_dev
"/dev/disk/by-id/md-uuid-${uuid}"
43 if [ -e /etc
/mdadm.conf
] && getargbool
1 rd.md.conf
-d -n rd_NO_MDADMCONF
; then
44 udevproperty rd_MDADMCONF
=1
45 rm -f -- "$hookdir"/pre-pivot
/*mdraid-cleanup.sh
48 if ! getargbool
1 rd.md.conf
-d -n rd_NO_MDADMCONF
; then
49 rm -f -- /etc
/mdadm
/mdadm.conf
/etc
/mdadm.conf
50 ln -s "$(command -v mdraid-cleanup)" "$hookdir"/pre-pivot
/31-mdraid-cleanup.sh
2> /dev
/null
53 # noiswmd nodmraid for anaconda / rc.sysinit compatibility
54 # note nodmraid really means nobiosraid, so we don't want MDIMSM then either
55 if ! getargbool
1 rd.md.imsm
-d -n rd_NO_MDIMSM
-n noiswmd
-n nodmraid
; then
56 info
"no MD RAID for imsm/isw raids"
57 udevproperty rd_NO_MDIMSM
=1
60 # same thing with ddf containers
61 if ! getargbool
1 rd.md.ddf
-n rd_NO_MDDDF
-n noddfmd
-n nodmraid
; then
62 info
"no MD RAID for SNIA ddf raids"
63 udevproperty rd_NO_MDDDF
=1