openwrt/target/linux/ipq806x/image/chromium.mk
Brian Norris b5193291bd
ipq806x: onhub: Enable fstools_partname_fallback_scan
When fstools is unable to parse our root=<...> arg correctly, it can
fall back to scanning all block devices for a 'rootfs_data' partition.
This fallback was deemed wrong (or at least, a breaking/incompatible
change) for some targets, so we're forced to opt back into it with
fstools_partname_fallback_scan=1.

Without this, OnHub devices will use a rootfs-appended loop device for
rootfs_data instead of the intended 3rd partition.

While I'm at it, just move all the boot args into the 'cros-vboot'
build rule, instead of using the custom bootargs-append. All cros-vboot
subtargets here are using the same rootwait (to support both eMMC and
USB boot) and root/partition args.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
[ drop unrelated comments in commit description ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2023-02-04 20:16:20 +01:00

61 lines
1.9 KiB
Makefile

define Build/cros-gpt
cp $@ $@.tmp 2>/dev/null || true
ptgen -o $@.tmp -g \
-T cros_kernel -N kernel -p $(CONFIG_TARGET_KERNEL_PARTSIZE)m \
-N rootfs -p $(CONFIG_TARGET_ROOTFS_PARTSIZE)m \
-N rootfs_data -p \
$$((3687-$(CONFIG_TARGET_ROOTFS_PARTSIZE)-\
$(CONFIG_TARGET_KERNEL_PARTSIZE)))m
cat $@.tmp >> $@
rm $@.tmp
endef
define Build/append-kernel-part
dd if=$(IMAGE_KERNEL) bs=$(CONFIG_TARGET_KERNEL_PARTSIZE)M conv=sync >> $@
endef
# NB: Chrome OS bootloaders replace the '%U' in command lines with the UUID of
# the kernel partition it chooses to boot from. This gives a flexible way to
# consistently build and sign kernels that always use the subsequent
# (PARTNROFF=1) partition as their rootfs.
define Build/cros-vboot
$(STAGING_DIR_HOST)/bin/cros-vbutil \
-k $@ \
-c "root=PARTUUID=%U/PARTNROFF=1 rootwait fstools_partname_fallback_scan=1" \
-o $@.new
@mv $@.new $@
endef
define Device/OnhubImage
KERNEL_LOADADDR = 0x44208000
SOC := qcom-ipq8064
KERNEL_SUFFIX := -fit-zImage.itb.vboot
KERNEL_NAME := zImage
KERNEL = kernel-bin | fit none $$(KDIR)/image-$$(DEVICE_DTS).dtb | cros-vboot
IMAGES := factory.bin sysupgrade.bin
IMAGE/factory.bin := cros-gpt | append-kernel-part | append-rootfs
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
DEVICE_PACKAGES := ath10k-firmware-qca988x-ct e2fsprogs kmod-fs-ext4 losetup \
partx-utils mkf2fs kmod-fs-f2fs \
ucode kmod-google-firmware kmod-tpm-i2c-infineon \
kmod-sound-soc-ipq8064-storm kmod-usb-storage
endef
define Device/asus_onhub
$(call Device/OnhubImage)
DEVICE_VENDOR := ASUS
DEVICE_MODEL := OnHub SRT-AC1900
DEVICE_DTS := $$(SOC)-asus-onhub
BOARD_NAME := asus-onhub
endef
TARGET_DEVICES += asus_onhub
define Device/tplink_onhub
$(call Device/OnhubImage)
DEVICE_VENDOR := TP-Link
DEVICE_MODEL := OnHub AC1900 Cloud Router
DEVICE_DTS := $$(SOC)-tplink-onhub
BOARD_NAME := tplink-onhub
endef
TARGET_DEVICES += tplink_onhub