Solarisのパーティションを壊さないswap自動検出

パーティションIDで判別するのではなく、実際にパーティションを読むので、Solarisのパーティションをswapと間違えない。LVMに対応する必要がない&$devdirにデバイスノードが作成してあるなら、最初のforループは不要。

#!/bin/sh
detect_swap() {
        devdir="/dev"
        for dev in /sys/block/* ;do
                line=`cat $dev/dev`
                major=`echo $line | cut -d ":" -f 1`
                minor=`echo $line | cut -d ":" -f 2`
                mknod $devdir/`basename $dev` b $major $minor 2>/dev/null
        done
        for dev in /sys/block/* ;do
                node=$devdir/`basename $dev`
                if [ "`dd if=$node bs=1 count=10 skip=4086 2>/dev/null`" = "SWAPSPACE2" ];then
                        echo $node
                fi
        done
}
detect_swap