From: Michael Prokop Date: Wed, 27 Aug 2008 00:41:35 +0000 (+0200) Subject: Initial support for SW-RAID X-Git-Tag: 0.18~19 X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=commitdiff_plain;h=301721cec809fe020147a0c999e593ee81bbb98e Initial support for SW-RAID --- diff --git a/debian/changelog b/debian/changelog index d4c9ebf..c1e2351 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,7 @@ grml-debootstrap (0.18) unstable; urgency=low The "development sponsored by Sipwise GmbH" release. * Provide interactive configuration dialog. + * Initial support for SW-RAID. * Use stages based on target information, this gives us the possibility to run multiple instance of grml-debootstrap. [Testing: issue510] @@ -13,7 +14,7 @@ grml-debootstrap (0.18) unstable; urgency=low installation. * Setting password via passwd does not work, use chpaswd instead. - -- Michael Prokop Tue, 26 Aug 2008 20:59:35 +0200 + -- Michael Prokop Wed, 27 Aug 2008 02:41:08 +0200 grml-debootstrap (0.17) unstable; urgency=low diff --git a/grml-debootstrap b/grml-debootstrap index ac188e1..16e1e2d 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -4,7 +4,7 @@ # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Wed Aug 27 01:46:13 CEST 2008 [mika] +# Latest change: Wed Aug 27 02:41:00 CEST 2008 [mika] ################################################################################ # http://www.debian.org/releases/stable/i386/index.html.en @@ -272,26 +272,90 @@ grubdevice() { echo "$tmp_drive" ;; *) # we expect something like 'hd0,0' - echo "$tmp_drive" | sed "s%$%,`expr $tmp_part - 1`%" + echo "$tmp_drive" | sed "s%$%,`expr $tmp_part - 1`%" # FIXME => md0 ;; esac } # }}} +# software raid setup {{{ +config_swraid_setup() +{ +TMPFILE=$(mktemp) +RAIDLEVEL=$(dialog --stdout --title "$PN" --default-item raid1 \ + --menu "Which RAID level do you want to use?" 0 0 0 \ + raid1 "Software RAID level 1" \ + raid5 "Software RAID level 5") +[ $? -eq 0 ] || bailout 20 + +MD_LIST=$(for i in $(seq 0 9) ; do + awk '{print $4}' /proc/partitions | grep md$i /proc/partitions || \ + echo "/dev/md$i /dev/md$i" + done) + +TARGET=$(dialog --stdout --title "$PN" --default-item /dev/md0 \ +--menu "Which device do you want to use for ${RAIDLEVEL}? + +Notice: activated devices will not be listed for security reasons. Anyway, please make sure the selected device is not in use already!" 0 0 0 \ +$MD_LIST) +[ $? -eq 0 ] || bailout 20 + +AVAILABLE_PARTITIONS=$(LANG=C fdisk -l 2>/dev/null | \ + sed 's/*//' | \ + grep -v 'Extended$' | \ + gawk -v num=0 -v ORS=' ' '/^\/dev\// {print $1}') +[ -n "$AVAILABLE_PARTITIONS" ] || echo "FIXME: no partitions available?" +PARTITION_LIST=$(for i in $(echo $AVAILABLE_PARTITIONS) ; do echo "$i $i off" ; done) + +dialog --title "$PN" \ + --single-quoted \ + --checklist "Please select the partitions you would like to use for your $RAIDLEVEL on ${TARGET}:" 0 0 0 \ + $PARTITION_LIST 2>$TMPFILE +RETVAL=$? +SELECTED_PARTITIONS=$(cat $TMPFILE) + +NUM_PARTITIONS=0 +for i in $(cat $TMPFILE) ; do + NUM_PARTITIONS=$(($NUM_PARTITIONS+1)) +done + +echo " +Debug: + +mdadm --create --verbose $TARGET --level=$RAIDLEVEL + --raid-devices=$NUM_PARTITIONS $SELECTED_PARTITIONS +" +} + +prompt_for_swraid() +{ +if dialog --stdout --title "$PN" \ + --defaultno --yesno "Do you want to configure Software RAID? + +Notice: currently only RAID levels 1 and 5 are +supported by ${PN}. Configuration will be +take place using mdadm." 0 0 ; then + config_swraid_setup +fi +} +# }}} + # interactive mode {{{ interactive_mode() { welcome_dialog - prompt_for_target + + prompt_for_swraid + + # do not prompt for partition dialog if swraid has been configured already + [ -n "$TARGET" ] || prompt_for_target + prompt_for_bootmanager - prompt_for_mirror [ -n "$BOOT_PARTITION" ] && GRUB="$(grubdevice $BOOT_PARTITION)" [ -n "$TARGET" ] && GROOT="$(grubdevice $TARGET)" - # TODO - # ask for raid - # ask for lvm + prompt_for_mirror } # run interactive mode if we didn't get the according configuration yet