X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=target%2Flinux%2Fapm821xx%2Fimage%2FMakefile;h=25ee67b673aa9aad4afb5dbce62586f53557033a;hb=63b525dd6b209af5554a2d053efd4b3ce6f60c9c;hp=9ba43d9db26c2d5e8073e2675eb07714d3001ae3;hpb=dc7efaefb53d4671893add07934839eb8d44934d;p=oweals%2Fopenwrt.git diff --git a/target/linux/apm821xx/image/Makefile b/target/linux/apm821xx/image/Makefile index 9ba43d9db2..25ee67b673 100644 --- a/target/linux/apm821xx/image/Makefile +++ b/target/linux/apm821xx/image/Makefile @@ -6,14 +6,16 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/image.mk include $(INCLUDE_DIR)/host.mk -DEVICE_VARS += DEVICE_DTS DEVICE_PROFILE IMAGE_SIZE DTB_SIZE +DEVICE_VARS += DEVICE_PROFILE IMAGE_SIZE DTB_SIZE define Device/Default + PROFILES := Default KERNEL_DEPENDS = $$(wildcard ../dts/$$(DEVICE_DTS).dts) DEVICE_PROFILE := DEVICE_DTS := KERNEL_ENTRY := 0x00000000 KERNEL_LOADADDR := 0x00000000 + DEVICE_DTS_DIR := ../dts endef define Build/dtb @@ -73,11 +75,93 @@ define Device/mr24 KERNEL_SIZE := 2048k IMAGE_SIZE := 8191k KERNEL := kernel-bin | lzma | uImage lzma | MerakiAdd-dtb | MerakiNAND - KERNEL_INITRAMFS := copy-file $(KDIR)/vmlinux | lzma | uImage lzma | MerakiAdd-dtb | pad-to 2047k | MerakiAdd-initramfs | MerakiNAND - IMAGE/sysupgrade.tar := sysupgrade-nand + KERNEL_INITRAMFS := copy-file $(KDIR)/vmlinux | gzip | uImage gzip | MerakiAdd-dtb | pad-to 2047k | MerakiAdd-initramfs | MerakiNAND + IMAGE/sysupgrade.tar := sysupgrade-tar endef TARGET_DEVICES += mr24 +define Build/create-uImage-dtb + # flat_dt target expect FIT image - which WNDR4700's uboot doesn't support + -$(STAGING_DIR_HOST)/bin/mkimage -A $(LINUX_KARCH) \ + -O linux -T kernel -C none \ + -n '$(call toupper,$(LINUX_KARCH)) LEDE Linux-$(LINUX_VERSION)' \ + -d $@.dtb $@.new + @mv $@.new $@ +endef + +define Build/append-fakerootfs + rm -rf $@.fakerootsquashfs $@.fakefs + + # append a fake/empty rootfs to fool netgear's uboot + # CHECK_DNI_FIRMWARE_ROOTFS_INTEGRITY in do_chk_dniimg() + dd if=/dev/zero of=$@.fakerd bs=16 count=1 conv=sync + + -$(STAGING_DIR_HOST)/bin/mkimage \ + -A $(LINUX_KARCH) -O linux -T filesystem -C none \ + -a 0x00000000 -e 0x00000000 \ + -n '$(DEVICE_PROFILE) fakerootfs' \ + -d $@.fakerd $@.fakefs + + cat $@.fakefs >> $@ + rm -rf $@.fakerootsquashfs $@.fakefs +endef + +define Build/wndr4700-specialImage + rm -rf $@.fakerd $@.new + + dd if=/dev/zero of=$@.fakerd bs=32 count=1 conv=sync + + # Netgear used an old uboot that doesn't have FIT support. + # So we are stuck with either a full ext2/4 fs in a initrd. + # ... or we try to make the "multi" image approach to work + # for us. + # + # Sadly, the "multi" image has to consists of three + # "fixed" parts in the following "fixed" order: + # 1. The kernel which is in $@ + # 2. The (fake) initrd which is in $@.fakerd + # 3. The device tree binary which is in $@.dtb + # + # Now, given that we use the function for the kernel which + # already has a initramfs image inside, we still have to + # add a "fake" initrd (which a mkimage header) in the second + # part of the legacy multi image. Since we need to put the + # device tree stuff into part 3. + + -$(STAGING_DIR_HOST)/bin/mkimage -A $(LINUX_KARCH) -O linux -T multi \ + -C $(1) -a $(KERNEL_LOADADDR) -e $(KERNEL_ENTRY) \ + -n '$(DEVICE_PROFILE) initramfs' -d $@:$@.fakerd:$@.dtb $@.new + mv $@.new $@ + rm -rf $@.fakerd +endef + +define Device/WNDR4700 + DEVICE_TITLE := Netgear Centria N900 WNDR4700/WNDR4720 + DEVICE_PACKAGES := badblocks block-mount e2fsprogs \ + kmod-ath9k kmod-dm kmod-fs-ext4 kmod-fs-vfat kmod-ledtrig-usbdev \ + kmod-md-mod kmod-nls-cp437 kmod-nls-iso8859-1 kmod-nls-iso8859-15 \ + kmod-nls-utf8 kmod-usb3 kmod-usb-dwc2 kmod-usb-storage \ + partx-utils swconfig wpad-mini + DEVICE_NAME := wndr4700 + DEVICE_PROFILE := wndr4700 + DEVICE_DTS := wndr4700 + PAGESIZE := 2048 + SUBPAGESIZE := 512 + BLOCKSIZE := 131072 + DTB_SIZE := 131008 + IMAGE_SIZE:=25559040 + IMAGES := factory.img sysupgrade.tar + KERNEL_SIZE := 1920k + KERNEL := kernel-bin | lzma | uImage lzma | pad-offset $$(BLOCKSIZE) 64 | append-fakerootfs + KERNEL_INITRAMFS := kernel-bin | gzip | dtb | wndr4700-specialImage gzip + IMAGE/factory.img := dtb | create-uImage-dtb | append-kernel | pad-to 2M | append-ubi | \ + netgear-dni | check-size $$$$(IMAGE_SIZE) + IMAGE/sysupgrade.tar := sysupgrade-tar + NETGEAR_BOARD_ID := WNDR4700 + NETGEAR_HW_ID := 29763875+128+256 +endef +TARGET_DEVICES += WNDR4700 + endif ifeq ($(SUBTARGET),sata) @@ -95,7 +179,7 @@ define Build/boot-img $(CP) $@.scr $@.bootdir/boot/boot.scr $(CP) $@.dtb $@.bootdir/boot/$(DEVICE_DTB) - $(CP) $(word 1,$^) $@.bootdir/boot/uImage + $(CP) $(IMAGE_KERNEL) $@.bootdir/boot/uImage genext2fs --block-size $(BLOCKSIZE) --size-in-blocks $$((1024 * $(BOOT_SIZE))) --root $@.bootdir $@.boot @@ -105,25 +189,25 @@ define Build/boot-img endef define Build/hdd-img - ./mbl_gen_hdd_img.sh $@ $@.boot $(word 2,$^) + ./mbl_gen_hdd_img.sh $@ $@.boot $(IMAGE_ROOTFS) $(if $(CONFIG_TARGET_IMAGES_GZIP),gzip -9n -c $@ > $(BIN_DIR)/$(notdir $@).gz) endef define Build/uRamdisk - $(call Image/mkfs/ext4) - gzip -9n -c $(KDIR)/root.ext4 > $(KDIR)/root.ext4.gz - $(STAGING_DIR_HOST)/bin/mkimage -A powerpc -T ramdisk -C gzip -n "$(PROFILE) rootfs" \ - -d $(KDIR)/root.ext4.gz \ - $@.uRamdisk + $(STAGING_DIR_HOST)/bin/mkimage \ + -A powerpc -T ramdisk -C gzip \ + -n "$(DEVICE_NAME) rootfs" \ + -d $@ $@.new + mv $@.new $@ endef define Build/recovery-tar sh ./mbl_gen_recovery_tar.sh \ --profile $(DEVICE_PROFILE) \ - --dtb $@.dtb \ + --dtb $(IMAGE_KERNEL).dtb \ --dtbname $(DEVICE_DTB) \ - --kernel $@ \ - --rootfs $@.uRamdisk \ + --kernel $(IMAGE_KERNEL) \ + --rootfs $@ \ $@ endef @@ -131,12 +215,14 @@ define Device/MyBookLiveDefault IMAGE_SIZE := 48m BLOCKSIZE := 1024 DTB_SIZE := 16384 - KERNEL := kernel-bin | gzip | uImage gzip + KERNEL := kernel-bin | dtb | gzip | uImage gzip BOOT_SIZE := 8 - IMAGES := rootfs.img recovery.tar + IMAGES := rootfs.img recovery.tar kernel.dtb DEVICE_DTB := apollo3g.dtb + FILESYSTEMS := ext4 + IMAGE/kernel.dtb := append-dtb IMAGE/rootfs.img := boot-script | dtb | boot-img | hdd-img - IMAGE/recovery.tar := kernel-bin | dtb | uRamdisk | recovery-tar + IMAGE/recovery.tar := append-rootfs | gzip | uRamdisk | recovery-tar endef define Device/MyBookLiveSingle @@ -161,4 +247,3 @@ TARGET_DEVICES += MyBookLiveDuo endif $(eval $(call BuildImage)) -