2 # gpt default "flag" for a partition must not be msftres
4 # Copyright (C) 2009-2011 Free Software Foundation, Inc.
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 . "${srcdir=.}/init.sh"; path_prepend_ ../parted
24 # FIXME: should be able to use "ufs" here, too, but that doesn't work.
39 n_types=$(echo "$fs_types"|wc -w)
41 # Create a "disk" with enough room for one partition per FS type,
42 # and the overhead required for a GPT partition table.
43 # 32 is the number of 512-byte sectors required to accommodate the
44 # minimum size of the secondary GPT header at the end of the disk.
45 n_sectors=$(expr $start + $n_types \* $part_size + 1 + 32)
47 # create a test file large enough for one partition per FS type
48 dd if=/dev/null of=$dev bs=$ss seek=$n_sectors || fail=1
50 # create a gpt partition table
51 parted -s $dev mklabel gpt > out 2>&1 || fail=1
53 compare out /dev/null || fail=1
55 printf "BYT;\n$dev:${n_sectors}s:file:$ss:$ss:gpt:;\n" > exp
58 for type in $fs_types; do
59 end=$(expr $start + $part_size - 1)
60 echo "$i:${start}s:${end}s:${part_size}s::$type:;" >> exp || fail=1
61 parted -s $dev mkpart primary $type ${start}s ${end}s >> out 2>&1 || fail=1
62 parted -s $dev name $i $type >> out 2>&1 || fail=1
63 start=$(expr $end + 1)
68 compare out /dev/null || fail=1
71 # print partition table
72 parted -m -s $dev u s p > out 2>&1 || fail=1
74 sed "s,.*/$dev:,$dev:," out > k && mv k out && ok=1 || ok=0
75 # match against expected output
76 test $ok = 1 && { compare out exp || fail=1; }