mirror of https://github.com/hak5/openwrt-owl.git
mpc85xx: use image metadata
Append and enforce image metadata. Remove the device specific image checks, they are replaced by image metadata. Signed-off-by: Mathias Kresin <dev@kresin.me>owl
parent
dcbbac55ed
commit
605ce5f6cd
|
@ -3,100 +3,13 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
PART_NAME=firmware
|
PART_NAME=firmware
|
||||||
|
REQUIRE_IMAGE_METADATA=1
|
||||||
get_magic_long_at() {
|
|
||||||
(get_image "$1" | dd bs=4 count=1 skip="$2" | hexdump -v -n 4 -e '1/1 "%02x"') 2>/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
tplink_get_hwid() {
|
|
||||||
local part
|
|
||||||
|
|
||||||
part=$(find_mtd_part u-boot)
|
|
||||||
[ -z "$part" ] && return 1
|
|
||||||
|
|
||||||
dd if=$part bs=4 count=1 skip=81728 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
|
|
||||||
}
|
|
||||||
|
|
||||||
tplink_get_image_hwid() {
|
|
||||||
get_image "$@" | dd bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
|
|
||||||
}
|
|
||||||
|
|
||||||
tplink_get_image_boot_size() {
|
|
||||||
get_image "$@" | dd bs=4 count=1 skip=37 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
|
|
||||||
}
|
|
||||||
|
|
||||||
platform_check_image() {
|
platform_check_image() {
|
||||||
local board=$(board_name)
|
|
||||||
local magic="$(get_magic_long "$1")"
|
|
||||||
|
|
||||||
[ "$#" -gt 1 ] && return 1
|
|
||||||
|
|
||||||
case $board in
|
|
||||||
aerohive,hiveap-330)
|
|
||||||
local init_magic=$(get_magic_long_at "$1" "65536")
|
|
||||||
local root_magic=$(get_magic_long_at "$1" "131072")
|
|
||||||
local kernel_magic=$(get_magic_long_at "$1" "10551296")
|
|
||||||
|
|
||||||
[ "$magic" != "d00dfeed" ] && {
|
|
||||||
echo "Invalid dtb image type."
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
[ "$init_magic" != "27051956" ] && {
|
|
||||||
echo "Invalid initramfs image type."
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
[ "$root_magic" != "68737173" ] && {
|
|
||||||
echo "Invalid rootfs image type."
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
[ "$kernel_magic" != "27051956" ] && {
|
|
||||||
echo "Invalid kernel image type."
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
return 0
|
return 0
|
||||||
;;
|
|
||||||
tplink,tl-wdr4900-v1)
|
|
||||||
[ "$magic" != "01000000" ] && {
|
|
||||||
echo "Invalid image type."
|
|
||||||
return 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
local hwid
|
# use default for platform_do_upgrade()
|
||||||
local imageid
|
|
||||||
|
|
||||||
hwid=$(tplink_get_hwid)
|
|
||||||
imageid=$(tplink_get_image_hwid "$1")
|
|
||||||
|
|
||||||
[ "$hwid" != "$imageid" ] && {
|
|
||||||
echo "Invalid image, hardware ID mismatch, hw:$hwid image:$imageid."
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
local boot_size
|
|
||||||
|
|
||||||
boot_size=$(tplink_get_image_boot_size "$1")
|
|
||||||
[ "$boot_size" != "00000000" ] && {
|
|
||||||
echo "Invalid image, it contains a bootloader."
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo "Sysupgrade is not yet supported on $board."
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
platform_do_upgrade() {
|
|
||||||
local board=$(board_name)
|
|
||||||
|
|
||||||
case "$board" in
|
|
||||||
*)
|
|
||||||
default_do_upgrade "$ARGV"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
disable_watchdog() {
|
disable_watchdog() {
|
||||||
killall watchdog
|
killall watchdog
|
||||||
|
|
|
@ -46,10 +46,11 @@ define Device/tl-wdr4900-v1
|
||||||
TPLINK_HWREV := 1
|
TPLINK_HWREV := 1
|
||||||
TPLINK_FLASHLAYOUT := 16Mppc
|
TPLINK_FLASHLAYOUT := 16Mppc
|
||||||
KERNEL_NAME := cuImage.tl-wdr4900-v1
|
KERNEL_NAME := cuImage.tl-wdr4900-v1
|
||||||
|
SUPPORTED_DEVICES:=tl-wdr4900-v1 tplink,tl-wdr4900-v1
|
||||||
IMAGES := fdt.bin factory.bin sysupgrade.bin
|
IMAGES := fdt.bin factory.bin sysupgrade.bin
|
||||||
IMAGE/fdt.bin := append-dtb
|
IMAGE/fdt.bin := append-dtb
|
||||||
IMAGE/factory.bin := tplink-v1-image
|
IMAGE/factory.bin := tplink-v1-image
|
||||||
IMAGE/sysupgrade.bin := tplink-v1-image -s
|
IMAGE/sysupgrade.bin := tplink-v1-image -s | append-metadata
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += tl-wdr4900-v1
|
TARGET_DEVICES += tl-wdr4900-v1
|
||||||
|
|
||||||
|
@ -63,12 +64,13 @@ define Device/hiveap-330
|
||||||
BLOCKSIZE := 128k
|
BLOCKSIZE := 128k
|
||||||
KERNEL_NAME := zImage
|
KERNEL_NAME := zImage
|
||||||
KERNEL_SIZE := 8m
|
KERNEL_SIZE := 8m
|
||||||
|
SUPPORTED_DEVICES := aerohive,hiveap-330
|
||||||
IMAGES := fdt.bin sysupgrade.bin
|
IMAGES := fdt.bin sysupgrade.bin
|
||||||
IMAGE/fdt.bin := append-dtb
|
IMAGE/fdt.bin := append-dtb
|
||||||
IMAGE/sysupgrade.bin := append-dtb | pad-to 256k | check-size 256k | \
|
IMAGE/sysupgrade.bin := append-dtb | pad-to 256k | check-size 256k | \
|
||||||
append-uImage-fakeramdisk-hdr | pad-to 256k | check-size 512k | \
|
append-uImage-fakeramdisk-hdr | pad-to 256k | check-size 512k | \
|
||||||
append-rootfs | pad-rootfs $$(BLOCKSIZE) | pad-to 41216k | check-size 41216k | \
|
append-rootfs | pad-rootfs $$(BLOCKSIZE) | pad-to 41216k | check-size 41216k | \
|
||||||
append-kernel
|
append-kernel | append-metadata
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += hiveap-330
|
TARGET_DEVICES += hiveap-330
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue