]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
dracut: Always start mdraids
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 5 Sep 2014 12:38:52 +0000 (14:38 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 5 Sep 2014 12:38:52 +0000 (14:38 +0200)
lfs/dracut
src/patches/dracut-038-always-enable-mdraid.patch [new file with mode: 0644]

index ec5ff8f339798bb806082770ec8c54bfa6dc8965..fef3ad77d3b074621345923fc123869f6d0da997 100644 (file)
@@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dracut-038-always-enable-mdraid.patch
 
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install sbindir=/sbin sysconfdir=/etc
diff --git a/src/patches/dracut-038-always-enable-mdraid.patch b/src/patches/dracut-038-always-enable-mdraid.patch
new file mode 100644 (file)
index 0000000..a65e59a
--- /dev/null
@@ -0,0 +1,55 @@
+diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh
+index dd7bda2..7bc944c 100755
+--- a/modules.d/90mdraid/parse-md.sh
++++ b/modules.d/90mdraid/parse-md.sh
+@@ -4,32 +4,26 @@
+ MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
+-if ( ! [ -n "$MD_UUID" ] && ! getargbool 0 rd.auto ) || ! getargbool 1 rd.md -d -n rd_NO_MD; then
+-    info "rd.md=0: removing MD RAID activation"
+-    udevproperty rd_NO_MD=1
+-else
+-    # rewrite the md rules to only process the specified raid array
+-    if [ -n "$MD_UUID" ]; then
+-        for f in /etc/udev/rules.d/65-md-incremental*.rules; do
+-            [ -e "$f" ] || continue
+-            while read line; do
+-                if [ "${line%%UUID CHECK}" != "$line" ]; then
+-                    printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
+-                    for uuid in $MD_UUID; do
+-                        printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid
+-                    done;
+-                    printf 'GOTO="md_end"\n'
+-                    printf 'LABEL="md_uuid_ok"\n'
+-                else
+-                    echo "$line"
+-                fi
+-            done < "${f}" > "${f}.new"
+-            mv "${f}.new" "$f"
+-        done
+-    fi
++# rewrite the md rules to only process the specified raid array
++if [ -n "$MD_UUID" ]; then
++    for f in /etc/udev/rules.d/65-md-incremental*.rules; do
++        [ -e "$f" ] || continue
++        while read line; do
++            if [ "${line%%UUID CHECK}" != "$line" ]; then
++                printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
++                for uuid in $MD_UUID; do
++                    printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid
++                done;
++                printf 'GOTO="md_end"\n'
++                printf 'LABEL="md_uuid_ok"\n'
++            else
++                echo "$line"
++            fi
++        done < "${f}" > "${f}.new"
++        mv "${f}.new" "$f"
++    done
+ fi
+-
+ if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
+     udevproperty rd_MDADMCONF=1
+     rm -f -- $hookdir/pre-pivot/*mdraid-cleanup.sh