diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index 9e9144cba..567803a39 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -117,6 +117,24 @@ export_bootdevice() { esac case "$disk" in + PARTUUID=[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][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][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9]0002) + uuid="${disk#PARTUUID=}" + uuid="${uuid%0002}0002" + for disk in $(find /dev -type b); do + set -- $(dd if=$disk bs=1 skip=$((2*512+256+128+16)) count=16 2>/dev/null | hexdump -v -e '4/1 "%02x"' | awk '{ \ + for(i=1;i<9;i=i+2) first=substr($0,i,1) substr($0,i+1,1) first; \ + for(i=9;i<13;i=i+2) second=substr($0,i,1) substr($0,i+1,1) second; \ + for(i=13;i<16;i=i+2) third=substr($0,i,1) substr($0,i+1,1) third; \ + fourth = substr($0,17,4); \ + five = substr($0,21,12); \ + } END { print toupper(first"-"second"-"third"-"fourth"-"five) }') + if [ "$1" = "$uuid" ]; then + uevent="/sys/class/block/${disk##*/}/uevent" + export SAVE_PARTITIONS=0 + break + fi + done + ;; PARTUUID=[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-02) uuid="${disk#PARTUUID=}" uuid="${uuid%-02}"