SlugOS 5.0: enable mdraid support
authorMike Westerhof <mwester@dls.net>
Fri, 29 Aug 2008 17:00:48 +0000 (17:00 +0000)
committerMike Westerhof <mwester@dls.net>
Fri, 29 Aug 2008 17:00:48 +0000 (17:00 +0000)
packages/slugos-init/files/boot/disk
packages/slugos-init/files/turnup
packages/slugos-init/slugos-init_5.0.bb

index 63370ce..34c002b 100644 (file)
@@ -24,9 +24,21 @@ then
        # waiting for disk
        if test "$sleep" -gt 0
        then
-               echo "Waiting $sleep seconds for disk"
+               echo "boot: waiting $sleep seconds for disk"
                sleep "$sleep"
        fi
+       # Attempt to assemble the RAID if necessary
+       if (echo $device | grep -q "^/dev/md")
+       then
+               if test -n "$MDUUID"
+               then
+                       echo "boot: assembling RAID array (UUID)"
+                       mdadm -Acpartitions --auto=md --uuid="$MDUUID" $device
+               else
+                       echo "boot: assembling RAID array (config file)"
+                       mdadm -As --auto=md $device
+               fi
+       fi
        #
        # fire the boot
        echo "boot: rootfs: mount $* $device [$UUID]"
index 2bbc902..51b801d 100644 (file)
@@ -274,7 +274,13 @@ setup_dev() {
        #       /dev/null
        # syslog, and maybe other things, only work if fd 1 is valid, therefore
        # we must create these devices here...
-       makedevs --root="$1" --devtable="$2"
+       # (if makedevs is a symlink, it's the busybox version, different syntax)
+       if [ -h /sbin/makedevs ]
+       then
+               makedevs -d "$2" "$1"
+       else
+               makedevs --root="$1" --devtable="$2"
+       fi
        :>"$1"/dev/.noram
        return 0
 }
@@ -290,7 +296,13 @@ setup_bootdev() {
        }
        # NOTE: this fails silently with 0 return code(!) when a directory
        # does not exist yet things are created within it.
-       makedevs -r "$1" -D "$2"
+       # (if makedevs is a symlink, it's the busybox version, different syntax)
+       if [ -h /sbin/makedevs ]
+       then
+               makedevs -d "$2" "$1"
+       else
+               makedevs -r "$1" -D "$2"
+       fi
 }
 
 #
@@ -432,6 +444,7 @@ boot_rootfs() {
        sleep="$3"
        device="$4"
        uuid=
+       mduuid=
 
        # test this first as the test does not depend on the correctness
        # of the other arguments
@@ -452,6 +465,11 @@ boot_rootfs() {
                        return 1
                }
                uuid="$3"
+               if (echo "$device" | grep -q '^/dev/md')
+               then
+                       # FIXME: should use awk to do the below extraction
+                       mduuid=`mdadm --detail --brief "$device" | sed 's/^.*UUID=//'`
+               fi
                shift 3;;
        nfs)    shift 2;;
        flash)  ;;
@@ -493,6 +511,7 @@ boot_rootfs() {
                        echo 'leds beep'
                        test "$sleep" -gt 0 && echo -n "sleep='$sleep' "
                        test -n "$uuid" && echo -n "UUID='$uuid' "
+                       test -n "$mduuid" && echo -n "MDUUID='$mduuid' "
                        echo -n "exec '/boot/$type' '$device'"
                        for opt in "$@"
                        do
index 9b7c2cd..4babf89 100644 (file)
@@ -4,7 +4,7 @@ PRIORITY = "required"
 LICENSE = "GPL"
 DEPENDS = "base-files devio"
 RDEPENDS = "busybox devio"
-PR = "r1.2"
+PR = "r2"
 
 SRC_URI = "file://boot/flash \
           file://boot/disk \