diff options
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 ; " |