diff options
author | Stefan Lippers-Hollmann <s.l-h@gmx.de> | 2017-10-29 03:11:51 +0100 |
---|---|---|
committer | John Crispin <john@phrozen.org> | 2017-10-29 03:11:51 +0100 |
commit | 9a221c6d6925a2e6a086be631ee45e231256a7e2 (patch) | |
tree | 13e84c71de863912419d74fb8cd7b7d27eae0c34 /target | |
parent | b583aaf5aa57173100b6569ffc60c34405b7dc38 (diff) | |
download | upstream-9a221c6d6925a2e6a086be631ee45e231256a7e2.tar.gz upstream-9a221c6d6925a2e6a086be631ee45e231256a7e2.tar.bz2 upstream-9a221c6d6925a2e6a086be631ee45e231256a7e2.zip |
ip806x: nbg6817: sysupgrade support both targets for kernel/ rootfs partitions
With this commit and the previous "nbg6817: don't hardcode the rootfs location
by using append-rootblock instead" applied, it is possible to boot- and
sysupgrade from both dual-boot sets (the primary mmcblk0p4+mmcblk0p5 or the
alternative mmcblk0p7+mmcblk0p8). However the sysupgrade support does not
toggle between both dual-boot sets between firmware upgrades so far.
The partition map of the eMMC used in the nbg6817 is:
Found valid GPT with protective MBR; using GPT.
Disk /dev/mmcblk0: 7471104 sectors, 3.6 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): XXX
Partition table holds up to 12 entries
First usable sector is 34, last usable sector is 7471070
Partitions will be aligned on 2-sector boundaries
Total free space is 1 sectors (512 bytes)
Number Start (sector) End (sector) Size Code Name
1 34 8225 4.0 MiB FFFF rootfs_data
2 8226 16417 4.0 MiB FFFF romd
3 16418 18465 1024.0 KiB FFFF header
4 18466 26657 4.0 MiB FFFF kernel
5 26658 157729 64.0 MiB FFFF rootfs
6 157730 159777 1024.0 KiB FFFF header_1
7 159778 167969 4.0 MiB FFFF kernel_1
8 167970 299041 64.0 MiB FFFF rootfs_1
9 299042 823329 256.0 MiB FFFF bu1
10 823330 7471069 3.2 GiB FFFF bu2
rootfs_data is the ext4 formatted overlay of the OEM firmware, LEDE
ignores it due to its (too) small size.
romd/ bu1 are initialized with zeroes (0x00) and unused.
bu2 is formatted with ext4 and used for streamboost and other optional
functionality by the OEM firmware, it is reformatted during factory
resets of the OEM firmware.
header/ header_1 contains version information for the corresponding
vendor firmwares installed to kernel/rootfs or kernel_1/ rootfs_1, the
format hasn't been completely reverse engineered so far and remains
left untouched by LEDE:
V1.00(ABCS.2)C0:
00000000 00 00 a7 74 01 32 f0 00 56 31 2e 30 30 28 41 42 |...t.2..V1.00(AB|
00000010 43 53 2e 32 29 43 30 00 ff ff ff ff ff ff ff ff |CS.2)C0.........|
00000020 ff ff ff ff ff ff ff ff 00 00 d5 dc 4e 42 47 36 |............NBG6|
00000030 38 31 37 00 ff ff ff ff ff ff ff ff ff ff ff ff |817.............|
00000040 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00000060 ff ff ff ff ff ff ff ff ff ff ff ff 00 00 22 a3 |..............".|
00000070 00 1c 70 00 ff ff ff ff ff ff ff ff ff ff ff ff |..p.............|
00000080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00000800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00100000
V1.00(ABCS.5)C0:
00000000 00 00 bf 94 01 46 d8 00 56 31 2e 30 30 28 41 42 |.....F..V1.00(AB|
00000010 43 53 2e 35 29 43 30 00 ff ff ff ff ff ff ff ff |CS.5)C0.........|
00000020 ff ff ff ff ff ff ff ff 00 00 d6 5a 4e 42 47 36 |...........ZNBG6|
00000030 38 31 37 00 ff ff ff ff ff ff ff ff ff ff ff ff |817.............|
00000040 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00000060 ff ff ff ff ff ff ff ff ff ff ff ff 00 00 c0 2c |...............,|
00000070 00 1c 58 00 ff ff ff ff ff ff ff ff ff ff ff ff |..X.............|
00000080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00100000
Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
Diffstat (limited to 'target')
-rw-r--r-- | target/linux/ipq806x/base-files/lib/upgrade/zyxel.sh | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/target/linux/ipq806x/base-files/lib/upgrade/zyxel.sh b/target/linux/ipq806x/base-files/lib/upgrade/zyxel.sh index 166bc052c5..7d0ab97356 100644 --- a/target/linux/ipq806x/base-files/lib/upgrade/zyxel.sh +++ b/target/linux/ipq806x/base-files/lib/upgrade/zyxel.sh @@ -75,10 +75,21 @@ zyxel_do_upgrade() { [ -b "${rootfs}" ] || return 1 case "$board" in nbg6817) - kernel=mmcblk0p4 + case "$rootfs" in + "/dev/mmcblk0p5") + kernel=mmcblk0p4 + ;; + "/dev/mmcblk0p8") + kernel=mmcblk0p7 + ;; + *) + return 1 + ;; + esac ;; *) return 1 + ;; esac zyxel_do_flash $tar_file $board $kernel $rootfs |