GSOC official firmware - mdubinko/gsoc-contrib GitHub Wiki

Official firmware updates can be examined (as of v1.3) as follows.

Unpacking the firmware (requires Linux)

% sudo fdisk -l sdcard.img

=>

Disk sdcard.img: 811 MiB, 850395136 bytes, 1660928 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device      Boot   Start     End Sectors  Size Id Type
sdcard.img1 *       2048   22527   20480   10M  c W95 FAT32 (LBA)
sdcard.img2        22528  841727  819200  400M 83 Linux
sdcard.img3       841728 1660927  819200  400M  c W95 FAT32 (LBA)

To mount the first/third partition: (replace 2048 below with the appropriate Start sector and 20480 with total Sectors)

sudo mount -t vfat -o loop,ro,offset=$((2048 * 512)),sizelimit=$((20480 * 512)) sdcard.img /mnt/disk1

And for the second one: (again, substitute in the appropriate Start sector)

sudo mount -t ext4 -o loop,ro,offset=$((22528 * 512)),sizelimit=$((819200 * 512)) sdcard.img /mnt/disk2

Partition 1 contains boot files, based on the ARM U-Boot system

Partition 3 contains a a single file rootfs.tar, which unpacks to a complete Linux filesystem including binaries and config files. Depending on how your your OS mounts the SD card, this may be what you see if you insert the SD card into your computer.

Partition 2, which requires the ability to mount an ext4 filesystem, seems to be an exact copy (already unpacked) of partition 3.

Partition 2 is operative when booting from the SD card (in other words, during the firmware update process) while the unpacked and copied filesystem from Partition 3 is operative from main eMMC storage during normal GSOC operation.