diff --git a/Makefile b/Makefile
index 268296925449f3d7d4e746974d2f2483422f8264..ef266ea5ed622e92dce7c5ff9f89b2929a4ac014 100644
--- a/Makefile
+++ b/Makefile
@@ -180,6 +180,7 @@ GLUON_$(1)_MODEL_$(2)_ALIASES += $(3)
 endef
 
 
+export SHA256SUM := $(GLUONDIR)/scripts/sha256sum.sh
 export SHA512SUM := $(GLUONDIR)/scripts/sha512sum.sh
 
 
@@ -489,11 +490,16 @@ manifest: FORCE
 			$(if $(GLUON_$(profile)_SYSUPGRADE_EXT), \
 				$(foreach model,$(GLUON_$(profile)_MODELS), \
 					file="$(IMAGE_PREFIX)-$(model)-sysupgrade$(GLUON_$(profile)_SYSUPGRADE_EXT)"; \
-					[ -e "$$file" ] && echo '$(model)' "$(PREPARED_RELEASE)" "$$($(SHA512SUM) "$$file")" "$$file"; \
-					\
+					[ -e "$$file" ] && ( \
+						echo '$(model)' "$(PREPARED_RELEASE)" "$$($(SHA256SUM) "$$file")" "$$file"; \
+						echo '$(model)' "$(PREPARED_RELEASE)" "$$($(SHA512SUM) "$$file")" "$$file"; \
+					); \
 					$(foreach alias,$(GLUON_$(profile)_MODEL_$(model)_ALIASES), \
 						file="$(IMAGE_PREFIX)-$(alias)-sysupgrade$(GLUON_$(profile)_SYSUPGRADE_EXT)"; \
-						[ -e "$$file" ] && echo '$(alias)' "$(PREPARED_RELEASE)" "$$($(SHA512SUM) "$$file")" "$$file"; \
+						[ -e "$$file" ] && ( \
+							echo '$(alias)' "$(PREPARED_RELEASE)" "$$($(SHA256SUM) "$$file")" "$$file"; \
+							echo '$(alias)' "$(PREPARED_RELEASE)" "$$($(SHA512SUM) "$$file")" "$$file"; \
+						); \
 					) \
 				) \
 			) \
diff --git a/scripts/sha256sum.sh b/scripts/sha256sum.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e4f6f3e5b9e8fc532158e28d39c9df3ec6d6e45e
--- /dev/null
+++ b/scripts/sha256sum.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+check_command() {
+	which "$1" >/dev/null 2>&1
+}
+
+if check_command sha256sum; then
+	ret="$(sha256sum "$@")"
+elif check_command shasum; then
+	ret="$(shasum -a 256 "$@")"
+elif check_command cksum; then
+	ret="$(cksum -q -a sha256 "$@")"
+else
+	echo "$0: no suitable sha256sum implementation was found" >&2
+	exit 1
+fi
+
+[ "$?" -eq 0 ] || exit 1
+
+echo "$ret" | awk '{ print $1 }'