Ubuntu Pastebin

Paste from ubuntu at Tue, 15 Dec 2015 16:28:08 +0000

Download as text
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
$ sudo /tmp/even-partition /dev/vdb 20
size=40960M numparts=20 partitions_of=2047M label=gpt dev=/dev/vdb
curstart=2048 curend=4194304 part=0
curstart=4194304 curend=8386560 part=1
curstart=8386560 curend=12578816 part=2
curstart=12578816 curend=16771072 part=3
curstart=16771072 curend=20963328 part=4
curstart=20963328 curend=25155584 part=5
curstart=25155584 curend=29347840 part=6
curstart=29347840 curend=33540096 part=7
curstart=33540096 curend=37732352 part=8
curstart=37732352 curend=41924608 part=9
curstart=41924608 curend=46116864 part=10
curstart=46116864 curend=50309120 part=11
curstart=50309120 curend=54501376 part=12
curstart=54501376 curend=58693632 part=13
curstart=58693632 curend=62885888 part=14
curstart=62885888 curend=67078144 part=15
curstart=67078144 curend=71270400 part=16
curstart=71270400 curend=75462656 part=17
curstart=75462656 curend=79654912 part=18
curstart=79654912 curend=83884032 part=19
created 20 partitions on /dev/vdb

$ ls -l /sys/class/block/vdb* -d
lrwxrwxrwx 1 root root 0 Dec 10 18:58 /sys/class/block/vdb -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb1 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb1
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb10 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb10
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb11 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb11
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb12 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb12
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb13 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb13
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb14 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb14
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb15 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb15
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb2 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb2
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb3 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb3
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb4 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb4
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb5 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb5
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb6 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb6
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb7 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb7
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb8 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb8
lrwxrwxrwx 1 root root 0 Dec 15 16:25 /sys/class/block/vdb9 -> ../../devices/pci0000:00/0000:00:04.0/virtio2/block/vdb/vdb9

$ grep vdb /proc/partitions
 253       16   41943040 vdb
 253       17    2096128 vdb1
 253       18    2096128 vdb2
 253       19    2096128 vdb3
 253       20    2096128 vdb4
 253       21    2096128 vdb5
 253       22    2096128 vdb6
 253       23    2096128 vdb7
 253       24    2096128 vdb8
 253       25    2096128 vdb9
 253       26    2096128 vdb10
 253       27    2096128 vdb11
 253       28    2096128 vdb12
 253       29    2096128 vdb13
 253       30    2096128 vdb14
 253       31    2096128 vdb15

$ cat /tmp/
# sfdisk --label=gpt /dev/vdb
/dev/vdb1: start=2048, size=4192256, type=83, name=foopart1
/dev/vdb2: start=4194304, size=4192256, type=83, name=foopart2
/dev/vdb3: start=8386560, size=4192256, type=83, name=foopart3
/dev/vdb4: start=12578816, size=4192256, type=83, name=foopart4
/dev/vdb5: start=16771072, size=4192256, type=83, name=foopart5
/dev/vdb6: start=20963328, size=4192256, type=83, name=foopart6
/dev/vdb7: start=25155584, size=4192256, type=83, name=foopart7
/dev/vdb8: start=29347840, size=4192256, type=83, name=foopart8
/dev/vdb9: start=33540096, size=4192256, type=83, name=foopart9
/dev/vdb10: start=37732352, size=4192256, type=83, name=foopart10
/dev/vdb11: start=41924608, size=4192256, type=83, name=foopart11
/dev/vdb12: start=46116864, size=4192256, type=83, name=foopart12
/dev/vdb13: start=50309120, size=4192256, type=83, name=foopart13
/dev/vdb14: start=54501376, size=4192256, type=83, name=foopart14
/dev/vdb15: start=58693632, size=4192256, type=83, name=foopart15
/dev/vdb16: start=62885888, size=4192256, type=83, name=foopart16
/dev/vdb17: start=67078144, size=4192256, type=83, name=foopart17
/dev/vdb18: start=71270400, size=4192256, type=83, name=foopart18
/dev/vdb19: start=75462656, size=4192256, type=83, name=foopart19
/dev/vdb20: start=79654912, size=4229120, type=83, name=foopart20

$ cat /tmp/even-partition
#!/bin/bash

VERBOSITY=${VERBOSITY:-1}
dev="/dev/vdb"
error() { echo "$@" 1>&2; }
fail() { [ $# -eq 0 ] || error "$@"; exit 1; }
debug() {
    [ "${VERBOSITY:-0}" -ge "$1" ] || return 0;
    shift;
    error "$@";
}

wipedev() {
    python -c '
import sys
unit=512
numbufs = ((1024 * 1024) / unit)
buf = unit * b'\''\0'\''
args = sys.argv[1:]
print("args: %s" % args)
dev=args[0]
if len(args) > 1:
    # offsets are in k
    offsets = [int(i)*unit for i in args[1:]]
else:
    # the start and end
    offsets = [0] + [-numbufs*unit]
print("dev=%s. offsets: %s" % (dev, offsets))
with open(dev, "wb") as fp:
    for offset in offsets:
        if offset >= 0:
            fp.seek(offset, 0)
        else:
            fp.seek(offset, 2)
        print("wiping %s" % fp.tell())
        for i in range(numbufs):
            fp.write(buf)
' "$@"
}

even_partition() {
    local dev="$1" numparts="$2" label="${3:-gpt}"
    local ret=0 bname="" size1024="" size512="" sizeM="" psizeM=""
    local endM=1 skipM=1 wipe=false bname=""
    bname=${dev##*/}
    size1024=$(awk '$4 == bname { print $3 }' bname=$bname /proc/partitions)
    [ $? -eq 0 ] || { error "failed get size $dev"; return 1; }
    size512=$((${size1024}*2))
    skipM=1
    endM=1
    sizeM=$(($size512/(1024*2)))
    psizeM=$((($sizeM-$skipM-$endM)/$numparts))
    debug 1 "size=${sizeM}M numparts=$numparts partitions_of=${psizeM}M label=$label dev=$dev"
    local sfdisk_in=$(mktemp)
    local wipes=""
    wipes=( 0 )
    echo "# sfdisk --label=$label $dev" > "$sfdisk_in"
    for((p=0;p<$numparts;p++)); do
        curstartM=$(($skipM+($psizeM*$p)))
        pnum=$(($p+1))
        if [ $pnum -eq $numparts ]; then
            cursizeM=$(($sizeM-$endM-$curstartM))
        else
            cursizeM=$psizeM
        fi
        curstart=$(($curstartM*2048))
        cursize=$(($cursizeM*2048))
        curend=$(($curstart+$cursize))
        echo "curstart=$curstart curend=$curend part=$p" 1>&2
        wipes[${#wipes[@]}]="$curstart"
        wipes[${#wipes[@]}]="$(($curend-2048))"
        #echo "$curstart,$cursizeM,," # old style
        echo "${dev}$pnum: start=$curstart, size=$cursize, type=83, name=foopart$pnum"
    done >> "$sfdisk_in"
    wipes[${#wipes[@]}]=$((size512-2048))
    if $wipe; then
        wipedev "$dev" "${wipes[@]}" || return
    fi
    cat "$sfdisk_in" >/tmp/out.sfdisk_in
    out=$(sfdisk --label=$label "$dev" < "$sfdisk_in")
    ret=$?
    [ $? -eq 0 ] && error "created $numparts partitions on $dev"
    rm -f "$sfdisk_in"
    return $ret
}

even_partition "$@"
Download as text