1*57696d54SAkhilesh Sanikop#!/bin/bash 2*57696d54SAkhilesh Sanikop# test gdisk and sgdisk by creating a dd file 3*57696d54SAkhilesh Sanikop# Copyright (C) 2011 Guillaume Delacour <[email protected]> 4*57696d54SAkhilesh Sanikop# 5*57696d54SAkhilesh Sanikop# This program is free software; you can redistribute it and/or modify 6*57696d54SAkhilesh Sanikop# it under the terms of the GNU General Public License as published by 7*57696d54SAkhilesh Sanikop# the Free Software Foundation; either version 2 of the License, or 8*57696d54SAkhilesh Sanikop# (at your option) any later version. 9*57696d54SAkhilesh Sanikop# 10*57696d54SAkhilesh Sanikop# This program is distributed in the hope that it will be useful, 11*57696d54SAkhilesh Sanikop# but WITHOUT ANY WARRANTY; without even the implied warranty of 12*57696d54SAkhilesh Sanikop# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*57696d54SAkhilesh Sanikop# GNU General Public License for more details. 14*57696d54SAkhilesh Sanikop# 15*57696d54SAkhilesh Sanikop# You should have received a copy of the GNU General Public License along 16*57696d54SAkhilesh Sanikop# with this program; if not, write to the Free Software Foundation, Inc., 17*57696d54SAkhilesh Sanikop# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18*57696d54SAkhilesh Sanikop# 19*57696d54SAkhilesh Sanikop# 20*57696d54SAkhilesh Sanikop# Requires: coreutils (mktemp, dd) and 64M of disk space in /tmp (temp dd disk) 21*57696d54SAkhilesh Sanikop# 22*57696d54SAkhilesh Sanikop# This script test gdisk commands through the following scenario: 23*57696d54SAkhilesh Sanikop# - Initialize a new GPT table 24*57696d54SAkhilesh Sanikop# - Create a single Linux partition 25*57696d54SAkhilesh Sanikop# - Change name of partition 26*57696d54SAkhilesh Sanikop# - Change type of partition 27*57696d54SAkhilesh Sanikop# - Backup to file the GPT table 28*57696d54SAkhilesh Sanikop# - Delete the single partition 29*57696d54SAkhilesh Sanikop# - Restore from backup file the GPT table 30*57696d54SAkhilesh Sanikop# - Wipe the GPT table 31*57696d54SAkhilesh Sanikop 32*57696d54SAkhilesh Sanikop# TODO 33*57696d54SAkhilesh Sanikop# Try to generate a wrong GPT table to detect problems (test --verify) 34*57696d54SAkhilesh Sanikop# Create MBR partition table with fdisk and migrate it with gdisk 35*57696d54SAkhilesh Sanikop 36*57696d54SAkhilesh SanikopGDISK_BIN=./gdisk 37*57696d54SAkhilesh SanikopSGDISK_BIN=./sgdisk 38*57696d54SAkhilesh Sanikop 39*57696d54SAkhilesh SanikopOPT_CLEAR="o" 40*57696d54SAkhilesh SanikopOPT_NEW="n" 41*57696d54SAkhilesh SanikopOPT_CHANGE_NAME="c" 42*57696d54SAkhilesh SanikopOPT_CHANGE_TYPE="t" 43*57696d54SAkhilesh SanikopOPT_BACKUP="b" 44*57696d54SAkhilesh SanikopOPT_DELETE="d" 45*57696d54SAkhilesh SanikopOPT_ZAP="z" 46*57696d54SAkhilesh Sanikop 47*57696d54SAkhilesh Sanikop# temp disk for testing gdisk 48*57696d54SAkhilesh SanikopTEMP_DISK=$(mktemp) 49*57696d54SAkhilesh Sanikop# 64 MiB 50*57696d54SAkhilesh SanikopTEMP_DISK_SIZE=65536 51*57696d54SAkhilesh Sanikop 52*57696d54SAkhilesh Sanikop# the test partition to create 53*57696d54SAkhilesh SanikopTEST_PART_TYPE="8300" 54*57696d54SAkhilesh SanikopTEST_PART_DEFAULT_NAME="Linux filesystem" 55*57696d54SAkhilesh Sanikop 56*57696d54SAkhilesh Sanikop# newname for the partition 57*57696d54SAkhilesh SanikopTEST_PART_NEWNAME=$(tr -dc "[:alpha:]" < /dev/urandom | head -c 8) 58*57696d54SAkhilesh Sanikop# and new type (swap for example) 59*57696d54SAkhilesh SanikopTEST_PART_NEWTYPE="8200" 60*57696d54SAkhilesh Sanikop 61*57696d54SAkhilesh Sanikop# GPT data backup to filename 62*57696d54SAkhilesh SanikopGPT_BACKUP_FILENAME=$(mktemp) 63*57696d54SAkhilesh Sanikop 64*57696d54SAkhilesh Sanikop# Pretty print string (Red if FAILED or green if SUCCESS) 65*57696d54SAkhilesh Sanikop# $1: string to pretty print 66*57696d54SAkhilesh Sanikoppretty_print() { 67*57696d54SAkhilesh Sanikop if [ "$1" = "SUCCESS" ] 68*57696d54SAkhilesh Sanikop then 69*57696d54SAkhilesh Sanikop # green 70*57696d54SAkhilesh Sanikop color="32" 71*57696d54SAkhilesh Sanikop else 72*57696d54SAkhilesh Sanikop # red 73*57696d54SAkhilesh Sanikop color="31" 74*57696d54SAkhilesh Sanikop fi 75*57696d54SAkhilesh Sanikop 76*57696d54SAkhilesh Sanikop printf "\033[0;${color}m**$1**\033[m $2\n" 77*57696d54SAkhilesh Sanikop} 78*57696d54SAkhilesh Sanikop 79*57696d54SAkhilesh Sanikop# Verify that the partition exist and has the given type/name 80*57696d54SAkhilesh Sanikop# $1: Partition type to verify (ex.: 8300) 81*57696d54SAkhilesh Sanikop# $2: Partition name to verify (ex.: Linux filesystem) 82*57696d54SAkhilesh Sanikop# $3: Text to print 83*57696d54SAkhilesh Sanikopverify_part() { 84*57696d54SAkhilesh Sanikop partition=$($GDISK_BIN -l $TEMP_DISK | tail -n 1) 85*57696d54SAkhilesh Sanikop echo $partition | grep -q "$1[[:space:]]$2$" 86*57696d54SAkhilesh Sanikop 87*57696d54SAkhilesh Sanikop if [ $? -eq 0 ] 88*57696d54SAkhilesh Sanikop then 89*57696d54SAkhilesh Sanikop pretty_print "SUCCESS" "$3" 90*57696d54SAkhilesh Sanikop else 91*57696d54SAkhilesh Sanikop pretty_print "FAILED" "$3" 92*57696d54SAkhilesh Sanikop exit 1 93*57696d54SAkhilesh Sanikop fi 94*57696d54SAkhilesh Sanikop} 95*57696d54SAkhilesh Sanikop 96*57696d54SAkhilesh Sanikop 97*57696d54SAkhilesh Sanikop##################################### 98*57696d54SAkhilesh Sanikop# Get GUID of disk 99*57696d54SAkhilesh Sanikop##################################### 100*57696d54SAkhilesh Sanikopget_diskguid() { 101*57696d54SAkhilesh Sanikop DISK_GUID=$($GDISK_BIN -l $TEMP_DISK | grep "^Disk identifier (GUID):" | awk '{print $4}') 102*57696d54SAkhilesh Sanikop return $DISK_GUID 103*57696d54SAkhilesh Sanikop} 104*57696d54SAkhilesh Sanikop 105*57696d54SAkhilesh Sanikop 106*57696d54SAkhilesh Sanikop##################################### 107*57696d54SAkhilesh Sanikop# Create a new empty table 108*57696d54SAkhilesh Sanikop##################################### 109*57696d54SAkhilesh Sanikopcreate_table() { 110*57696d54SAkhilesh Sanikop case $1 in 111*57696d54SAkhilesh Sanikop gdisk) 112*57696d54SAkhilesh Sanikop $GDISK_BIN $TEMP_DISK << EOF 113*57696d54SAkhilesh Sanikop$OPT_CLEAR 114*57696d54SAkhilesh SanikopY 115*57696d54SAkhilesh Sanikopw 116*57696d54SAkhilesh SanikopY 117*57696d54SAkhilesh SanikopEOF 118*57696d54SAkhilesh Sanikop 119*57696d54SAkhilesh Sanikop ret=$? 120*57696d54SAkhilesh Sanikop if [ $ret -ne 0 ] 121*57696d54SAkhilesh Sanikop then 122*57696d54SAkhilesh Sanikop pretty_print "FAILED" "gdisk return $ret when creating partition table" 123*57696d54SAkhilesh Sanikop exit 1 124*57696d54SAkhilesh Sanikop fi 125*57696d54SAkhilesh Sanikop ;; 126*57696d54SAkhilesh Sanikop sgdisk) 127*57696d54SAkhilesh Sanikop $SGDISK_BIN $TEMP_DISK -${OPT_CLEAR} 128*57696d54SAkhilesh Sanikop 129*57696d54SAkhilesh Sanikop ret=$? 130*57696d54SAkhilesh Sanikop if [ $ret -ne 0 ] 131*57696d54SAkhilesh Sanikop then 132*57696d54SAkhilesh Sanikop pretty_print "FAILED" "sgdisk return $ret when creating partition table" 133*57696d54SAkhilesh Sanikop exit 1 134*57696d54SAkhilesh Sanikop fi 135*57696d54SAkhilesh Sanikop ;; 136*57696d54SAkhilesh Sanikop esac 137*57696d54SAkhilesh Sanikop 138*57696d54SAkhilesh Sanikop # verify that the table is empty 139*57696d54SAkhilesh Sanikop # only the columns should appear in the table 140*57696d54SAkhilesh Sanikop verify_part "Code" "Name" "Create new empty GPT table" 141*57696d54SAkhilesh Sanikop echo "" 142*57696d54SAkhilesh Sanikop} 143*57696d54SAkhilesh Sanikop 144*57696d54SAkhilesh Sanikop 145*57696d54SAkhilesh Sanikop 146*57696d54SAkhilesh Sanikop##################################### 147*57696d54SAkhilesh Sanikop# First create a new partition 148*57696d54SAkhilesh Sanikop##################################### 149*57696d54SAkhilesh Sanikopcreate_partition() { 150*57696d54SAkhilesh Sanikop case $1 in 151*57696d54SAkhilesh Sanikop gdisk) 152*57696d54SAkhilesh Sanikop $GDISK_BIN $TEMP_DISK << EOF 153*57696d54SAkhilesh Sanikop$OPT_NEW 154*57696d54SAkhilesh Sanikop1 155*57696d54SAkhilesh Sanikop 156*57696d54SAkhilesh Sanikop 157*57696d54SAkhilesh Sanikop$TEST_PART_TYPE 158*57696d54SAkhilesh Sanikopw 159*57696d54SAkhilesh SanikopY 160*57696d54SAkhilesh SanikopEOF 161*57696d54SAkhilesh Sanikop ;; 162*57696d54SAkhilesh Sanikop 163*57696d54SAkhilesh Sanikop sgdisk) 164*57696d54SAkhilesh Sanikop $SGDISK_BIN $TEMP_DISK -${OPT_NEW} 1 -${OPT_CHANGE_NAME} 1:"${TEST_PART_DEFAULT_NAME}" -${OPT_CHANGE_TYPE} 1:$TEST_PART_TYPE 165*57696d54SAkhilesh Sanikop ;; 166*57696d54SAkhilesh Sanikop esac 167*57696d54SAkhilesh Sanikop 168*57696d54SAkhilesh Sanikop verify_part "$TEST_PART_TYPE" "$TEST_PART_DEFAULT_NAME" "Create new partition" 169*57696d54SAkhilesh Sanikop echo "" 170*57696d54SAkhilesh Sanikop} 171*57696d54SAkhilesh Sanikop 172*57696d54SAkhilesh Sanikop 173*57696d54SAkhilesh Sanikop##################################### 174*57696d54SAkhilesh Sanikop# Change name of partition 175*57696d54SAkhilesh Sanikop##################################### 176*57696d54SAkhilesh Sanikopchange_partition_name() { 177*57696d54SAkhilesh Sanikop case $1 in 178*57696d54SAkhilesh Sanikop gdisk) 179*57696d54SAkhilesh Sanikop $GDISK_BIN $TEMP_DISK << EOF 180*57696d54SAkhilesh Sanikop$OPT_CHANGE_NAME 181*57696d54SAkhilesh Sanikop$TEST_PART_NEWNAME 182*57696d54SAkhilesh Sanikopw 183*57696d54SAkhilesh SanikopY 184*57696d54SAkhilesh SanikopEOF 185*57696d54SAkhilesh Sanikop ;; 186*57696d54SAkhilesh Sanikop 187*57696d54SAkhilesh Sanikop sgdisk) 188*57696d54SAkhilesh Sanikop $SGDISK_BIN $TEMP_DISK -${OPT_CHANGE_NAME} 1:${TEST_PART_NEWNAME} 189*57696d54SAkhilesh Sanikop ;; 190*57696d54SAkhilesh Sanikop esac 191*57696d54SAkhilesh Sanikop 192*57696d54SAkhilesh Sanikop verify_part "$TEST_PART_TYPE" "$TEST_PART_NEWNAME" "Change partition 1 name ($TEST_PART_DEFAULT_NAME -> $TEST_PART_NEWNAME)" 193*57696d54SAkhilesh Sanikop echo "" 194*57696d54SAkhilesh Sanikop} 195*57696d54SAkhilesh Sanikop 196*57696d54SAkhilesh Sanikop 197*57696d54SAkhilesh Sanikopchange_partition_type() { 198*57696d54SAkhilesh Sanikop##################################### 199*57696d54SAkhilesh Sanikop# Change type of partition 200*57696d54SAkhilesh Sanikop##################################### 201*57696d54SAkhilesh Sanikop case $1 in 202*57696d54SAkhilesh Sanikop gdisk) 203*57696d54SAkhilesh Sanikop $GDISK_BIN $TEMP_DISK << EOF 204*57696d54SAkhilesh Sanikop$OPT_CHANGE_TYPE 205*57696d54SAkhilesh Sanikop$TEST_PART_NEWTYPE 206*57696d54SAkhilesh Sanikopw 207*57696d54SAkhilesh SanikopY 208*57696d54SAkhilesh SanikopEOF 209*57696d54SAkhilesh Sanikop ;; 210*57696d54SAkhilesh Sanikop 211*57696d54SAkhilesh Sanikop sgdisk) 212*57696d54SAkhilesh Sanikop $SGDISK_BIN $TEMP_DISK -${OPT_CHANGE_TYPE} 1:${TEST_PART_NEWTYPE} 213*57696d54SAkhilesh Sanikop ;; 214*57696d54SAkhilesh Sanikop esac 215*57696d54SAkhilesh Sanikop 216*57696d54SAkhilesh Sanikop verify_part "$TEST_PART_NEWTYPE" "$TEST_PART_NEWNAME" "Change partition 1 type ($TEST_PART_TYPE -> $TEST_PART_NEWTYPE)" 217*57696d54SAkhilesh Sanikop echo "" 218*57696d54SAkhilesh Sanikop} 219*57696d54SAkhilesh Sanikop 220*57696d54SAkhilesh Sanikop 221*57696d54SAkhilesh Sanikop##################################### 222*57696d54SAkhilesh Sanikop# Backup GPT data to file 223*57696d54SAkhilesh Sanikop##################################### 224*57696d54SAkhilesh Sanikopbackup_table() { 225*57696d54SAkhilesh Sanikop case $1 in 226*57696d54SAkhilesh Sanikop gdisk) 227*57696d54SAkhilesh Sanikop $GDISK_BIN $TEMP_DISK << EOF 228*57696d54SAkhilesh Sanikop$OPT_BACKUP 229*57696d54SAkhilesh Sanikop$GPT_BACKUP_FILENAME 230*57696d54SAkhilesh Sanikopq 231*57696d54SAkhilesh SanikopEOF 232*57696d54SAkhilesh Sanikopecho "" 233*57696d54SAkhilesh Sanikop ;; 234*57696d54SAkhilesh Sanikop 235*57696d54SAkhilesh Sanikop sgdisk) 236*57696d54SAkhilesh Sanikop $SGDISK_BIN $TEMP_DISK -${OPT_BACKUP} ${GPT_BACKUP_FILENAME} 237*57696d54SAkhilesh Sanikop ;; 238*57696d54SAkhilesh Sanikop esac 239*57696d54SAkhilesh Sanikop 240*57696d54SAkhilesh Sanikop # if exist and not empty; we will test it after 241*57696d54SAkhilesh Sanikop if [ -s $GPT_BACKUP_FILENAME ] 242*57696d54SAkhilesh Sanikop then 243*57696d54SAkhilesh Sanikop pretty_print "SUCCESS" "GPT data backuped sucessfully" 244*57696d54SAkhilesh Sanikop else 245*57696d54SAkhilesh Sanikop pretty_print "FAILED" "Unable to create GPT backup file !" 246*57696d54SAkhilesh Sanikop exit 1 247*57696d54SAkhilesh Sanikop fi 248*57696d54SAkhilesh Sanikop} 249*57696d54SAkhilesh Sanikop 250*57696d54SAkhilesh Sanikop 251*57696d54SAkhilesh Sanikop##################################### 252*57696d54SAkhilesh Sanikop# Now, we can delete the partition 253*57696d54SAkhilesh Sanikop##################################### 254*57696d54SAkhilesh Sanikopdelete_partition() { 255*57696d54SAkhilesh Sanikop case $1 in 256*57696d54SAkhilesh Sanikop gdisk) 257*57696d54SAkhilesh Sanikop $GDISK_BIN $TEMP_DISK << EOF 258*57696d54SAkhilesh Sanikop$OPT_DELETE 259*57696d54SAkhilesh Sanikopw 260*57696d54SAkhilesh SanikopY 261*57696d54SAkhilesh SanikopEOF 262*57696d54SAkhilesh Sanikop ;; 263*57696d54SAkhilesh Sanikop 264*57696d54SAkhilesh Sanikop sgdisk) 265*57696d54SAkhilesh Sanikop $SGDISK_BIN $TEMP_DISK -${OPT_DELETE} 1 266*57696d54SAkhilesh Sanikop ;; 267*57696d54SAkhilesh Sanikop esac 268*57696d54SAkhilesh Sanikop 269*57696d54SAkhilesh Sanikop # verify that the table is empty (just one partition): 270*57696d54SAkhilesh Sanikop # only the columns should appear in the table 271*57696d54SAkhilesh Sanikop verify_part "Code" "Name" "Delete partition 1" 272*57696d54SAkhilesh Sanikop echo "" 273*57696d54SAkhilesh Sanikop} 274*57696d54SAkhilesh Sanikop 275*57696d54SAkhilesh Sanikop 276*57696d54SAkhilesh Sanikop##################################### 277*57696d54SAkhilesh Sanikop# Restore GPT table 278*57696d54SAkhilesh Sanikop##################################### 279*57696d54SAkhilesh Sanikoprestore_table() { 280*57696d54SAkhilesh Sanikop $GDISK_BIN $TEMP_DISK << EOF 281*57696d54SAkhilesh Sanikopr 282*57696d54SAkhilesh Sanikopr 283*57696d54SAkhilesh Sanikopl 284*57696d54SAkhilesh Sanikop$GPT_BACKUP_FILENAME 285*57696d54SAkhilesh Sanikopw 286*57696d54SAkhilesh SanikopY 287*57696d54SAkhilesh SanikopEOF 288*57696d54SAkhilesh Sanikop 289*57696d54SAkhilesh Sanikop verify_part "$TEST_PART_NEWTYPE" "$TEST_PART_NEWNAME" "Restore the GPT backup" 290*57696d54SAkhilesh Sanikop echo "" 291*57696d54SAkhilesh Sanikop} 292*57696d54SAkhilesh Sanikop 293*57696d54SAkhilesh Sanikop 294*57696d54SAkhilesh Sanikop##################################### 295*57696d54SAkhilesh Sanikop# Change UID of disk 296*57696d54SAkhilesh Sanikop##################################### 297*57696d54SAkhilesh Sanikopchange_disk_uid() { 298*57696d54SAkhilesh Sanikop 299*57696d54SAkhilesh Sanikop # get UID of disk before changing it 300*57696d54SAkhilesh Sanikop GUID=get_diskguid 301*57696d54SAkhilesh Sanikop 302*57696d54SAkhilesh Sanikop 303*57696d54SAkhilesh Sanikop case $1 in 304*57696d54SAkhilesh Sanikop gdisk) 305*57696d54SAkhilesh Sanikop $GDISK_BIN $TEMP_DISK << EOF 306*57696d54SAkhilesh Sanikopx 307*57696d54SAkhilesh Sanikopg 308*57696d54SAkhilesh SanikopR 309*57696d54SAkhilesh Sanikopw 310*57696d54SAkhilesh SanikopY 311*57696d54SAkhilesh SanikopEOF 312*57696d54SAkhilesh Sanikop ;; 313*57696d54SAkhilesh Sanikop 314*57696d54SAkhilesh Sanikop sgdisk) 315*57696d54SAkhilesh Sanikop $SGDISK_BIN $TEMP_DISK -U=R 316*57696d54SAkhilesh Sanikop ;; 317*57696d54SAkhilesh Sanikop esac 318*57696d54SAkhilesh Sanikop 319*57696d54SAkhilesh Sanikop # get GUID after change 320*57696d54SAkhilesh Sanikop NEW_DISK_GUID=get_diskguid 321*57696d54SAkhilesh Sanikop 322*57696d54SAkhilesh Sanikop # compare them 323*57696d54SAkhilesh Sanikop if [ "$DISK_GUID" != "$NEW_DISK_GUID" ] 324*57696d54SAkhilesh Sanikop then 325*57696d54SAkhilesh Sanikop pretty_print "SUCCESS" "GUID of disk has been sucessfully changed" 326*57696d54SAkhilesh Sanikop else 327*57696d54SAkhilesh Sanikop pretty_print "FAILED" "GUID of disk is the same as the previous one" 328*57696d54SAkhilesh Sanikop exit 1 329*57696d54SAkhilesh Sanikop fi 330*57696d54SAkhilesh Sanikop} 331*57696d54SAkhilesh Sanikop 332*57696d54SAkhilesh Sanikop##################################### 333*57696d54SAkhilesh Sanikop# Wipe GPT table 334*57696d54SAkhilesh Sanikop##################################### 335*57696d54SAkhilesh Sanikopwipe_table() { 336*57696d54SAkhilesh Sanikop case $1 in 337*57696d54SAkhilesh Sanikop gdisk) 338*57696d54SAkhilesh Sanikop $GDISK_BIN $TEMP_DISK << EOF 339*57696d54SAkhilesh Sanikopx 340*57696d54SAkhilesh Sanikop$OPT_ZAP 341*57696d54SAkhilesh SanikopY 342*57696d54SAkhilesh SanikopY 343*57696d54SAkhilesh SanikopEOF 344*57696d54SAkhilesh Sanikop ;; 345*57696d54SAkhilesh Sanikop 346*57696d54SAkhilesh Sanikop sgdisk) 347*57696d54SAkhilesh Sanikop $SGDISK_BIN $TEMP_DISK -${OPT_ZAP} 348*57696d54SAkhilesh Sanikop esac 349*57696d54SAkhilesh Sanikop 350*57696d54SAkhilesh Sanikop # verify that the table is empty (just one partition): 351*57696d54SAkhilesh Sanikop # only the columns should appear in the table 352*57696d54SAkhilesh Sanikop verify_part "Code" "Name" "Wipe GPT table" 353*57696d54SAkhilesh Sanikop echo "" 354*57696d54SAkhilesh Sanikop} 355*57696d54SAkhilesh Sanikop 356*57696d54SAkhilesh Sanikop##################################### 357*57696d54SAkhilesh Sanikop# Test stdin EOF 358*57696d54SAkhilesh Sanikop##################################### 359*57696d54SAkhilesh Sanikopeof_stdin() { 360*57696d54SAkhilesh Sanikop $SGDISK_BIN $TEMP_DISK << EOF 361*57696d54SAkhilesh Sanikop^D 362*57696d54SAkhilesh SanikopEOF 363*57696d54SAkhilesh Sanikop pretty_print "SUCCESS" "EOF successfully exit gdisk" 364*57696d54SAkhilesh Sanikop} 365*57696d54SAkhilesh Sanikop 366*57696d54SAkhilesh Sanikop################################### 367*57696d54SAkhilesh Sanikop# Main 368*57696d54SAkhilesh Sanikop################################### 369*57696d54SAkhilesh Sanikop 370*57696d54SAkhilesh Sanikop# create a file to simulate a real device 371*57696d54SAkhilesh Sanikopdd if=/dev/zero of=$TEMP_DISK bs=1024 count=$TEMP_DISK_SIZE > /dev/null 2>&1 372*57696d54SAkhilesh Sanikop 373*57696d54SAkhilesh Sanikopif [ -s $TEMP_DISK ] 374*57696d54SAkhilesh Sanikopthen 375*57696d54SAkhilesh Sanikop pretty_print "SUCCESS" "Temp disk sucessfully created" 376*57696d54SAkhilesh Sanikopelse 377*57696d54SAkhilesh Sanikop pretty_print "FAILED" "Unable to create temp disk !" 378*57696d54SAkhilesh Sanikop exit 1 379*57696d54SAkhilesh Sanikopfi 380*57696d54SAkhilesh Sanikop 381*57696d54SAkhilesh Sanikop# test gdisk and sgdisk 382*57696d54SAkhilesh Sanikopfor binary in gdisk sgdisk 383*57696d54SAkhilesh Sanikopdo 384*57696d54SAkhilesh Sanikop echo "" 385*57696d54SAkhilesh Sanikop printf "\033[0;34m**Testing $binary binary**\033[m\n" 386*57696d54SAkhilesh Sanikop echo "" 387*57696d54SAkhilesh Sanikop create_table "$binary" 388*57696d54SAkhilesh Sanikop create_partition "$binary" 389*57696d54SAkhilesh Sanikop change_partition_name "$binary" 390*57696d54SAkhilesh Sanikop change_partition_type "$binary" 391*57696d54SAkhilesh Sanikop backup_table "$binary" 392*57696d54SAkhilesh Sanikop delete_partition "$binary" 393*57696d54SAkhilesh Sanikop restore_table # only with gdisk 394*57696d54SAkhilesh Sanikop change_disk_uid "$binary" 395*57696d54SAkhilesh Sanikop wipe_table "$binary" 396*57696d54SAkhilesh Sanikop eof_stdin # only with gdisk 397*57696d54SAkhilesh Sanikopdone 398*57696d54SAkhilesh Sanikop 399*57696d54SAkhilesh Sanikop# remove temp files 400*57696d54SAkhilesh Sanikoprm -f $TEMP_DISK $GPT_BACKUP_FILENAME 401*57696d54SAkhilesh Sanikop 402*57696d54SAkhilesh Sanikopexit 0 403