diff options
| author | cajun-rat <p@beta16.co.uk> | 2017-04-04 14:45:31 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-04-04 14:45:31 +0200 |
| commit | 610469510ec9dbac95fc415f71abdcb55e0fc18b (patch) | |
| tree | bd18751638ce99904dcd68ad2eba6e6db7851f41 /classes | |
| parent | feb5a6a1da2faf088d6c5d3e3eeb07471074f0bf (diff) | |
| parent | 82a3c13a0b0c9979fa0812143d619748aa89c85d (diff) | |
| download | meta-updater-610469510ec9dbac95fc415f71abdcb55e0fc18b.tar.gz | |
Merge pull request #40 from advancedtelematic/feat/syncagl
Synchronize with AGL's meta-sota progress
Diffstat (limited to 'classes')
| -rw-r--r-- | classes/image_types_ostree.bbclass | 9 | ||||
| -rw-r--r-- | classes/image_types_ota.bbclass | 53 | ||||
| -rw-r--r-- | classes/sdcard_image-dra7xx-evm-ota.bbclass | 72 | ||||
| -rw-r--r-- | classes/sdcard_image-minnowboard-ota.bbclass | 78 | ||||
| -rw-r--r-- | classes/sdcard_image-porter-ota.bbclass | 78 | ||||
| -rw-r--r-- | classes/sdcard_image-rpi-ota.bbclass | 15 |
6 files changed, 45 insertions, 260 deletions
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass index 8b3cbcd..59d4510 100644 --- a/classes/image_types_ostree.bbclass +++ b/classes/image_types_ostree.bbclass | |||
| @@ -68,6 +68,10 @@ IMAGE_CMD_ostree () { | |||
| 68 | ln -s ../init.d/tmpfiles.sh usr/etc/rcS.d/S20tmpfiles.sh | 68 | ln -s ../init.d/tmpfiles.sh usr/etc/rcS.d/S20tmpfiles.sh |
| 69 | fi | 69 | fi |
| 70 | 70 | ||
| 71 | # Preserve OSTREE_BRANCHNAME for future information | ||
| 72 | mkdir -p usr/share/sota/ | ||
| 73 | echo -n "${OSTREE_BRANCHNAME}" > usr/share/sota/branchname | ||
| 74 | |||
| 71 | # Preserve data in /home to be later copied to /sysroot/home by | 75 | # Preserve data in /home to be later copied to /sysroot/home by |
| 72 | # sysroot generating procedure | 76 | # sysroot generating procedure |
| 73 | mkdir -p usr/homedirs | 77 | mkdir -p usr/homedirs |
| @@ -122,7 +126,7 @@ IMAGE_CMD_ostree () { | |||
| 122 | cp ${DEPLOY_DIR_IMAGE}/${OSTREE_INITRAMFS_IMAGE}-${MACHINE}${RAMDISK_EXT} boot/initramfs-${checksum} | 126 | cp ${DEPLOY_DIR_IMAGE}/${OSTREE_INITRAMFS_IMAGE}-${MACHINE}${RAMDISK_EXT} boot/initramfs-${checksum} |
| 123 | 127 | ||
| 124 | # Copy image manifest | 128 | # Copy image manifest |
| 125 | cat ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.manifest | cut -d " " -f1,3 > usr/package.manifest | 129 | cat ${IMAGE_MANIFEST} | cut -d " " -f1,3 > usr/package.manifest |
| 126 | 130 | ||
| 127 | cd ${WORKDIR} | 131 | cd ${WORKDIR} |
| 128 | 132 | ||
| @@ -154,6 +158,7 @@ IMAGE_CMD_ostreepush () { | |||
| 154 | if [ ${OSTREE_PUSH_CREDENTIALS} ]; then | 158 | if [ ${OSTREE_PUSH_CREDENTIALS} ]; then |
| 155 | garage-push --repo=${OSTREE_REPO} \ | 159 | garage-push --repo=${OSTREE_REPO} \ |
| 156 | --ref=${OSTREE_BRANCHNAME} \ | 160 | --ref=${OSTREE_BRANCHNAME} \ |
| 157 | --credentials=${OSTREE_PUSH_CREDENTIALS} | 161 | --credentials=${OSTREE_PUSH_CREDENTIALS} \ |
| 162 | --cacert=${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt | ||
| 158 | fi | 163 | fi |
| 159 | } | 164 | } |
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass index bee1ea4..74533dd 100644 --- a/classes/image_types_ota.bbclass +++ b/classes/image_types_ota.bbclass | |||
| @@ -9,12 +9,9 @@ | |||
| 9 | 9 | ||
| 10 | inherit image | 10 | inherit image |
| 11 | 11 | ||
| 12 | IMAGE_DEPENDS_otaimg = "e2fsprogs-native:do_populate_sysroot" | 12 | IMAGE_DEPENDS_otaimg = "e2fsprogs-native:do_populate_sysroot \ |
| 13 | 13 | ${@'grub:do_populate_sysroot' if d.getVar('OSTREE_BOOTLOADER', True) == 'grub' else ''} \ | |
| 14 | # For qemux86 u-boot is not included in any live image and is built separately | 14 | ${@'virtual/bootloader:do_deploy' if d.getVar('OSTREE_BOOTLOADER', True) == 'u-boot' else ''}" |
| 15 | IMAGE_DEPENDS_otaimg_append_qemux86 = " virtual/bootloader:do_deploy" | ||
| 16 | IMAGE_DEPENDS_otaimg_append_qemux86-64 = " virtual/bootloader:do_deploy" | ||
| 17 | IMAGE_DEPENDS_otaimg_append_corei7-64-intel-common = " virtual/bootloader:do_deploy" | ||
| 18 | 15 | ||
| 19 | calculate_size () { | 16 | calculate_size () { |
| 20 | BASE=$1 | 17 | BASE=$1 |
| @@ -52,6 +49,7 @@ calculate_size () { | |||
| 52 | export OSTREE_OSNAME | 49 | export OSTREE_OSNAME |
| 53 | export OSTREE_BRANCHNAME | 50 | export OSTREE_BRANCHNAME |
| 54 | export OSTREE_REPO | 51 | export OSTREE_REPO |
| 52 | export OSTREE_BOOTLOADER | ||
| 55 | 53 | ||
| 56 | IMAGE_CMD_otaimg () { | 54 | IMAGE_CMD_otaimg () { |
| 57 | if ${@bb.utils.contains('IMAGE_FSTYPES', 'otaimg', 'true', 'false', d)}; then | 55 | if ${@bb.utils.contains('IMAGE_FSTYPES', 'otaimg', 'true', 'false', d)}; then |
| @@ -76,32 +74,31 @@ IMAGE_CMD_otaimg () { | |||
| 76 | mkdir -p ${PHYS_SYSROOT}/boot/loader.0 | 74 | mkdir -p ${PHYS_SYSROOT}/boot/loader.0 |
| 77 | ln -s loader.0 ${PHYS_SYSROOT}/boot/loader | 75 | ln -s loader.0 ${PHYS_SYSROOT}/boot/loader |
| 78 | 76 | ||
| 79 | touch ${PHYS_SYSROOT}/boot/loader/uEnv.txt | 77 | if [ "${OSTREE_BOOTLOADER}" = "grub" ]; then |
| 78 | mkdir -p ${PHYS_SYSROOT}/boot/grub2 | ||
| 79 | touch ${PHYS_SYSROOT}/boot/grub2/grub.cfg | ||
| 80 | elif [ "${OSTREE_BOOTLOADER}" = "u-boot" ]; then | ||
| 81 | touch ${PHYS_SYSROOT}/boot/loader/uEnv.txt | ||
| 82 | else | ||
| 83 | bberror "Invalid bootloader: ${OSTREE_BOOTLOADER}" | ||
| 84 | fi; | ||
| 80 | 85 | ||
| 81 | ostree --repo=${PHYS_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${OSTREE_BRANCHNAME} | 86 | ostree --repo=${PHYS_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${OSTREE_BRANCHNAME} |
| 82 | ostree admin --sysroot=${PHYS_SYSROOT} deploy --os=${OSTREE_OSNAME} ${OSTREE_OSNAME}:${OSTREE_BRANCHNAME} | 87 | export OSTREE_BOOT_PARTITION="/boot" |
| 83 | 88 | kargs_list="" | |
| 84 | # Copy deployment /home to sysroot | 89 | for arg in ${OSTREE_KERNEL_ARGS}; do |
| 90 | kargs_list="${kargs_list} --karg-append=$arg" | ||
| 91 | done | ||
| 92 | |||
| 93 | ostree admin --sysroot=${PHYS_SYSROOT} deploy ${kargs_list} --os=${OSTREE_OSNAME} ${OSTREE_OSNAME}:${OSTREE_BRANCHNAME} | ||
| 94 | |||
| 95 | # Copy deployment /home and /var/sota to sysroot | ||
| 85 | HOME_TMP=`mktemp -d ${WORKDIR}/home-tmp-XXXXX` | 96 | HOME_TMP=`mktemp -d ${WORKDIR}/home-tmp-XXXXX` |
| 86 | tar --xattrs --xattrs-include='*' -C ${HOME_TMP} -xf ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.ostree.tar.bz2 ./usr/homedirs | 97 | tar --xattrs --xattrs-include='*' -C ${HOME_TMP} -xf ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.ostree.tar.bz2 ./usr/homedirs ./var/sota || true |
| 87 | mv ${HOME_TMP}/usr/homedirs/home ${PHYS_SYSROOT}/ | 98 | > mv ${HOME_TMP}/var/sota ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/ || true |
| 99 | mv ${HOME_TMP}/usr/homedirs/home ${PHYS_SYSROOT}/ || true | ||
| 88 | rm -rf ${HOME_TMP} | 100 | rm -rf ${HOME_TMP} |
| 89 | 101 | ||
| 90 | # Deploy device credentials | ||
| 91 | if [ -n "$SOTA_CREDENTIALS" ]; then | ||
| 92 | if [ -f "$SOTA_CREDENTIALS" ]; then | ||
| 93 | EXT=`basename $SOTA_CREDENTIALS | cut -d'.' -f2` | ||
| 94 | if [ "$EXT" != "toml" ]; then | ||
| 95 | bbwarn "File\'s extension is not \'toml\', make sure you have the correct file" | ||
| 96 | fi | ||
| 97 | |||
| 98 | cat $SOTA_CREDENTIALS | sed 's/^package_manager = .*$/package_manager = "ostree"/' > ${PHYS_SYSROOT}/boot/sota.toml | ||
| 99 | chmod 644 ${PHYS_SYSROOT}/boot/sota.toml | ||
| 100 | else | ||
| 101 | bberror "File $SOTA_CREDENTIALS does not exist" | ||
| 102 | fi | ||
| 103 | fi | ||
| 104 | |||
| 105 | # Calculate image type | 102 | # Calculate image type |
| 106 | OTA_ROOTFS_SIZE=$(calculate_size `du -ks $PHYS_SYSROOT | cut -f 1` "${IMAGE_OVERHEAD_FACTOR}" "${IMAGE_ROOTFS_SIZE}" "${IMAGE_ROOTFS_MAXSIZE}" `expr ${IMAGE_ROOTFS_EXTRA_SPACE}` "${IMAGE_ROOTFS_ALIGNMENT}") | 103 | OTA_ROOTFS_SIZE=$(calculate_size `du -ks $PHYS_SYSROOT | cut -f 1` "${IMAGE_OVERHEAD_FACTOR}" "${IMAGE_ROOTFS_SIZE}" "${IMAGE_ROOTFS_MAXSIZE}" `expr ${IMAGE_ROOTFS_EXTRA_SPACE}` "${IMAGE_ROOTFS_ALIGNMENT}") |
| 107 | 104 | ||
| @@ -118,7 +115,7 @@ IMAGE_CMD_otaimg () { | |||
| 118 | rm -rf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg | 115 | rm -rf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg |
| 119 | sync | 116 | sync |
| 120 | dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg seek=$OTA_ROOTFS_SIZE count=$COUNT bs=1024 | 117 | dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg seek=$OTA_ROOTFS_SIZE count=$COUNT bs=1024 |
| 121 | mkfs.ext4 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg -d ${PHYS_SYSROOT} | 118 | mkfs.ext4 -O ^64bit ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg -d ${PHYS_SYSROOT} |
| 122 | rm -rf ${PHYS_SYSROOT} | 119 | rm -rf ${PHYS_SYSROOT} |
| 123 | 120 | ||
| 124 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.otaimg | 121 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.otaimg |
diff --git a/classes/sdcard_image-dra7xx-evm-ota.bbclass b/classes/sdcard_image-dra7xx-evm-ota.bbclass deleted file mode 100644 index f023649..0000000 --- a/classes/sdcard_image-dra7xx-evm-ota.bbclass +++ /dev/null | |||
| @@ -1,72 +0,0 @@ | |||
| 1 | inherit image_types | ||
| 2 | |||
| 3 | # Boot partition volume id | ||
| 4 | BOOTDD_VOLUME_ID ?= "${MACHINE}" | ||
| 5 | |||
| 6 | # Boot partition size [in KiB] (will be rounded up to IMAGE_ROOTFS_ALIGNMENT) | ||
| 7 | BOOT_SPACE ?= "4096" | ||
| 8 | |||
| 9 | IMAGE_ROOTFS_ALIGNMENT = "4096" | ||
| 10 | SDIMG_OTA_ROOTFS_TYPE ?= "otaimg" | ||
| 11 | SDIMG_OTA_ROOTFS = "${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${SDIMG_OTA_ROOTFS_TYPE}" | ||
| 12 | |||
| 13 | IMAGE_TYPEDEP_dra7xx-evm-sdimg-ota = "${SDIMG_OTA_ROOTFS_TYPE}" | ||
| 14 | IMAGE_DEPENDS_dra7xx-evm-sdimg-ota = " \ | ||
| 15 | parted-native \ | ||
| 16 | mtools-native \ | ||
| 17 | dosfstools-native \ | ||
| 18 | " | ||
| 19 | |||
| 20 | SDIMG_OTA = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.dra7xx-evm-sdimg-ota" | ||
| 21 | |||
| 22 | IMAGE_CMD_dra7xx-evm-sdimg-ota () { | ||
| 23 | OTAROOT_SIZE=`du -Lb ${SDIMG_OTA_ROOTFS} | cut -f1` | ||
| 24 | OTAROOT_SIZE=$(expr ${OTAROOT_SIZE} / 1024 + 1) | ||
| 25 | BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1) | ||
| 26 | BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT}) | ||
| 27 | SDIMG_OTA_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $OTAROOT_SIZE) | ||
| 28 | |||
| 29 | echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS $OTAROOT_SIZE KiB" | ||
| 30 | |||
| 31 | # Initialize sdcard image file | ||
| 32 | dd if=/dev/zero of=${SDIMG_OTA} bs=1024 count=0 seek=${SDIMG_OTA_SIZE} | ||
| 33 | |||
| 34 | # Create partition table | ||
| 35 | parted -s ${SDIMG_OTA} mklabel msdos | ||
| 36 | # Create boot partition and mark it as bootable | ||
| 37 | parted -s ${SDIMG_OTA} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) | ||
| 38 | parted -s ${SDIMG_OTA} set 1 boot on | ||
| 39 | # Create rootfs partition to the end of disk | ||
| 40 | parted -s ${SDIMG_OTA} -- unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) -1s | ||
| 41 | parted ${SDIMG_OTA} print | ||
| 42 | |||
| 43 | # Create a vfat image with boot files | ||
| 44 | BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDIMG_OTA} unit b print | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 512 /2 }') | ||
| 45 | rm -f ${WORKDIR}/boot.img | ||
| 46 | mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS | ||
| 47 | sync | ||
| 48 | |||
| 49 | sync | ||
| 50 | #dd if=${WORKDIR}/boot.img of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync | ||
| 51 | |||
| 52 | if echo "${SDIMG_OTA_ROOTFS_TYPE}" | egrep -q "*\.xz" | ||
| 53 | then | ||
| 54 | xzcat ${SDIMG_OTA_ROOTFS} | dd of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync | ||
| 55 | else | ||
| 56 | dd if=${SDIMG_OTA_ROOTFS} of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync | ||
| 57 | fi | ||
| 58 | |||
| 59 | # Optionally apply compression | ||
| 60 | case "${SDIMG_OTA_COMPRESSION}" in | ||
| 61 | "gzip") | ||
| 62 | gzip -k9 "${SDIMG_OTA}" | ||
| 63 | ;; | ||
| 64 | "bzip2") | ||
| 65 | bzip2 -k9 "${SDIMG_OTA}" | ||
| 66 | ;; | ||
| 67 | "xz") | ||
| 68 | xz -k "${SDIMG_OTA}" | ||
| 69 | ;; | ||
| 70 | esac | ||
| 71 | } | ||
| 72 | |||
diff --git a/classes/sdcard_image-minnowboard-ota.bbclass b/classes/sdcard_image-minnowboard-ota.bbclass deleted file mode 100644 index c49b3cd..0000000 --- a/classes/sdcard_image-minnowboard-ota.bbclass +++ /dev/null | |||
| @@ -1,78 +0,0 @@ | |||
| 1 | inherit image_types | ||
| 2 | |||
| 3 | # Boot partition volume id | ||
| 4 | BOOTDD_VOLUME_ID ?= "${MACHINE}" | ||
| 5 | |||
| 6 | # Boot partition size [in KiB] (will be rounded up to IMAGE_ROOTFS_ALIGNMENT) | ||
| 7 | BOOT_SPACE ?= "4096" | ||
| 8 | |||
| 9 | IMAGE_ROOTFS_ALIGNMENT = "4096" | ||
| 10 | SDIMG_OTA_ROOTFS_TYPE ?= "otaimg" | ||
| 11 | SDIMG_OTA_ROOTFS = "${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${SDIMG_OTA_ROOTFS_TYPE}" | ||
| 12 | |||
| 13 | IMAGE_TYPEDEP_minnowboard-sdimg-ota = "${SDIMG_OTA_ROOTFS_TYPE}" | ||
| 14 | IMAGE_DEPENDS_minnowboard-sdimg-ota = " \ | ||
| 15 | parted-native \ | ||
| 16 | mtools-native \ | ||
| 17 | dosfstools-native \ | ||
| 18 | minnowboard-bootfiles \ | ||
| 19 | " | ||
| 20 | |||
| 21 | SDIMG_OTA = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.minnowboard-sdimg-ota" | ||
| 22 | |||
| 23 | IMAGE_CMD_minnowboard-sdimg-ota () { | ||
| 24 | OTAROOT_SIZE=`du -Lb ${SDIMG_OTA_ROOTFS} | cut -f1` | ||
| 25 | OTAROOT_SIZE=$(expr ${OTAROOT_SIZE} / 1024 + 1) | ||
| 26 | BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1) | ||
| 27 | BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT}) | ||
| 28 | SDIMG_OTA_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $OTAROOT_SIZE) | ||
| 29 | |||
| 30 | echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS $OTAROOT_SIZE KiB" | ||
| 31 | |||
| 32 | # Initialize sdcard image file | ||
| 33 | dd if=/dev/zero of=${SDIMG_OTA} bs=1024 count=0 seek=${SDIMG_OTA_SIZE} | ||
| 34 | |||
| 35 | # Create partition table | ||
| 36 | parted -s ${SDIMG_OTA} mklabel msdos | ||
| 37 | # Create boot partition and mark it as bootable | ||
| 38 | parted -s ${SDIMG_OTA} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) | ||
| 39 | parted -s ${SDIMG_OTA} set 1 boot on | ||
| 40 | # Create rootfs partition to the end of disk | ||
| 41 | parted -s ${SDIMG_OTA} -- unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) -1s | ||
| 42 | parted ${SDIMG_OTA} print | ||
| 43 | |||
| 44 | # Create a vfat image with boot files | ||
| 45 | BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDIMG_OTA} unit b print | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 512 /2 }') | ||
| 46 | rm -f ${WORKDIR}/boot.img | ||
| 47 | mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS | ||
| 48 | sync | ||
| 49 | |||
| 50 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/minnowboard-bootfiles/* ::/ | ||
| 51 | |||
| 52 | sync | ||
| 53 | dd if=${WORKDIR}/boot.img of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync | ||
| 54 | |||
| 55 | if echo "${SDIMG_OTA_ROOTFS_TYPE}" | egrep -q "*\.xz" | ||
| 56 | then | ||
| 57 | xzcat ${SDIMG_OTA_ROOTFS} | dd of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync | ||
| 58 | else | ||
| 59 | dd if=${SDIMG_OTA_ROOTFS} of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync | ||
| 60 | fi | ||
| 61 | |||
| 62 | # Optionally apply compression | ||
| 63 | case "${SDIMG_OTA_COMPRESSION}" in | ||
| 64 | "gzip") | ||
| 65 | gzip -k9 "${SDIMG_OTA}" | ||
| 66 | ;; | ||
| 67 | "bzip2") | ||
| 68 | bzip2 -k9 "${SDIMG_OTA}" | ||
| 69 | ;; | ||
| 70 | "xz") | ||
| 71 | xz -k "${SDIMG_OTA}" | ||
| 72 | ;; | ||
| 73 | esac | ||
| 74 | |||
| 75 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.minnowboard-sdimg-ota | ||
| 76 | ln -s ${IMAGE_NAME}.minnowboard-sdimg-ota ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.minnowboard-sdimg-ota | ||
| 77 | } | ||
| 78 | |||
diff --git a/classes/sdcard_image-porter-ota.bbclass b/classes/sdcard_image-porter-ota.bbclass deleted file mode 100644 index 5909b44..0000000 --- a/classes/sdcard_image-porter-ota.bbclass +++ /dev/null | |||
| @@ -1,78 +0,0 @@ | |||
| 1 | inherit image_types | ||
| 2 | |||
| 3 | # Boot partition volume id | ||
| 4 | BOOTDD_VOLUME_ID ?= "${MACHINE}" | ||
| 5 | |||
| 6 | # Boot partition size [in KiB] (will be rounded up to IMAGE_ROOTFS_ALIGNMENT) | ||
| 7 | BOOT_SPACE ?= "4096" | ||
| 8 | |||
| 9 | IMAGE_ROOTFS_ALIGNMENT = "4096" | ||
| 10 | SDIMG_OTA_ROOTFS_TYPE ?= "otaimg" | ||
| 11 | SDIMG_OTA_ROOTFS = "${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${SDIMG_OTA_ROOTFS_TYPE}" | ||
| 12 | |||
| 13 | IMAGE_TYPEDEP_porter-sdimg-ota = "${SDIMG_OTA_ROOTFS_TYPE}" | ||
| 14 | IMAGE_DEPENDS_porter-sdimg-ota = " \ | ||
| 15 | parted-native \ | ||
| 16 | mtools-native \ | ||
| 17 | dosfstools-native \ | ||
| 18 | porter-bootfiles \ | ||
| 19 | " | ||
| 20 | |||
| 21 | SDIMG_OTA = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.porter-sdimg-ota" | ||
| 22 | |||
| 23 | IMAGE_CMD_porter-sdimg-ota () { | ||
| 24 | OTAROOT_SIZE=`du -Lb ${SDIMG_OTA_ROOTFS} | cut -f1` | ||
| 25 | OTAROOT_SIZE=$(expr ${OTAROOT_SIZE} / 1024 + 1) | ||
| 26 | BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1) | ||
| 27 | BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT}) | ||
| 28 | SDIMG_OTA_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $OTAROOT_SIZE) | ||
| 29 | |||
| 30 | echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS $OTAROOT_SIZE KiB" | ||
| 31 | |||
| 32 | # Initialize sdcard image file | ||
| 33 | dd if=/dev/zero of=${SDIMG_OTA} bs=1024 count=0 seek=${SDIMG_OTA_SIZE} | ||
| 34 | |||
| 35 | # Create partition table | ||
| 36 | parted -s ${SDIMG_OTA} mklabel msdos | ||
| 37 | # Create boot partition and mark it as bootable | ||
| 38 | parted -s ${SDIMG_OTA} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) | ||
| 39 | parted -s ${SDIMG_OTA} set 1 boot on | ||
| 40 | # Create rootfs partition to the end of disk | ||
| 41 | parted -s ${SDIMG_OTA} -- unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) -1s | ||
| 42 | parted ${SDIMG_OTA} print | ||
| 43 | |||
| 44 | # Create a vfat image with boot files | ||
| 45 | BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDIMG_OTA} unit b print | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 512 /2 }') | ||
| 46 | rm -f ${WORKDIR}/boot.img | ||
| 47 | mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS | ||
| 48 | sync | ||
| 49 | |||
| 50 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/porter-bootfiles/* ::/ | ||
| 51 | |||
| 52 | sync | ||
| 53 | dd if=${WORKDIR}/boot.img of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync | ||
| 54 | |||
| 55 | if echo "${SDIMG_OTA_ROOTFS_TYPE}" | egrep -q "*\.xz" | ||
| 56 | then | ||
| 57 | xzcat ${SDIMG_OTA_ROOTFS} | dd of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync | ||
| 58 | else | ||
| 59 | dd if=${SDIMG_OTA_ROOTFS} of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync | ||
| 60 | fi | ||
| 61 | |||
| 62 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.porter-sdimg-ota | ||
| 63 | ln -s ${IMAGE_NAME}.porter-sdimg-ota ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.porter-sdimg-ota | ||
| 64 | |||
| 65 | # Optionally apply compression | ||
| 66 | case "${SDIMG_OTA_COMPRESSION}" in | ||
| 67 | "gzip") | ||
| 68 | gzip -k9 "${SDIMG_OTA}" | ||
| 69 | ;; | ||
| 70 | "bzip2") | ||
| 71 | bzip2 -k9 "${SDIMG_OTA}" | ||
| 72 | ;; | ||
| 73 | "xz") | ||
| 74 | xz -k "${SDIMG_OTA}" | ||
| 75 | ;; | ||
| 76 | esac | ||
| 77 | } | ||
| 78 | |||
diff --git a/classes/sdcard_image-rpi-ota.bbclass b/classes/sdcard_image-rpi-ota.bbclass index cb0c597..f5c35a2 100644 --- a/classes/sdcard_image-rpi-ota.bbclass +++ b/classes/sdcard_image-rpi-ota.bbclass | |||
| @@ -72,6 +72,8 @@ SDIMG_OTA = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.rpi-sdimg-ota" | |||
| 72 | # Additional files and/or directories to be copied into the vfat partition from the IMAGE_ROOTFS. | 72 | # Additional files and/or directories to be copied into the vfat partition from the IMAGE_ROOTFS. |
| 73 | FATPAYLOAD ?= "" | 73 | FATPAYLOAD ?= "" |
| 74 | 74 | ||
| 75 | IMAGEDATESTAMP = "${@time.strftime('%Y.%m.%d',time.gmtime())}" | ||
| 76 | IMAGE_CMD_rpi-sdimg-ota[vardepsexclude] += "IMAGEDATESTAMP" | ||
| 75 | IMAGE_CMD_rpi-sdimg-ota[vardepsexclude] += "DATETIME" | 77 | IMAGE_CMD_rpi-sdimg-ota[vardepsexclude] += "DATETIME" |
| 76 | 78 | ||
| 77 | IMAGE_CMD_rpi-sdimg-ota () { | 79 | IMAGE_CMD_rpi-sdimg-ota () { |
| @@ -123,8 +125,10 @@ IMAGE_CMD_rpi-sdimg-ota () { | |||
| 123 | # Copy device tree overlays to dedicated folder | 125 | # Copy device tree overlays to dedicated folder |
| 124 | mmd -i ${WORKDIR}/boot.img overlays | 126 | mmd -i ${WORKDIR}/boot.img overlays |
| 125 | for DTB in ${DT_OVERLAYS}; do | 127 | for DTB in ${DT_OVERLAYS}; do |
| 126 | DTB_BASE_NAME=`basename ${DTB} .dtb` | 128 | DTB_EXT=${DTB##*.} |
| 127 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.dtb ::overlays/${DTB_BASE_NAME}.dtbo | 129 | DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"` |
| 130 | |||
| 131 | mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.${DTB_EXT} ::overlays/${DTB_BASE_NAME}.${DTB_EXT} | ||
| 128 | done | 132 | done |
| 129 | fi | 133 | fi |
| 130 | 134 | ||
| @@ -145,6 +149,10 @@ IMAGE_CMD_rpi-sdimg-ota () { | |||
| 145 | done | 149 | done |
| 146 | fi | 150 | fi |
| 147 | 151 | ||
| 152 | # Add stamp file | ||
| 153 | echo "${IMAGE_NAME}-${IMAGEDATESTAMP}" > ${WORKDIR}/image-version-info | ||
| 154 | mcopy -i ${WORKDIR}/boot.img -v ${WORKDIR}//image-version-info :: | ||
| 155 | |||
| 148 | # Burn Partitions | 156 | # Burn Partitions |
| 149 | sync | 157 | sync |
| 150 | dd if=${WORKDIR}/boot.img of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync | 158 | dd if=${WORKDIR}/boot.img of=${SDIMG_OTA} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync |
| @@ -171,6 +179,9 @@ IMAGE_CMD_rpi-sdimg-ota () { | |||
| 171 | xz -k "${SDIMG_OTA}" | 179 | xz -k "${SDIMG_OTA}" |
| 172 | ;; | 180 | ;; |
| 173 | esac | 181 | esac |
| 182 | |||
| 183 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.rpi-sdimg-ota | ||
| 184 | ln -s ${IMAGE_NAME}.rootfs.rpi-sdimg-ota ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.rpi-sdimg-ota | ||
| 174 | } | 185 | } |
| 175 | 186 | ||
| 176 | ROOTFS_POSTPROCESS_COMMAND += " rpi_generate_sysctl_config ; " | 187 | ROOTFS_POSTPROCESS_COMMAND += " rpi_generate_sysctl_config ; " |
