| #!/bin/bash -eu |
| |
| # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| # |
| # Run tests for RSA Signature verification. |
| |
| # Load common constants and variables. |
| . "$(dirname "$0")/common.sh" |
| |
| GPT=$1 |
| [ -x "$GPT" ] || error "Can't execute $GPT" |
| warning "testing $GPT" |
| |
| echo "Create an empty file to use as the device..." |
| NUM_SECTORS=1000 |
| DEV=$(mktemp) |
| BOOTFILE=$(mktemp) |
| dd if=/dev/zero of=${DEV} conv=notrunc bs=512 count=${NUM_SECTORS} 2>/dev/null |
| trap "rm -f ${DEV}" EXIT |
| |
| |
| echo "Create a bunch of partitions, using the real GUID types..." |
| DATA_START=100 |
| DATA_SIZE=20 |
| DATA_LABEL="data stuff" |
| DATA_GUID='ebd0a0a2-b9e5-4433-87c0-68b6b72699c7' |
| DATA_NUM=1 |
| |
| KERN_START=200 |
| KERN_SIZE=30 |
| KERN_LABEL="kernel stuff" |
| KERN_GUID='fe3a2a5d-4f32-41a7-b725-accc3285a309' |
| KERN_NUM=2 |
| |
| ROOTFS_START=300 |
| ROOTFS_SIZE=40 |
| ROOTFS_LABEL="rootfs stuff" |
| ROOTFS_GUID='3cb8e202-3b7e-47dd-8a3c-7ff2a13cfcec' |
| ROOTFS_NUM=3 |
| |
| ESP_START=400 |
| ESP_SIZE=50 |
| ESP_LABEL="ESP stuff" |
| ESP_GUID='c12a7328-f81f-11d2-ba4b-00a0c93ec93b' |
| ESP_NUM=4 |
| |
| FUTURE_START=500 |
| FUTURE_SIZE=60 |
| FUTURE_LABEL="future stuff" |
| FUTURE_GUID='2e0a753d-9e48-43b0-8337-b15192cb1b5e' |
| FUTURE_NUM=5 |
| |
| RANDOM_START=600 |
| RANDOM_SIZE=70 |
| RANDOM_LABEL="random stuff" |
| RANDOM_GUID='2364a860-bf63-42fb-a83d-9ad3e057fcf5' |
| RANDOM_NUM=6 |
| |
| $GPT create ${DEV} |
| |
| $GPT add -b ${DATA_START} -s ${DATA_SIZE} -t ${DATA_GUID} \ |
| -l "${DATA_LABEL}" ${DEV} |
| $GPT add -b ${KERN_START} -s ${KERN_SIZE} -t ${KERN_GUID} \ |
| -l "${KERN_LABEL}" ${DEV} |
| $GPT add -b ${ROOTFS_START} -s ${ROOTFS_SIZE} -t ${ROOTFS_GUID} \ |
| -l "${ROOTFS_LABEL}" ${DEV} |
| $GPT add -b ${ESP_START} -s ${ESP_SIZE} -t ${ESP_GUID} \ |
| -l "${ESP_LABEL}" ${DEV} |
| $GPT add -b ${FUTURE_START} -s ${FUTURE_SIZE} -t ${FUTURE_GUID} \ |
| -l "${FUTURE_LABEL}" ${DEV} |
| $GPT add -b ${RANDOM_START} -s ${RANDOM_SIZE} -t ${RANDOM_GUID} \ |
| -l "${RANDOM_LABEL}" ${DEV} |
| |
| |
| echo "Extract the start and size of given partitions..." |
| |
| X=$($GPT show -b -i $DATA_NUM ${DEV}) |
| Y=$($GPT show -s -i $DATA_NUM ${DEV}) |
| [ "$X $Y" = "$DATA_START $DATA_SIZE" ] || error "fail at line $LINENO" |
| |
| X=$($GPT show -b -i $KERN_NUM ${DEV}) |
| Y=$($GPT show -s -i $KERN_NUM ${DEV}) |
| [ "$X $Y" = "$KERN_START $KERN_SIZE" ] || error "fail at line $LINENO" |
| |
| X=$($GPT show -b -i $ROOTFS_NUM ${DEV}) |
| Y=$($GPT show -s -i $ROOTFS_NUM ${DEV}) |
| [ "$X $Y" = "$ROOTFS_START $ROOTFS_SIZE" ] || error "fail at line $LINENO" |
| |
| X=$($GPT show -b -i $ESP_NUM ${DEV}) |
| Y=$($GPT show -s -i $ESP_NUM ${DEV}) |
| [ "$X $Y" = "$ESP_START $ESP_SIZE" ] || error "fail at line $LINENO" |
| |
| X=$($GPT show -b -i $FUTURE_NUM ${DEV}) |
| Y=$($GPT show -s -i $FUTURE_NUM ${DEV}) |
| [ "$X $Y" = "$FUTURE_START $FUTURE_SIZE" ] || error "fail at line $LINENO" |
| |
| X=$($GPT show -b -i $RANDOM_NUM ${DEV}) |
| Y=$($GPT show -s -i $RANDOM_NUM ${DEV}) |
| [ "$X $Y" = "$RANDOM_START $RANDOM_SIZE" ] || error "fail at line $LINENO" |
| |
| |
| echo "Set the boot partition.." |
| $GPT boot -i ${KERN_NUM} ${DEV} >/dev/null |
| |
| echo "Check the PMBR's idea of the boot partition..." |
| X=$($GPT boot ${DEV}) |
| Y=$($GPT show -u -i $KERN_NUM $DEV) |
| [ "$X" = "$Y" ] || error "fail at line $LINENO" |
| |
| echo "Done." |
| |
| happy "All tests passed." |