openwrt/target/linux/imx6/image/Makefile
Luka Perkov 03401fed5e imx6: convert ventana images to squashfs+ubifs overlay
Replace the ventana ubi images from a single rootfs volume containing the
rootfs as well as kernel+dtbs in the boot/ subdir to a multi-volume ubi
containing kernel+dtbs+bootscript in 'root' ubifs volume, rootfs in 'rootfs'
squasfs volume, and rootfs_data an empty ubifs volume.

At the same time move ventana image creation over to using the new
TARGET_DEVICE syntax as a cleanup.

Additionally removed FIT image creation as it is recommended that this be
done manually to produce signed FIT images if needed.

Note that a bootscript is needed for Ventana to change its default mtdparts
to rename the 2nd partition from 'rootfs' to 'ubi'. This is because there
are patches in OpenWrt kernels that try to auto-attach and auto-mount and these
get in the way if the mtd partition is named 'rootfs'.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>

SVN-Revision: 47508
2015-11-18 21:35:24 +00:00

120 lines
3.8 KiB
Makefile

#
# Copyright (C) 2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
#################################################
# Images
#################################################
# build a ubi for a specific flash geometry/layout which can contain
# volumes with the following data from ubinize-$(DEVICE_NAME).cfg:
# - 'boot.ubifs' volume: kernel+dtbs+bootscript
# - 'root.squashfs' volume: rootfs
# $(1): name (used for suffix)
# $(2): PAGESIZE (-m param to mkfs.ubifs/ubinize)
# $(3): ERASESIZE (logical eraseblock size: -e param to mkfs.ubifs)
# $(4): BLOCKSIZE (-p param to ubinize)
# $(5): MAXSIZE (maximum file-system size in LEB's -c param to mkfs.ubifs)
#
define Build/ubi-boot-overlay
# ubi-boot-overlay $(DEVICE_NAME) $(word 1, $(1))
# boot filesystem
rm -rf $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))
mkdir -p $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))
$(CP) $< $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))/$(IMG_PREFIX)-uImage
ln -sf $(IMG_PREFIX)-uImage \
$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))/uImage
$(foreach dts,$(shell echo $(DEVICE_DTS)), \
$(CP) $(LINUX_DIR)/arch/$(ARCH)/boot/dts/$(dts).dtb \
$(BIN_DIR)/$(IMG_PREFIX)-$(dts).dtb; \
$(CP) $(LINUX_DIR)/arch/$(ARCH)/boot/dts/$(dts).dtb \
$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))/$(IMG_PREFIX)-$(dts).dtb; \
ln -sf $(IMG_PREFIX)-$(dts).dtb \
$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))/$(dts).dtb; \
)
mkimage -A arm -O linux -T script -C none -a 0 -e 0 \
-n '$(DEVICE_ID) OpenWrt bootscript' \
-d ./bootscript-$(DEVICE_NAME) \
$(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))/6x_bootscript-$(DEVICE_NAME)
$(STAGING_DIR_HOST)/bin/mkfs.ubifs \
--space-fixup --force-compr=zlib --squash-uids \
-m $(word 2, $(1)) -e $(word 3, $(1)) -c $(word 5, $(1)) \
-o $(KDIR)/boot-$(DEVICE_NAME)-bootfs_$(word 1, $(1)).ubifs \
-d $(TARGET_ROOTFS_DIR)/boot-$(DEVICE_NAME)_$(word 1, $(1))
$(CP) $(KDIR)/boot-$(DEVICE_NAME)-bootfs_$(word 1, $(1)).ubifs \
$(BIN_DIR)/$(IMG_PREFIX)-$(DEVICE_NAME)-bootfs_$(word 1, $(1)).ubifs
# ubi
rm -rf p $(KDIR)/$(DEVICE_NAME)_$(word 1, $(1))
mkdir -p $(KDIR)/$(DEVICE_NAME)_$(word 1, $(1))
$(CP) $(word 2, $^) \
$(KDIR)/$(DEVICE_NAME)_$(word 1, $(1))/
$(CP) $(KDIR)/boot-$(DEVICE_NAME)-bootfs_$(word 1, $(1)).ubifs \
$(KDIR)/$(DEVICE_NAME)_$(word 1, $(1))/boot.ubifs
$(CP) ./ubinize-$(DEVICE_NAME).cfg \
$(KDIR)/$(DEVICE_NAME)_$(word 1, $(1))/ubinize.cfg
( cd $(KDIR)/$(DEVICE_NAME)_$(word 1, $(1)); \
$(STAGING_DIR_HOST)/bin/ubinize \
-m $(word 2, $(1)) -p $(word 4, $(1)) -s $(word 2, $(1)) \
-o $@ \
ubinize.cfg \
)
endef
#################################################
# Devices
#################################################
KERNEL_LOADADDR=0x10008000
define Device/Default
DEVICE_DTS :=
FILESYSTEMS := squashfs ext4
KERNEL_INSTALL := 1
KERNEL_SUFFIX := -uImage
KERNEL_NAME := zImage
KERNEL := kernel-bin | uImage none
IMAGE_NAME = $$(IMAGE_PREFIX)-$$(1).$$(2)
IMAGES :=
endef
DEVICE_VARS += DEVICE_DTS
define Device/ventana
PROFILES = Generic VENTANA
DEVICE_DTS:= \
imx6dl-gw51xx \
imx6dl-gw52xx \
imx6dl-gw53xx \
imx6dl-gw54xx \
imx6dl-gw551x \
imx6dl-gw552x \
imx6q-gw51xx \
imx6q-gw52xx \
imx6q-gw53xx \
imx6q-gw54xx \
imx6q-gw5400-a \
imx6q-gw551x \
imx6q-gw552x
IMAGES := nand-factory_normal.ubi nand-factory_large.ubi
IMAGE/nand-factory_normal.ubi := ubi-boot-overlay normal 2048 124KiB 128KiB 8124
IMAGE/nand-factory_large.ubi := ubi-boot-overlay large 4096 248KiB 256KiB 8124
endef
define Device/wandboard
PROFILES = Generic IMX6DL_WANDBOARD
DEVICE_DTS := imx6dl-wandboard
endef
TARGET_DEVICES += \
ventana \
wandboard
$(eval $(call BuildImage))