mirror of
https://github.com/hak5/wifipineapple-openwrt.git
synced 2025-10-29 16:57:19 +00:00
if the initramfs kernel and payload were flashed in one block, the payload might not be at the start of the ubi partition due to bad blocks inside the kernel partition. Signed-off-by: John Crispin <blogic@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@43513 3c298f89-4303-0410-b956-a3cf2f4a3e73
22 lines
740 B
Bash
22 lines
740 B
Bash
#!/bin/sh
|
|
# Copyright (C) 2014 OpenWrt.org
|
|
|
|
nand_takeover() {
|
|
. /lib/upgrade/nand.sh
|
|
mtd=$(find_mtd_index "$CI_UBIPART")
|
|
esize=$(cat /proc/mtd | grep mtd$mtd |cut -d" " -f 3)
|
|
[ -z "$esize" ] && return 1
|
|
esize=$(printf "%d" 0x$esize)
|
|
for a in `seq 0 64`; do
|
|
mtd -o $((a * esize)) -l 400 dump /dev/mtd$mtd > /tmp/takeover.hdr
|
|
MAGIC=$(dd if=/tmp/takeover.hdr bs=1 skip=261 count=5 2> /dev/null)
|
|
SIZE=$(printf "%d" 0x$(dd if=/tmp/takeover.hdr bs=4 count=1 2> /dev/null | hexdump -v -n 4 -e '1/1 "%02x"'))
|
|
[ "$MAGIC" = "ustar" ] && {
|
|
mtd -o $((a * esize)) -l $((SIZE + 4)) dump /dev/mtd$mtd | dd bs=1 skip=4 of=/tmp/sysupgrade.tar
|
|
nand_do_upgrade_stage2 /tmp/sysupgrade.tar
|
|
}
|
|
done
|
|
}
|
|
|
|
boot_hook_add initramfs nand_takeover
|