From e688507ddf5b39b7bb900bae0c6db4d53bf8451d Mon Sep 17 00:00:00 2001 From: Mike Westerhof Date: Fri, 29 Aug 2008 17:00:48 +0000 Subject: SlugOS 5.0: enable mdraid support --- packages/slugos-init/files/boot/disk | 14 +++++++++++++- packages/slugos-init/files/turnup | 23 +++++++++++++++++++++-- packages/slugos-init/slugos-init_5.0.bb | 2 +- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/packages/slugos-init/files/boot/disk b/packages/slugos-init/files/boot/disk index 63370ce340..34c002ba0b 100644 --- a/packages/slugos-init/files/boot/disk +++ b/packages/slugos-init/files/boot/disk @@ -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]" diff --git a/packages/slugos-init/files/turnup b/packages/slugos-init/files/turnup index 2bbc9024ef..51b801dfea 100644 --- a/packages/slugos-init/files/turnup +++ b/packages/slugos-init/files/turnup @@ -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 diff --git a/packages/slugos-init/slugos-init_5.0.bb b/packages/slugos-init/slugos-init_5.0.bb index 9b7c2cd8d0..4babf89d61 100644 --- a/packages/slugos-init/slugos-init_5.0.bb +++ b/packages/slugos-init/slugos-init_5.0.bb @@ -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 \ -- cgit v1.2.3