user@starfive:~/firmware$ sudo ./check_firmware_v2.sh [sudo] password for user: VF2_v3.6.1 u-boot-spl.bin.normal.out 147336 e8570dd7b2d4e988698ca0de422f0861 72382a6e4944961fc4b20ca146bce9636b559daf VF2_v3.6.1 visionfive2_fw_payload.img 2969989 ed7bd86fa97ebcbc39efedd99df3db96 8f7aa8f33b7f00a5a492597f1f742bcba4f1a169 user@starfive:~/firmware$ cat check_firmware_v2.sh #!/bin/sh -- # format of data file: #firmware filename size md5sum sha1sum #VF2_v2.4.4 u-boot-spl.bin.normal.out 127816 f30ad74a0d92807d8e0027d69fba32ac 6443ebe2d99f492c56938a6a294e4587dcbc1e34 #VF2_v2.4.4 visionfive2_fw_payload.img 2792069 316a2504dd5bc9c807a25d7d3616e25b e2886b8c24a91c790c397ec905d473daf95833be USER=`id -u` if [ "${USER}" != "0" ]; then echo "For access to MTD devices, this script needs to run as the root user" exit 1 fi # backup once to a ramdisk before hammering to minimise wear on the SSD mkdir /tmp/ramdisk mount -t tmpfs -o size=20m tmpfs /tmp/ramdisk 2>/dev/null chmod 1777 /tmp/ramdisk dd if=/dev/mtd0 of=/tmp/ramdisk/mtd0 bs=4k count=64 2>/dev/null dd if=/dev/mtd1 of=/tmp/ramdisk/mtd1 bs=4k count=768 2>/dev/null # used information from "cat /proc/mtd" cat check_firmware.txt | while read line1 do read line2 # firmware1=`echo ${line1} | awk '{print $1}'` # filename1=`echo ${line1} | awk '{print $2}'` size1=`echo ${line1} | awk '{print $3}'` md5sum1=`echo ${line1} | awk '{print $4}'` sha1sum1=`echo ${line1} | awk '{print $5}'` MTD0_MD5=`dd if=/tmp/ramdisk/mtd0 bs=${size1} count=1 2>/dev/null | md5sum | awk '{print $1}'` MTD0_SHA1=`dd if=/tmp/ramdisk/mtd0 bs=${size1} count=1 2>/dev/null | sha1sum | awk '{print $1}'` if [ "${md5sum1}" = "${MTD0_MD5}" ]; then if [ "${sha1sum1}" = "${MTD0_SHA1}" ]; then echo ${line1} fi fi # firmware2=`echo ${line2} | awk '{print $1}'` # filename2=`echo ${line2} | awk '{print $2}'` size2=`echo ${line2} | awk '{print $3}'` md5sum2=`echo ${line2} | awk '{print $4}'` sha1sum2=`echo ${line2} | awk '{print $5}'` MTD1_MD5=`dd if=/tmp/ramdisk/mtd1 bs=${size2} count=1 2>/dev/null | md5sum | awk '{print $1}'` MTD1_SHA1=`dd if=/tmp/ramdisk/mtd1 bs=${size2} count=1 2>/dev/null | sha1sum | awk '{print $1}'` if [ "${md5sum2}" = "${MTD1_MD5}" ]; then if [ "${sha1sum2}" = "${MTD1_SHA1}" ]; then echo ${line2} fi fi done #tidy up rm /tmp/ramdisk/mtd0 rm /tmp/ramdisk/mtd1 umount /tmp/ramdisk rmdir /tmp/ramdisk user@starfive:~/firmware$ cat check_firmware.txt VF2_v2.4.4 u-boot-spl.bin.normal.out 127816 f30ad74a0d92807d8e0027d69fba32ac 6443ebe2d99f492c56938a6a294e4587dcbc1e34 VF2_v2.4.4 visionfive2_fw_payload.img 2792069 316a2504dd5bc9c807a25d7d3616e25b e2886b8c24a91c790c397ec905d473daf95833be VF2_v2.5.0 u-boot-spl.bin.normal.out 127816 1a8e399f270982acc6de88bb21bc9070 1773645e06b3b1eb27e7c6d370b5d4c6499076fa VF2_v2.5.0 visionfive2_fw_payload.img 2793045 fb4dabdefecd21ebcd8b0c3c84174aea ecd50b2190467976a2d9daaced95400b0193b166 VF2_v2.6.0 u-boot-spl.bin.normal.out 127816 dae53441f842ec1619e5d7fc17edb3a8 32386ca307e98deb342a1c5c08a12cc808e5ce83 VF2_v2.6.0 visionfive2_fw_payload.img 2793029 0bae62d9f0e4176d4253c8b23173e567 d04deb53763ff2011ba1e68068aef6979a326400 VF2_v2.8.0 u-boot-spl.bin.normal.out 130688 c44036b3a07ec93a165b76ec3df0704e 316c7be84eabbe8ab440dcd1ba4d4ac70d0ae817 VF2_v2.8.0 visionfive2_fw_payload.img 2797189 21ae1a326e9ab5c52a7502da059d7bc5 78b6a1526bec26b7d9d1d50c7c3001cf581003d8 VF2_v2.10.4 u-boot-spl.bin.normal.out 130688 491934f6454fd6b7b48199f8900a1a39 a230ccdf0d8e1a4e1a5573fdd69d02a218c18e15 VF2_v2.10.4 visionfive2_fw_payload.img 2797141 bf51e6a61373a2a9058a9169bb74c6ef cdf0b6c1026395d1ef82ccb7b7ce475d9881a46e VF2_v2.11.5 u-boot-spl.bin.normal.out 132208 1118cf69644d7565a4fc8c70de72dddb efe3acddc080878ff6ad0154c4737d6e7515d3f1 VF2_v2.11.5 visionfive2_fw_payload.img 2955397 f294bb0fd8972718078d11a6b7321f18 5dea73d1a4c3d3a07f6d46023addcf08affbf55c VF2_v3.0.4 u-boot-spl.bin.normal.out 132368 4cb6beece0179092b006b4c72a08e49a 0bf3f7a221078e60279a48e95139a99a4ce4cdbf VF2_v3.0.4 visionfive2_fw_payload.img 2956677 99df7275c60eb7057aeb41b78075de78 a5b138cd99dbf3726dadd28b64c53e1fcfc3398a VF2_v3.1.5 u-boot-spl.bin.normal.out 132368 a87f0d3a02b194d494b553088ff16f01 af6e549027fe3386e8c00aec766086576878c651 VF2_v3.1.5 visionfive2_fw_payload.img 2956613 e0238fcf7f354dd4089d3d5f5bd894c9 ac41541332461efe70e337ad2650a7d19ccff9b2 VF2_v3.4.5 u-boot-spl.bin.normal.out 147336 0c18b40c209957e62baa939efb18541f 3c24004fd36fd7abd914cc66eb0e0cdbf2f511ad VF2_v3.4.5 visionfive2_fw_payload.img 2969829 959fbdb32fee949c7ddaa3151559bb73 844b90d53c7766d7c9842a68f8cd4f5762a81a44 VF2_v3.6.1 u-boot-spl.bin.normal.out 147336 e8570dd7b2d4e988698ca0de422f0861 72382a6e4944961fc4b20ca146bce9636b559daf VF2_v3.6.1 visionfive2_fw_payload.img 2969989 ed7bd86fa97ebcbc39efedd99df3db96 8f7aa8f33b7f00a5a492597f1f742bcba4f1a169 VF2_v3.7.5 u-boot-spl.bin.normal.out 147336 8ca05f3a39944407b636a69456bfb296 53e1f71af602d8732218f4117173602aed3efde9 VF2_v3.7.5 visionfive2_fw_payload.img 3013685 452013678845508e3ea54b35e9ad840a 508c39f51ff7d8e6a926eccd84f93e02214c7cb8 user@starfive:~/firmware$