diff options
| author | Lei YU <mine260309@gmail.com> | 2019-02-21 13:19:03 +0800 |
|---|---|---|
| committer | Lei YU <mine260309@gmail.com> | 2019-03-13 11:01:49 +0800 |
| commit | dcb3fd799cd353925aaa269413b68b672f99315c (patch) | |
| tree | 5c14d86f0aea3d53697c878994112c3b10cb3753 | |
| parent | a9ac9279a625bdfeb3a2c0ea9c8026a516000d58 (diff) | |
| download | openpower-pnor-code-mgmt-dcb3fd799cd353925aaa269413b68b672f99315c.tar.gz openpower-pnor-code-mgmt-dcb3fd799cd353925aaa269413b68b672f99315c.zip | |
Static layout: Generate tar.gz for static layout pnor
Add --image_type option to specify the image type of generated PNOR in
tarball.
Support "squashfs" and "static" image types.
Rename `generate-squashfs` to `generate-tar` to reflect that this util
is to generate a tarball instead of squashfs.
Example of usage:
# Generate unsigned tarball for Witherspoon
./generate-tar -i squashfs witherspoon.pnor
# Generate signed tarball with default key for Witherspoon
./generate-tar -i squashfs -s -- witherspoon.pnor
# Generate unsigned tarball for Romulus
./generate-tar -i static romulus.pnor
# Generate signed tarball with default key for Romulus
./generate-tar -i static -s -- romulus.pnor
Tested: Verify the generated tarball contains correct files.
Change-Id: Ibb66605663b28888bd643baf92d6e4bdbf60c206
Signed-off-by: Lei YU <mine260309@gmail.com>
| -rwxr-xr-x | generate-tar (renamed from generate-squashfs) | 81 | ||||
| -rwxr-xr-x | generate-ubi | 4 |
2 files changed, 65 insertions, 20 deletions
diff --git a/generate-squashfs b/generate-tar index 71f4e5e18..d90aefa42 100755 --- a/generate-squashfs +++ b/generate-tar @@ -1,19 +1,26 @@ #!/bin/bash set -eo pipefail -help=$'Generate Tarball with PNOR SquashFS image and MANIFEST Script +help=$'Generate Tarball with PNOR image and MANIFEST Script -Generates a PNOR SquashFS image from the PNOR image +Generates a PNOR SquashFS image from the PNOR image for VPNOR, +Or use a static layout raw PNOR image, Creates a MANIFEST for image verification and recreation -Packages the SquashFS image and MANIFEST together in a tarball +Packages the image and MANIFEST together in a tarball -usage: generate-squashfs [OPTION] <PNOR FILE>... +usage: generate-tar [OPTION] <PNOR FILE>... Options: + -i, --image <squashfs|static> + Generate SquashFS image or use static PNOR -f, --file <file> Specify destination file. Defaults to - `pwd`/<PNOR FILE>.pnor.squashfs.tar if unspecified. - (For example, "generate-squashfs my.pnor" would - generate `pwd`/my.pnor.squashfs.tar output.) + `pwd`/<PNOR FILE>.pnor.<image_type>.tar[.gz] if + unspecified. + (For example, + * "generate-tar -i squashfs my.pnor" would generate + `pwd`/my.pnor.squashfs.tar + * "generate-tar -i static my.pnor" would generate + `pwd`/my.pnor.static.tar.gz) -s, --sign <path> Sign the image. The optional path argument specifies the private key file. Defaults to the bash variable PRIVATE_KEY_PATH if available, or else uses the @@ -46,6 +53,7 @@ let ffs_entry_size=128 let vercheck_offset=112 do_sign=false private_key_path="${PRIVATE_KEY_PATH}" +image_type="" outfile="" declare -a partitions=() tocfile="pnor.toc" @@ -53,6 +61,10 @@ tocfile="pnor.toc" while [[ $# -gt 0 ]]; do key="$1" case $key in + -i|--image) + image_type="$2" + shift 2 + ;; -f|--file) outfile="$2" shift 2 @@ -83,11 +95,26 @@ if [ ! -f "${pnorfile}" ]; then exit 1 fi +if [[ "${image_type}" == "squashfs" ]]; then + echo "Will generate squashfs image for VPNOR" +elif [[ "${image_type}" == "static" ]]; then + echo "Will use static image for PNOR" +else + echo "Please specify the image type, \"squashfs\" or \"static\"" + echo + echo "$help" + exit 1 +fi + if [[ -z $outfile ]]; then if [[ ${pnorfile##*.} == "pnor" ]]; then - outfile=`pwd`/${pnorfile##*/}.squashfs.tar + outfile=`pwd`/${pnorfile##*/}.$image_type.tar else - outfile=`pwd`/${pnorfile##*/}.pnor.squashfs.tar + outfile=`pwd`/${pnorfile##*/}.pnor.$image_type.tar + fi + if [[ "${image_type}" == "static" ]]; then + # Append .gz so the tarball is compressed + outfile=$outfile.gz fi else if [[ $outfile != /* ]]; then @@ -95,6 +122,7 @@ else fi fi + scratch_dir=`mktemp -d` if [[ "${do_sign}" == true ]]; then @@ -172,12 +200,24 @@ for partition in "${partitions[@]}"; do -F ${pnorfile} done -echo "Creating SquashFS image..." -cd "${scratch_dir}" -mksquashfs ${tocfile} ${partitions[*]} pnor.xz.squashfs +manifest_location="MANIFEST" +files_to_sign="$manifest_location $public_key_file" + +# Go to scratch_dir + +if [[ "${image_type}" == "squashfs" ]]; then + echo "Creating SquashFS image..." + # Prepare pnor file in scratch_dir + cd "${scratch_dir}" + mksquashfs ${tocfile} ${partitions[*]} pnor.xz.squashfs + files_to_sign+=" pnor.xz.squashfs" +else + cp ${pnorfile} ${scratch_dir} + cd "${scratch_dir}" + files_to_sign+=" $(basename ${pnorfile})" +fi echo "Creating MANIFEST for the image" -manifest_location="MANIFEST" echo -e "purpose=xyz.openbmc_project.Software.Version.VersionPurpose.Host\nversion=$version\n\ extended_version=$extended_version" >> $manifest_location @@ -187,15 +227,20 @@ if [[ "${do_sign}" == true ]]; then echo KeyType="${key_type}" >> $manifest_location echo HashType="RSA-SHA256" >> $manifest_location - for file in pnor.xz.squashfs $manifest_location $public_key_file; do + for file in $files_to_sign; do openssl dgst -sha256 -sign ${private_key_path} -out "${file}.sig" $file done - additional_files="${public_key_file} *.sig" + additional_files="*.sig" fi -echo "Generating tarball to contain the SquashFS image and its MANIFEST" -tar -cvf $outfile $manifest_location pnor.xz.squashfs $additional_files +if [[ "${image_type}" == "squashfs" ]]; then + echo "Generating tarball to contain the SquashFS image and its MANIFEST" + tar -cvf $outfile $files_to_sign $additional_files + echo "SquashFSTarball at ${outfile}" +else + tar -czvf $outfile $files_to_sign $additional_files + echo "Static layout tarball at $outfile" +fi -echo "SquashFSTarball at ${outfile}" rm -r "${scratch_dir}" diff --git a/generate-ubi b/generate-ubi index 5c2b1b832..d54634c59 100755 --- a/generate-ubi +++ b/generate-ubi @@ -4,7 +4,7 @@ set -eo pipefail help=$'Generate PNOR UBI image from a PNOR SquashFS Tarball Generates a UBI, Unsorted Block Images, PNOR image from a PNOR SquashFS Tarball. -The PNOR SquashFS Tarball is generated from the generate-squashfs script. +The PNOR SquashFS Tarball is generated from the generate-tar script. usage: generate-ubi [OPTION] <PNOR SquashFS Tarball>... @@ -44,7 +44,7 @@ done if [ ! -f "${tarball}" ]; then echo "Please enter a PNOR SquashFS Tarball." - echo "To generate PNOR SquashFS Tarball see generate-squashfs" + echo "To generate PNOR SquashFS Tarball see generate-tar" echo "$help" exit 1 fi |

