export_bootdevice() {
local cmdline uuid blockdev uevent line class
- local MAJOR MINOR DEVNAME DEVTYPE
+ local MAJOR MINOR DEVNAME DEVTYPE DISKSEQ PARTN
local rootpart="$(cmdline_get_var root)"
case "$rootpart" in
while read line; do
export -n "$line"
done < "$uevent"
- export BOOTDEV_MAJOR=$MAJOR
- export BOOTDEV_MINOR=$MINOR
+ export BOOTDEV_DISKSEQ=$DISKSEQ
return 0
fi
}
export_partdevice() {
- local var="$1" offset="$2"
- local uevent line MAJOR MINOR DEVNAME DEVTYPE
+ local var="$1" partn="$2"
+ local uevent line MAJOR MINOR DEVNAME DEVTYPE DISKSEQ PARTN
for uevent in /sys/class/block/*/uevent; do
while read line; do
export -n "$line"
done < "$uevent"
- if [ "$BOOTDEV_MAJOR" = "$MAJOR" -a $(($BOOTDEV_MINOR + $offset)) = "$MINOR" -a -b "/dev/$DEVNAME" ]; then
- export "$var=$DEVNAME"
- return 0
+ if [ "$BOOTDEV_DISKSEQ" = "$DISKSEQ" -a -b "/dev/$DEVNAME" ]; then
+ if [ "$PARTN" = "$partn" -a "$DEVTYPE" = "partition" ] || [ "$partn" = "0" -a "$DEVTYPE" = "disk" ]; then
+ export "$var=$DEVNAME"
+ return 0
+ fi
fi
done