diff options
author | Klaus Kudielka <klaus.kudielka@gmail.com> | 2019-08-17 15:52:01 +0200 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2019-10-09 21:00:02 +0200 |
commit | 3a4f587c465a0531b820ca1a3e90eb05c4927b68 (patch) | |
tree | 0c34da83749e4c46878e37a28fb0317aafb11ec7 /package/base-files | |
parent | e0ce80d42ace6feba509da16795ab0eb81cf5bf4 (diff) | |
download | upstream-3a4f587c465a0531b820ca1a3e90eb05c4927b68.tar.gz upstream-3a4f587c465a0531b820ca1a3e90eb05c4927b68.tar.bz2 upstream-3a4f587c465a0531b820ca1a3e90eb05c4927b68.zip |
base-files: upgrade: add case to export_bootdevice
The factory uboot of the Turris Omnia boots with "root=b301", and we
instruct new users to sysupgrade from there (e.g. method 1, step 7).
Currently, this will fail with "Unable to determine upgrade device".
Add a new case to export_bootdevice, which parses the hex argument.
Fixes commit 2e5a0b81 ("mvebu: sysupgrade: sdcard: keep user added ...")
Signed-off-by: Klaus Kudielka <klaus.kudielka@gmail.com>
Diffstat (limited to 'package/base-files')
-rw-r--r-- | package/base-files/files/lib/upgrade/common.sh | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index 0d3162d4fc..a986cc0b5c 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -103,7 +103,7 @@ get_magic_long() { } export_bootdevice() { - local cmdline bootdisk rootpart uuid blockdev uevent line + local cmdline bootdisk rootpart uuid blockdev uevent line class local MAJOR MINOR DEVNAME DEVTYPE if read cmdline < /proc/cmdline; then @@ -139,6 +139,18 @@ export_bootdevice() { /dev/*) uevent="/sys/class/block/${rootpart##*/}/../uevent" ;; + 0x[a-f0-9][a-f0-9][a-f0-9] | 0x[a-f0-9][a-f0-9][a-f0-9][a-f0-9] | \ + [a-f0-9][a-f0-9][a-f0-9] | [a-f0-9][a-f0-9][a-f0-9][a-f0-9]) + rootpart=0x${rootpart#0x} + for class in /sys/class/block/*; do + while read line; do + export -n "$line" + done < "$class/uevent" + if [ $((rootpart/256)) = $MAJOR -a $((rootpart%256)) = $MINOR ]; then + uevent="$class/../uevent" + fi + done + ;; esac if [ -e "$uevent" ]; then |