ipq806x: fix ZyXEL NBG6817 sysupgrade
Use the first found directory in the tar archive instead of relying on
a directory named according to the userspace boardname.
It allows to change the boardname without adding another compatibility
layer to the zyxel sysupgrade.
Fixes: 33f09cf151
("ipq806x: convert to dt-based board-detection")
Signed-off-by: Mathias Kresin <dev@kresin.me>
This commit is contained in:
parent
acafbac4b3
commit
b6868e2f47
1 changed files with 10 additions and 7 deletions
|
@ -19,9 +19,8 @@ zyxel_get_rootfs() {
|
|||
|
||||
zyxel_do_flash() {
|
||||
local tar_file=$1
|
||||
local board=$2
|
||||
local kernel=$3
|
||||
local rootfs=$4
|
||||
local kernel=$2
|
||||
local rootfs=$3
|
||||
|
||||
# keep sure its unbound
|
||||
losetup --detach-all || {
|
||||
|
@ -29,14 +28,18 @@ zyxel_do_flash() {
|
|||
reboot -f
|
||||
}
|
||||
|
||||
# use the first found directory in the tar archive
|
||||
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
||||
board_dir=${board_dir%/}
|
||||
|
||||
echo "flashing kernel to /dev/${kernel}"
|
||||
tar xf $tar_file sysupgrade-$board/kernel -O >/dev/$kernel
|
||||
tar xf $tar_file ${board_dir}/kernel -O >/dev/$kernel
|
||||
|
||||
echo "flashing rootfs to ${rootfs}"
|
||||
tar xf $tar_file sysupgrade-$board/root -O >"${rootfs}"
|
||||
tar xf $tar_file ${board_dir}/root -O >"${rootfs}"
|
||||
|
||||
# a padded rootfs is needed for overlay fs creation
|
||||
local offset=$(tar xf $tar_file sysupgrade-$board/root -O | wc -c)
|
||||
local offset=$(tar xf $tar_file ${board_dir}/root -O | wc -c)
|
||||
[ $offset -lt 65536 ] && {
|
||||
echo Wrong size for rootfs: $offset
|
||||
sleep 10
|
||||
|
@ -92,7 +95,7 @@ zyxel_do_upgrade() {
|
|||
;;
|
||||
esac
|
||||
|
||||
zyxel_do_flash $tar_file $board $kernel $rootfs
|
||||
zyxel_do_flash $tar_file $kernel $rootfs
|
||||
|
||||
return 0
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue