done
}
+function map_from_super() {
+ local part_name="$1"
+ local part_table="$2"
+ echo "$part_table" | /usr/sbin/dmsetup create "$part_name" &>/dev/null
+ if [ $? = 0 ]
+ then
+ echo "/dev/mapper/$part_name"
+ return 0
+ else
+ echo "WARNING : SUPER FOUND BUT $part_name NOT FOUND" >&2
+ return 1
+ fi
+}
+
#------------------------------------------------
# get partition id
#------------------------------------------------
echo "Using A/B slot: ${P_SLOT}"
fi
- PART_ROOTFS=`/sbin/blkid -t PARTLABEL=rootfs${P_SUFFIX} -o device -l`
+ SUPERFS=`/sbin/blkid -t PARTLABEL=super -o device -l`
+ if [ x$SUPERFS = "x" ]
+ then
+ SUPERFS=`/sbin/blkid -t LABEL=super -o device -l`
+ fi
+
+ if [ x$SUPERFS != "x" ]
+ then
+ PARSE_DYNPARTS=`/usr/sbin/parse-dynparts "$SUPERFS" --list-tables`
+
+ while read -r part_name part_table; do
+ if [ "$part_name" = "rootfs${P_SUFFIX}" ]
+ then
+ PART_ROOTFS=`map_from_super "$part_name" "$part_table"`
+ fi
+
+ if [ "$part_name" = "hal${P_SUFFIX}" ]
+ then
+ PART_HAL=`map_from_super "$part_name" "$part_table"`
+ fi
+ done <<< "$PARSE_DYNPARTS"
+ fi
+
+ if [ x$PART_ROOTFS = "x" ]
+ then
+ PART_ROOTFS=`/sbin/blkid -t PARTLABEL=rootfs${P_SUFFIX} -o device -l`
+ fi
if [ x$PART_ROOTFS = "x" ]
then
PART_ROOTFS=`/sbin/blkid -L rootfs`
PART_RAMDISK=`/sbin/blkid -L ramdisk`
fi
- PART_HAL=`/sbin/blkid -t PARTLABEL=hal${P_SUFFIX} -o device -l`
+ if [ x$HALFS = "x" ]
+ then
+ PART_HAL=`/sbin/blkid -t PARTLABEL=hal${P_SUFFIX} -o device -l`
+ fi
if [ x$PART_HAL = "x" ]
then
PART_HAL=`/sbin/blkid -L hal`