[LEDE-DEV] [PATCH v3 3/5] ipq806x/nbg6817: add sysupgrade support
André Valentin
avalentin at marcant.net
Mon Oct 24 00:51:24 PDT 2016
Hi!
Am 23.10.2016 um 16:44 schrieb Felix Fietkau:
> On 2016-10-23 16:25, André Valentin wrote:
>> Add new way of flashing to mmc devices based on rootfs split with loop devices.
>>
>> Signed-off-by: André Valentin <avalentin at marcant.net>
>> ---
>> .../ipq806x/base-files/lib/upgrade/platform.sh | 12 +++
>> .../linux/ipq806x/base-files/lib/upgrade/zyxel.sh | 94 ++++++++++++++++++++++
>> 2 files changed, 106 insertions(+)
>> create mode 100644 target/linux/ipq806x/base-files/lib/upgrade/zyxel.sh
>>
>> diff --git a/target/linux/ipq806x/base-files/lib/upgrade/zyxel.sh b/target/linux/ipq806x/base-files/lib/upgrade/zyxel.sh
>> new file mode 100644
>> index 0000000..d228dab
>> --- /dev/null
>> +++ b/target/linux/ipq806x/base-files/lib/upgrade/zyxel.sh
>> @@ -0,0 +1,94 @@
>> +#
>> +# Copyright (C) 2016 lede-project.org
>> +#
>> +
>> +zyxel_get_rootfs() {
>> + local rootfsdev
>> +
>> + if read cmdline < /proc/cmdline; then
>> + case "$cmdline" in
>> + *block2mtd=*)
>> + rootfsdev="${cmdline##*block2mtd=}"
>> + rootfsdev="${rootfsdev%%,*}"
>> + ;;
> You can drop the block2mtd part here.
I'll remove it.
>
>> + *root=*)
>> + rootfsdev="${cmdline##*root=}"
>> + rootfsdev="${rootfsdev%% *}"
>> + ;;
>> + esac
>> +
>> + echo "${rootfsdev}"
>> + fi
>> +}
>> +
>> +zyxel_do_flash() {
>> + local tar_file=$1
>> + local board=$2
>> + local kernel=$3
>> + local rootfs=$4
>> + local blocksize=65536
>> +
>> + # keep sure its unbound
>> + losetup --detach-all || {
>> + echo Failed to detach all loop devices. Skip this try.
>> + reboot -f
>> + }
>> +
>> + echo "flashing kernel to /dev/${kernel}"
>> + tar xf $tar_file sysupgrade-$board/kernel -O >/dev/$kernel
>> +
>> + echo "flashing rootfs to ${rootfs}"
>> + tar xf $tar_file sysupgrade-$board/root -O >"${rootfs}"
>> +
>> + local offset=$(tar xf $tar_file sysupgrade-$board/root -O | wc -c)
>> + offset=$(( (($offset + $blocksize - 1) / $blocksize) * $blocksize ))
>> +
>> + # Sanity
>> + [ $offset -lt $blocksize ] && {
>> + echo Wrong size for rootfs: $offset
>> + sleep 10
>> + reboot -f
>> + }
>> +
>> + # Mount loop for rootfs_data
>> + losetup -o $offset /dev/loop0 "${rootfs}" || {
>> + echo "Failed to mount looped rootfs_data."
>> + sleep 10
>> + reboot -f
>> + }
>> +
>> + echo "Format new rootfs_data at position ${offset}."
>> + mkfs.ext4 -F -L rootfs_data /dev/loop0
>> + mkdir /tmp/new_root
>> + mount -t ext4 /dev/loop0 /tmp/new_root && {
>> + echo "Saving config to rootfs_data at position ${offset}."
>> + cp -v /tmp/sysupgrade.tgz /tmp/new_root/
>> + umount /tmp/new_root
>> + }
>> +
>> + # Cleanup
>> + losetup -d /dev/loop0 >/dev/null 2>&1
> I think trying to guesstimate the offset for the ext4 part here, when
> fstools already handles some of that is a bit fragile. Things like the
> block size might be changed at some point, so I think it would be a good
> idea to extend fstools to be able deal with this stuff.
I think we need to store the blocksize in the sysupgrade/control. Because it could
change between 2 firmwares. What dou you think. In this case an fstools patch is
not needed.
Kind regards,
André
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3691 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.infradead.org/pipermail/lede-dev/attachments/20161024/029f4052/attachment.p7s>
More information about the Lede-dev
mailing list