801
801
then
802
802
src_label[p]=" $label "
803
803
fi
804
+
805
+ fsuuid=` lsblk --raw --output UUID --noheadings " ${src_device[p]} " `
806
+ if [ " $fsuuid " != " " ]
807
+ then
808
+ src_fsuuid[p]=" $fsuuid "
809
+ fi
804
810
done
805
811
806
812
@@ -1118,7 +1124,8 @@ then
1118
1124
SD_slot_dst=1
1119
1125
dst_part_base=${dst_disk} p
1120
1126
if [ " $edit_fstab_name " == " " ] \
1121
- && ! grep -q " ^PARTUUID=" /etc/fstab
1127
+ && ! grep -q " ^PARTUUID=" /etc/fstab \
1128
+ && ! grep -q " ^UUID=" /etc/fstab
1122
1129
then
1123
1130
edit_fstab_name=$dst_part_base
1124
1131
assumed_fstab_edit=1
@@ -1206,6 +1213,11 @@ do
1206
1213
then
1207
1214
dst_label[p]=" $label "
1208
1215
fi
1216
+ fsuuid=` lsblk --raw --output UUID --noheadings " ${dst_device[p]} " `
1217
+ if [ " $fsuuid " != " " ]
1218
+ then
1219
+ dst_fsuuid[p]=" $fsuuid "
1220
+ fi
1209
1221
fi
1210
1222
done
1211
1223
@@ -1598,9 +1610,20 @@ Use -U for unattended even if initializing.
1598
1610
echo " "
1599
1611
fi
1600
1612
change_label " $p " " $fs_type " " $dst_dev "
1613
+ # TODO: Change uuid in case filesystem uuid is used in fstab?
1601
1614
fi
1602
1615
fi
1603
1616
fi
1617
+
1618
+ # Wait for kernel and udev to process changes (i.e. new
1619
+ # UUIDs and labels)
1620
+ udevadm settle
1621
+ # Update UUID, just in case it changed
1622
+ fsuuid=` lsblk --raw --output UUID --noheadings " $dst_dev " `
1623
+ if [ " $fsuuid " != " " ]
1624
+ then
1625
+ dst_fsuuid[p]=" $fsuuid "
1626
+ fi
1604
1627
done
1605
1628
ext_label=" "
1606
1629
else
@@ -1780,6 +1803,11 @@ then
1780
1803
then
1781
1804
qecho " Editing $cmdline_txt PARTUUID to use $dst_disk_ID "
1782
1805
sed -i " s/${src_disk_ID} /${dst_disk_ID} /" " $cmdline_txt "
1806
+ elif [ " ${src_fsuuid[root_part_num]} " != " " ] && grep -q " ${src_fsuuid[root_part_num]} " " $cmdline_txt "
1807
+ then
1808
+ new_fsuuid=${dst_fsuuid[root_part_num]}
1809
+ qecho " Editing $cmdline_txt UUID to use $new_fsuuid "
1810
+ sed -i " s/${src_fsuuid[root_part_num]} /${new_fsuuid} /" " $cmdline_txt "
1783
1811
elif [ " $edit_fstab_name " != " " ] && grep -q ${src_part_base} $cmdline_txt
1784
1812
then
1785
1813
qecho " Editing $cmdline_txt references from $src_part_base to $edit_fstab_name "
@@ -1797,6 +1825,20 @@ if grep -q $src_disk_ID $fstab
1797
1825
then
1798
1826
qecho " Editing $fstab PARTUUID to use $dst_disk_ID "
1799
1827
sed -i " s/${src_disk_ID} /${dst_disk_ID} /g" " $fstab "
1828
+ elif grep -q ^UUID= $fstab
1829
+ then
1830
+ for (( p = 1 ; p <= n_src_parts; p++ ))
1831
+ do
1832
+ old_fsuuid=${src_fsuuid[p]}
1833
+ new_fsuuid=${dst_fsuuid[p]}
1834
+ if [ " $old_fsuuid " == " " -o " $new_fsuuid " == " " ] || ! grep -q " $old_fsuuid " " $fstab " ;
1835
+ then
1836
+ continue
1837
+ fi
1838
+
1839
+ qecho " Editing $fstab partition $p UUID to use $new_fsuuid "
1840
+ sed -i " s/$old_fsuuid /${new_fsuuid} /" " $fstab "
1841
+ done
1800
1842
elif [ " $edit_fstab_name " != " " ] && grep -q ${src_part_base} $fstab
1801
1843
then
1802
1844
qecho " Editing $fstab references from $src_part_base to $edit_fstab_name "
0 commit comments