Changes between Version 24 and Version 25 of provisioning
- Timestamp:
- 10/26/2023 04:57:36 PM (13 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
provisioning
v24 v25 9 9 10 10 == Overall Venice Recommendations 11 This wiki page has a great amount of information. 12 13 Provisioning refers to flashing 100s or 1000s of boards with the same software when placing a large order with Gateworks. Gateworks typically does not want a 900MB .bin JTAG file because this will take forever to flash. Gateworks prefers a compressed image that shortens the time to flash the eMMC. 14 15 16 There are two recommended options from Gateworks: 11 This wiki page has a great amount of information with many different options depending on needs and desires. 12 13 Provisioning refers to flashing 100s or 1000s of boards with the same software when placing a large order with Gateworks. 14 15 Gateworks typically does not want a 900MB .bin JTAG file because this will take forever to flash. Gateworks prefers a compressed image that shortens the time to flash the eMMC. 16 17 Typical compressed disk images with Ubuntu or Buildroot will be 25-300MB. This disk image can then be flashed to the Gateworks board with the update_all script in the bootloader as defined here: [wiki:venice/firmware#disk-images] 18 19 A compressed disk image is most easily built with the Venice Ubuntu BSP, here: [wiki:venice/bsp] 20 21 To understand how the Venice BSP puts together all the bootloader, kernel, rootfs, etc all together into a compressed disk image, study the BSP Makefile, target ubuntu-image: [https://github.com/Gateworks/bsp-venice/blob/master/Makefile] 22 23 Once completed, send Gateworks support team your .img.gz compressed disk image to be applied to a large order. 24 25 == More Venice Options 26 27 28 There are other recommended options from Gateworks: 17 29 * Option A: 18 30 * Pull off / rip an image of a single known configured system ('gold image') and then flash to 100s of more boards … … 38 50 You will either need to store this on a mounted removable storage device partition or store to ramdisk (as above) and transfer them via network. If the compressed data exceeds the size of the ramdisk you will need to go straight to removable storage. 39 51 40 The reason you do not want to simple compress the entire eMMC device(/dev/mmcblk2 on Venice) or partition (/dev/mmcblk2p1 for example) is because this will end up a) compressing unused data which will very likely not compress well because it is un-allocated and likely random data b) also ends up writing all unused data which takes a lot of time during the installation process52 The reason you do not want to simple compress the '''entire eMMC device''' (/dev/mmcblk2 on Venice) or partition (/dev/mmcblk2p1 for example) is because this will end up a) compressing unused data which will very likely not compress well because it is un-allocated and likely random data b) also ends up writing all unused data which takes a lot of time during the installation process 41 53 42 54 To install your 'gold image' on a target: … … 58 70 }}} 59 71 60 Repeat the above for all partitions and follow-up with any additional per-device modifications you would like to make (ie doing something that depends on the devices serial-number from /proc/device-tree/serial-number, a mac address, or a unique ID from a crypto device .72 Repeat the above for all partitions and follow-up with any additional per-device modifications you would like to make (ie doing something that depends on the devices serial-number from /proc/device-tree/serial-number, a mac address, or a unique ID from a crypto device). 61 73 62 74 === Option B Details 63 75 Create an image programatically by building Ubuntu with changes embedded into the build and then flash to 100s of more boards. 76 77 This is similar to building the Venice BSP but with modifications to Ubuntu (such as packages pre-installed) 64 78 65 79 If you want a more 'programmatic' way of creating your image that doesn't involve ripping the contents of a 'gold image' that may have been created through a complex variety of manual steps (Some engineers always prefer programmatic approaches):