Lines 98-107
Link Here
|
98 |
bootsv="$subvol" |
98 |
bootsv="$subvol" |
99 |
elif echo "$bootmnt" | cut -d ' ' -f 3 | grep -q "btrfs"; then |
99 |
elif echo "$bootmnt" | cut -d ' ' -f 3 | grep -q "btrfs"; then |
100 |
# separate btrfs /boot subvolume |
100 |
# separate btrfs /boot subvolume |
101 |
bootsv=$(echo "$bootmnt" | cut -d ' ' -f 4 | grep "^subvol=" | sed "s/subvol=//" ) |
101 |
bootsv=$(echo "$bootmnt" | cut -d ' ' -f 4 | grep "\(^\|,\)subvol=" | sed "s/.*subvol=\([^,]*\).*$/\1/") |
102 |
bootuuid=$(echo "$bootmnt" | cut -d ' ' -f 1 | grep "^UUID=" | sed "s/UUID=//" ) |
102 |
bootsig=$(echo "$bootmnt" | cut -d ' ' -f 1 | grep "^\(PART\)\?\(UUID\|LABEL\)=" | sed 's/\(.*=\)\(.*\)/\1"\2"/' ) |
103 |
debug "mounting btrfs $tmpmnt/boot UUID=$bootuuid subvol=$bootsv" |
103 |
debug "mounting btrfs $tmpmnt/boot $bootsig subvol=$bootsv" |
104 |
bindfrom=$(check_btrfs_mounted $bootsv $bootuuid) |
104 |
bindfrom=$(check_btrfs_mounted $bootsv $bootsig) |
105 |
if [ -n "$bindfrom" ]; then |
105 |
if [ -n "$bindfrom" ]; then |
106 |
# already mounted some place |
106 |
# already mounted some place |
107 |
if ! mount -o bind $bindfrom "$tmpmnt/boot" 2>/dev/null; then |
107 |
if ! mount -o bind $bindfrom "$tmpmnt/boot" 2>/dev/null; then |
Lines 111-124
Link Here
|
111 |
rmdir "$tmpmnt" 2>/dev/null |
111 |
rmdir "$tmpmnt" 2>/dev/null |
112 |
exit 1 |
112 |
exit 1 |
113 |
fi |
113 |
fi |
114 |
elif ! mount -o subvol=$bootsv -t btrfs -U $bootuuid "$tmpmnt/boot" 2>/dev/null; then |
114 |
elif ! mount -o subvol=$bootsv -t btrfs $bootsig "$tmpmnt/boot" 2>/dev/null; then |
115 |
warn "error mounting btrfs boot partition subvol=$bootsv, UUID=$bootuuid" |
115 |
warn "error mounting btrfs boot partition subvol=$bootsv, $bootsig" |
116 |
umount "$tmpmnt/boot" 2>/dev/null |
116 |
umount "$tmpmnt/boot" 2>/dev/null |
117 |
umount "$tmpmnt" 2>/dev/null |
117 |
umount "$tmpmnt" 2>/dev/null |
118 |
rmdir "$tmpmnt" 2>/dev/null |
118 |
rmdir "$tmpmnt" 2>/dev/null |
119 |
exit 1 |
119 |
exit 1 |
120 |
fi |
120 |
fi |
121 |
bootpart=$(grep " btrfs " /proc/self/mountinfo | grep " /$bootsv " | cut -d ' ' -f 10) |
121 |
bootpart=$(grep " btrfs " /proc/self/mountinfo | grep " /${bootsv##/} " | cut -d ' ' -f 10) |
122 |
else |
122 |
else |
123 |
# non-btrfs partition or logical volume |
123 |
# non-btrfs partition or logical volume |
124 |
linux_mount_boot $partition $tmpmnt |
124 |
linux_mount_boot $partition $tmpmnt |