summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLei YU <mine260309@gmail.com>2019-02-21 13:19:03 +0800
committerLei YU <mine260309@gmail.com>2019-03-13 11:01:49 +0800
commitdcb3fd799cd353925aaa269413b68b672f99315c (patch)
tree5c14d86f0aea3d53697c878994112c3b10cb3753
parenta9ac9279a625bdfeb3a2c0ea9c8026a516000d58 (diff)
downloadopenpower-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-xgenerate-tar (renamed from generate-squashfs)81
-rwxr-xr-xgenerate-ubi4
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
OpenPOWER on IntegriCloud