#!/bin/sh set -x exec 2>&1 device=$(sed -n 's|.*[0-9]\s\+\([^ ]\+[^0-9]\)$|\1|p;s#.*[0-9]\s\+\(\(rd\|ida\|cciss\|i2o\)/.*[^0-9p][0-9]\+\)$#\1#p' /proc/partitions | head -1) if [ -n "$device" ] then sfdisk -d /dev/$device > /tmp/oldparts sed 's/Id=8[32]/Id=fd/' /tmp/oldparts > /tmp/newparts mkdir /mnt/tmp for part in $(awk '/^\/dev\/.*Id=8[23]/{ print $1 }' /tmp/oldparts) do md=/dev/md$(echo $part | sed 's|^.*[^0-9]||') if grep -q "^$part .*Id=83" /tmp/oldparts then e2fsck -f -C0 $part partsize=$(resize2fs -f $part 2>&1| sed -n 's|.* \([0-9]\+\) blocks long.*|\1|p') resize2fs -fp $part $(($partsize-72)) fi mdadm -C $md -l 1 -n 2 -R $part missing if grep -q "^$part .*Id=83" /tmp/oldparts then e2fsck -f -C0 $md resize2fs -fp $md mount $md /mnt/tmp [ -r /mnt/tmp/etc/fstab ] && sed -i "s|/dev/$device\([0-9]\+\)|/dev/md\1|" /mnt/tmp/etc/fstab umount /mnt/tmp elif grep -q "^$part .*Id=82" /tmp/oldparts then mkswap $md fi done rmdir /mnt/tmp mdadm --stop --scan sfdisk --force /dev/$device < /tmp/newparts fi