diff options
Diffstat (limited to 'classes/image_types_ota.bbclass')
-rw-r--r-- | classes/image_types_ota.bbclass | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass index bee1ea4..09c30ff 100644 --- a/classes/image_types_ota.bbclass +++ b/classes/image_types_ota.bbclass | |||
@@ -9,12 +9,11 @@ | |||
9 | 9 | ||
10 | inherit image | 10 | inherit image |
11 | 11 | ||
12 | IMAGE_DEPENDS_otaimg = "e2fsprogs-native:do_populate_sysroot" | 12 | OSTREE_BOOTLOADER ??= 'u-boot' |
13 | 13 | ||
14 | # For qemux86 u-boot is not included in any live image and is built separately | 14 | IMAGE_DEPENDS_otaimg = "e2fsprogs-native:do_populate_sysroot \ |
15 | IMAGE_DEPENDS_otaimg_append_qemux86 = " virtual/bootloader:do_deploy" | 15 | ${@'grub:do_populate_sysroot' if d.getVar('OSTREE_BOOTLOADER', True) == 'grub' else ''} \ |
16 | IMAGE_DEPENDS_otaimg_append_qemux86-64 = " virtual/bootloader:do_deploy" | 16 | ${@'virtual/bootloader:do_deploy' if d.getVar('OSTREE_BOOTLOADER', True) == 'u-boot' else ''}" |
17 | IMAGE_DEPENDS_otaimg_append_corei7-64-intel-common = " virtual/bootloader:do_deploy" | ||
18 | 17 | ||
19 | calculate_size () { | 18 | calculate_size () { |
20 | BASE=$1 | 19 | BASE=$1 |
@@ -52,6 +51,7 @@ calculate_size () { | |||
52 | export OSTREE_OSNAME | 51 | export OSTREE_OSNAME |
53 | export OSTREE_BRANCHNAME | 52 | export OSTREE_BRANCHNAME |
54 | export OSTREE_REPO | 53 | export OSTREE_REPO |
54 | export OSTREE_BOOTLOADER | ||
55 | 55 | ||
56 | IMAGE_CMD_otaimg () { | 56 | IMAGE_CMD_otaimg () { |
57 | if ${@bb.utils.contains('IMAGE_FSTYPES', 'otaimg', 'true', 'false', d)}; then | 57 | if ${@bb.utils.contains('IMAGE_FSTYPES', 'otaimg', 'true', 'false', d)}; then |
@@ -76,32 +76,36 @@ IMAGE_CMD_otaimg () { | |||
76 | mkdir -p ${PHYS_SYSROOT}/boot/loader.0 | 76 | mkdir -p ${PHYS_SYSROOT}/boot/loader.0 |
77 | ln -s loader.0 ${PHYS_SYSROOT}/boot/loader | 77 | ln -s loader.0 ${PHYS_SYSROOT}/boot/loader |
78 | 78 | ||
79 | touch ${PHYS_SYSROOT}/boot/loader/uEnv.txt | 79 | if [ "${OSTREE_BOOTLOADER}" = "grub" ]; then |
80 | mkdir -p ${PHYS_SYSROOT}/boot/grub2 | ||
81 | touch ${PHYS_SYSROOT}/boot/grub2/grub.cfg | ||
82 | elif [ "${OSTREE_BOOTLOADER}" = "u-boot" ]; then | ||
83 | touch ${PHYS_SYSROOT}/boot/loader/uEnv.txt | ||
84 | else | ||
85 | bberror "Invalid bootloader: ${OSTREE_BOOTLOADER}" | ||
86 | fi; | ||
80 | 87 | ||
81 | ostree --repo=${PHYS_SYSROOT}/ostree/repo pull-local --remote=${OSTREE_OSNAME} ${OSTREE_REPO} ${OSTREE_BRANCHNAME} | 88 | 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} | 89 | export OSTREE_BOOT_PARTITION="/boot" |
83 | 90 | kargs_list="" | |
84 | # Copy deployment /home to sysroot | 91 | for arg in ${OSTREE_KERNEL_ARGS}; do |
92 | kargs_list="${kargs_list} --karg-append=$arg" | ||
93 | done | ||
94 | |||
95 | ostree admin --sysroot=${PHYS_SYSROOT} deploy ${kargs_list} --os=${OSTREE_OSNAME} ${OSTREE_BRANCHNAME} | ||
96 | |||
97 | # Copy deployment /home and /var/sota to sysroot | ||
85 | HOME_TMP=`mktemp -d ${WORKDIR}/home-tmp-XXXXX` | 98 | 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 | 99 | tar --xattrs --xattrs-include='*' -C ${HOME_TMP} -xf ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.ostree.tar.bz2 ./usr/homedirs ./var/sota ./var/local || true |
87 | mv ${HOME_TMP}/usr/homedirs/home ${PHYS_SYSROOT}/ | 100 | mv ${HOME_TMP}/var/sota ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/ || true |
101 | mv ${HOME_TMP}/var/local ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/ || true | ||
102 | # Create /var/sota if it doesn't exist yet | ||
103 | mkdir -p ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/sota || true | ||
104 | mv ${HOME_TMP}/usr/homedirs/home ${PHYS_SYSROOT}/ || true | ||
105 | # Ensure that /var/local exists (AGL symlinks /usr/local to /var/local) | ||
106 | install -d ${PHYS_SYSROOT}/ostree/deploy/${OSTREE_OSNAME}/var/local | ||
88 | rm -rf ${HOME_TMP} | 107 | rm -rf ${HOME_TMP} |
89 | 108 | ||
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 | 109 | # 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}") | 110 | 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 | 111 | ||
@@ -118,7 +122,7 @@ IMAGE_CMD_otaimg () { | |||
118 | rm -rf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg | 122 | rm -rf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg |
119 | sync | 123 | sync |
120 | dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg seek=$OTA_ROOTFS_SIZE count=$COUNT bs=1024 | 124 | 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} | 125 | mkfs.ext4 -O ^64bit ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.otaimg -L otaroot -d ${PHYS_SYSROOT} |
122 | rm -rf ${PHYS_SYSROOT} | 126 | rm -rf ${PHYS_SYSROOT} |
123 | 127 | ||
124 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.otaimg | 128 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.otaimg |