mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-22 06:01:41 +02:00
sha256_partitions: script to easily sha256 partitions of a .bin file.
This script is short and should run on any Ubuntu system, outside the chroot. This will help testers and release-engineers see the checksums that .bin files contain. BUG=chromium-os:18940 TEST=manually ran outside chroot Change-Id: Ib742f946d0724c57d67e7bd1236f4a490d996313 Reviewed-on: http://gerrit.chromium.org/gerrit/5613 Reviewed-by: Andrew de los Reyes <adlr@chromium.org> Tested-by: Andrew de los Reyes <adlr@chromium.org>
This commit is contained in:
parent
e4e3decfc0
commit
f984f20a3f
50
sha256_partitions.sh
Executable file
50
sha256_partitions.sh
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Copyright (c) 2011 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.
|
||||||
|
|
||||||
|
# This should be able to run outside the chroot on a standard Ubuntu system.
|
||||||
|
|
||||||
|
BINFILE="$1"
|
||||||
|
|
||||||
|
if [ -z "$BINFILE" ]; then
|
||||||
|
echo "usage: $0 .../path/to/file.bin"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
parted "$BINFILE" unit s print | awk -v BF="$BINFILE" '
|
||||||
|
/KERN-|ROOT-/ {
|
||||||
|
# Common things
|
||||||
|
printf "Partition " $1 " (" $NF "): "
|
||||||
|
start=substr($2, 0, length($2) - 1) # strip trailing "s"
|
||||||
|
}
|
||||||
|
|
||||||
|
/KERN-/ {
|
||||||
|
cnt=substr($4, 0, length($4) - 1)
|
||||||
|
system("dd if=\"" BF "\" bs=512 skip=" start " count=" cnt \
|
||||||
|
" 2>/dev/null | openssl dgst -sha256 -binary | openssl base64")
|
||||||
|
}
|
||||||
|
|
||||||
|
/ROOT-/ {
|
||||||
|
# we have rootfs. find the filesystem size
|
||||||
|
"mktemp" | getline tmpfile
|
||||||
|
close("mktemp")
|
||||||
|
system("dd if=" BF " bs=512 skip=" start \
|
||||||
|
" count=400 of=" tmpfile " 2>/dev/null") # copy superblock
|
||||||
|
blkcnt = 0
|
||||||
|
cmd = "dumpe2fs " tmpfile " 2>/dev/null | grep \"Block count\" | \
|
||||||
|
sed \"s/[^0-9]*//\""
|
||||||
|
cmd | getline blkcnt
|
||||||
|
close(cmd)
|
||||||
|
system("rm -f " tmpfile)
|
||||||
|
if (blkcnt > 0) {
|
||||||
|
blkcnt *= 8 # 4096 byte blocks -> 512 byte sectors
|
||||||
|
system("dd if=\"" BF "\" bs=512 skip=" start " count=" blkcnt \
|
||||||
|
" 2>/dev/null | openssl dgst -sha256 -binary | openssl base64")
|
||||||
|
} else {
|
||||||
|
print "invalid filesystem"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
'
|
Loading…
x
Reference in New Issue
Block a user