blob: ff97605b9e69600d7230a7a45ca67461965d34b9 [file] [log] [blame]
Brad Bishop52717732017-07-24 15:05:05 -04001# Constructs a bootable, fixed-offset mtd image with u-boot
2# bootloader, kernel fitimage, read only root filesystem,
3# and writeable overlay filesystem.
4
Milton D. Miller IIee7c1202016-01-20 15:36:27 -06005IMAGE_BASETYPE ?= "squashfs-xz"
Andrew Jeffery4e86a432016-02-23 23:46:58 +10306OVERLAY_BASETYPE ?= "jffs2"
Milton D. Miller IIee7c1202016-01-20 15:36:27 -06007
Brad Bishop327bfd62016-02-29 10:21:51 -05008IMAGE_TYPES += "overlay"
Milton D. Miller IIee7c1202016-01-20 15:36:27 -06009
Brad Bishop327bfd62016-02-29 10:21:51 -050010IMAGE_TYPEDEP_overlay = "${IMAGE_BASETYPE}"
Milton D. Miller IIee7c1202016-01-20 15:36:27 -060011IMAGE_TYPES_MASKED += "overlay"
12
Rick Altherr1ed6fe32017-01-11 17:33:47 -080013FLASH_KERNEL_IMAGE ?= "fitImage-${INITRAMFS_IMAGE}-${MACHINE}.bin"
Rick Altherr2a9a08a2017-01-04 17:25:18 -080014
15FLASH_UBOOT_OFFSET ?= "0"
16FLASH_KERNEL_OFFSET ?= "512"
Rick Altherr2a9a08a2017-01-04 17:25:18 -080017FLASH_ROFS_OFFSET ?= "4864"
18FLASH_RWFS_OFFSET ?= "28672"
19RWFS_SIZE ?= "4096"
20
21# Allow rwfs mkfs configuration through OVERLAY_MKFS_OPTS and OVERRIDES. However,
22# avoid setting 'ext4' or 'jffs2' in OVERRIDES as such raw filesystem types are
23# reserved for the primary image (and setting them currently breaks the build).
24# Instead, prefix the overlay override value with 'rwfs-' to avoid collisions.
25DISTROOVERRIDES .= ":rwfs-${OVERLAY_BASETYPE}"
26
27OVERLAY_MKFS_OPTS_rwfs-ext4 = "-b 4096 -F -O^huge_file"
28
29# $(( ${FLASH_SIZE} - ${FLASH_RWFS_OFFSET} ))
30
31mk_nor_image() {
Brad Bishop02113cc2017-07-22 14:20:20 -040032 image_dst="$1"
33 image_size_kb=$2
34 dd if=/dev/zero bs=1k count=$image_size_kb \
35 | tr '\000' '\377' > $image_dst
Rick Altherr2a9a08a2017-01-04 17:25:18 -080036}
37
38do_generate_flash() {
Brad Bishop52717732017-07-24 15:05:05 -040039 ddir="${IMGDEPLOYDIR}"
Brad Bishop02113cc2017-07-22 14:20:20 -040040 kernel="${FLASH_KERNEL_IMAGE}"
41 uboot="u-boot.${UBOOT_SUFFIX}"
42 rootfs="${IMAGE_LINK_NAME}.${IMAGE_BASETYPE}"
43 rwfs="rwfs.${OVERLAY_BASETYPE}"
Rick Altherr2a9a08a2017-01-04 17:25:18 -080044
Brad Bishop52717732017-07-24 15:05:05 -040045 flash="${IMAGE_NAME}.overlay"
Rick Altherr2a9a08a2017-01-04 17:25:18 -080046
Brad Bishop52717732017-07-24 15:05:05 -040047 mk_nor_image ${S}/$rwfs ${RWFS_SIZE}
Brad Bishop02113cc2017-07-22 14:20:20 -040048 if [ "${OVERLAY_BASETYPE}" != jffs2 ]; then
Brad Bishop52717732017-07-24 15:05:05 -040049 mkfs.${OVERLAY_BASETYPE} ${OVERLAY_MKFS_OPTS} ${S}/$rwfs || \
Brad Bishop02113cc2017-07-22 14:20:20 -040050 bbfatal "mkfs rwfs"
51 fi
Rick Altherr2a9a08a2017-01-04 17:25:18 -080052
Brad Bishop52717732017-07-24 15:05:05 -040053 # Assemble the flash image
54 dst="$ddir/$flash"
Brad Bishop02113cc2017-07-22 14:20:20 -040055 mk_nor_image $dst ${FLASH_SIZE}
Brad Bishop52717732017-07-24 15:05:05 -040056 dd if=${DEPLOY_DIR_IMAGE}/$uboot of=$dst bs=1k conv=notrunc seek=${FLASH_UBOOT_OFFSET}
57 dd if=${DEPLOY_DIR_IMAGE}/$kernel of=$dst bs=1k conv=notrunc seek=${FLASH_KERNEL_OFFSET}
Brad Bishop02113cc2017-07-22 14:20:20 -040058 dd if=$ddir/$rootfs of=$dst bs=1k conv=notrunc seek=${FLASH_ROFS_OFFSET}
Brad Bishop52717732017-07-24 15:05:05 -040059 dd if=${S}/$rwfs of=$dst bs=1k conv=notrunc seek=${FLASH_RWFS_OFFSET}
Rick Altherr2a9a08a2017-01-04 17:25:18 -080060
Brad Bishop52717732017-07-24 15:05:05 -040061 cd ${IMGDEPLOYDIR}
62 ln -sf $flash ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.overlay
Rick Altherr2a9a08a2017-01-04 17:25:18 -080063
Brad Bishop52717732017-07-24 15:05:05 -040064 # Maintain a number of non-standard name legacy links.
65 ln -sf $flash ${IMGDEPLOYDIR}/flash-${MACHINE}
Rick Altherr2a9a08a2017-01-04 17:25:18 -080066}
Rick Altherr2a9a08a2017-01-04 17:25:18 -080067
Brad Bishop52717732017-07-24 15:05:05 -040068do_generate_tars() {
69 ddir="${IMGDEPLOYDIR}"
70 kernel="${FLASH_KERNEL_IMAGE}"
71 uboot="u-boot.${UBOOT_SUFFIX}"
72 rootfs="${IMAGE_LINK_NAME}.${IMAGE_BASETYPE}"
73 rwfs="rwfs.${OVERLAY_BASETYPE}"
Milton D. Miller IIee7c1202016-01-20 15:36:27 -060074
Brad Bishop52717732017-07-24 15:05:05 -040075 flash="${IMAGE_NAME}.overlay"
76 alltar="${IMAGE_NAME}.all.tar"
77 tar="${IMAGE_NAME}.tar"
78
79 # Create some links to help make the tar archives
80 ln -sf $ddir/${IMAGE_LINK_NAME}.overlay ${S}/image-bmc
81 ln -sf ${DEPLOY_DIR_IMAGE}/$uboot ${S}/image-u-boot
82 ln -sf ${DEPLOY_DIR_IMAGE}/$kernel ${S}/image-kernel
83 ln -sf $ddir/$rootfs ${S}/image-rofs
84 ln -sf $rwfs ${S}/image-rwfs
85
86 # Create the tar archives
87 tar -h -cvf $ddir/$alltar -C ${S} image-bmc
88 tar -h -cvf $ddir/$tar -C ${S} image-u-boot image-kernel image-rofs image-rwfs
89
90 cd ${IMGDEPLOYDIR}
91 ln -sf $alltar ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.all.tar
92 ln -sf $tar ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.tar
93
94 # Maintain a number of non-standard name legacy links.
95 ln -sf $tar ${IMGDEPLOYDIR}/${MACHINE}-${DATETIME}.tar
96 ln -sf $alltar ${IMGDEPLOYDIR}/${MACHINE}-${DATETIME}.all.tar
97}
98
99do_generate_tars[vardepsexclude] = "DATETIME"
100
101do_generate_flash[depends] += " \
102 ${PN}:do_image_${@d.getVar('IMAGE_BASETYPE', True).replace('-', '_')} \
103 virtual/kernel:do_deploy \
104 u-boot:do_populate_sysroot \
105 "
106
107do_generate_tars[depends] += " \
108 ${PN}:do_generate_flash \
109 "
110
111addtask generate_flash before do_image_complete
112addtask generate_tars before do_image_complete