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
|
||||
|
||||
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"'
|
||||
}
|
||||
REQUIRE_IMAGE_METADATA=1
|
||||
|
||||
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
|
||||
;;
|
||||
tplink,tl-wdr4900-v1)
|
||||
[ "$magic" != "01000000" ] && {
|
||||
echo "Invalid image type."
|
||||
return 1
|
||||
}
|
||||
|
||||
local hwid
|
||||
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
|
||||
return 0
|
||||
}
|
||||
|
||||
platform_do_upgrade() {
|
||||
local board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
*)
|
||||
default_do_upgrade "$ARGV"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
# use default for platform_do_upgrade()
|
||||
|
||||
disable_watchdog() {
|
||||
killall watchdog
|
||||
|
|
|
@ -46,10 +46,11 @@ define Device/tl-wdr4900-v1
|
|||
TPLINK_HWREV := 1
|
||||
TPLINK_FLASHLAYOUT := 16Mppc
|
||||
KERNEL_NAME := cuImage.tl-wdr4900-v1
|
||||
SUPPORTED_DEVICES:=tl-wdr4900-v1 tplink,tl-wdr4900-v1
|
||||
IMAGES := fdt.bin factory.bin sysupgrade.bin
|
||||
IMAGE/fdt.bin := append-dtb
|
||||
IMAGE/factory.bin := tplink-v1-image
|
||||
IMAGE/sysupgrade.bin := tplink-v1-image -s
|
||||
IMAGE/sysupgrade.bin := tplink-v1-image -s | append-metadata
|
||||
endef
|
||||
TARGET_DEVICES += tl-wdr4900-v1
|
||||
|
||||
|
@ -63,12 +64,13 @@ define Device/hiveap-330
|
|||
BLOCKSIZE := 128k
|
||||
KERNEL_NAME := zImage
|
||||
KERNEL_SIZE := 8m
|
||||
SUPPORTED_DEVICES := aerohive,hiveap-330
|
||||
IMAGES := fdt.bin sysupgrade.bin
|
||||
IMAGE/fdt.bin := append-dtb
|
||||
IMAGE/sysupgrade.bin := append-dtb | pad-to 256k | check-size 256k | \
|
||||
append-uImage-fakeramdisk-hdr | pad-to 256k | check-size 512k | \
|
||||
append-rootfs | pad-rootfs $$(BLOCKSIZE) | pad-to 41216k | check-size 41216k | \
|
||||
append-kernel
|
||||
append-kernel | append-metadata
|
||||
endef
|
||||
TARGET_DEVICES += hiveap-330
|
||||
|
||||
|
|
Loading…
Reference in New Issue