diff options
Diffstat (limited to 'packages/slugos-init/files')
-rw-r--r-- | packages/slugos-init/files/boot/disk | 14 | ||||
-rw-r--r-- | packages/slugos-init/files/turnup | 23 |
2 files changed, 34 insertions, 3 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 |