The ZIP file contains some files that should be copied to a USB stick which is to be inserted into the Kronos. Let's have a look at the files:
bc
X86 32 Bit Linux Binary - a calculator
md5sum
X86 32 Bit Linux Binary - calculates MD5 checksums of files
DisplayUpdaterMessage
X86 32 Bit Linux Binary - opens a linux frame buffer device (/dev/fb1) that represents the Kronos' display (managed by the OMAP).
install.info
Holds information about the update itself. This is the first file that the Kronos reads when updating. Contains references to 3 other files (KRONOS_Update_3_0_2.tar.gz, pretar.sh, posttar.sh) and a signature.
The signature is the SHA1 of the following data (concatenated in the mentioned order):
- the contents of the pretar script (if given in the install.info)
- the contents of the posttar script (if given in the install.info)
- the following 16 "magic bytes": 13h, D0h, AFh, EFh, E0h, 3Ch, 9Bh, 92h, 16h, 2Fh, AEh, FFh, 77h, 53h, 55h, E1h
The updater (UpdateOS) will only accept the update if the signature in install.info is correct.
pretar.sh
A shell script (bash) that is called in the upgrade progress before the actual firmware is extracted. This script does the following things:
- Call DisplayUpdaterMessage to show "Verifying install media..."
- Call md5sum to calculate the MD5-Checksum of "KRONOS_Update_3_0_2.tar.gz" and compare it to a known value
- Call md5sum to calculate the MD5-Checksum of "DisplayUpdaterMessage" and compare it to a known value (pointless since DisplayUpdaterMessage has already been called before)
- Call md5sum to calculate the MD5-Checksum of "bc" and compare it to a known value
- Make sure (via kill and kill -9) that the following processes are not running: vsftpd, avahi-daemon, messagebus, ifplugd
- Make sure that the date is at least 1.12.2014
posttar.sh
A shell script (bash) that is called in the upgrade progress after the actual firmware is extracted. This script checks all extracted files' checkusms against the checksums stored in "KRONOS_Update_3_0_2.csum". It displays a progress bar by using "bc" to calulate the percentage of finished files and writing it to "writing to /proc/OmapNKS4ProgressBar"
KRONOS_Update_3_0_2.tar.gz
Contains the Kronos' root file system. This is the acutal firmware update. I will look into it and explain it's contents later in this post.
KRONOS_Update_3_0_2.csum
Contains checksums for all files in "KRONOS_Update_3_0_2.tar.gz". Used by posttar.sh to make sure that the firmware update was properly installed