@@ -637,6 +637,87 @@ get_src_disk()
637
637
printf -v " ${3} " " %s" " $num "
638
638
}
639
639
640
+ # Fix PARTUUID/UUID or device name references in cmdline.txt
641
+ fixup_boot_partition ()
642
+ {
643
+ src_mount=$1
644
+ dst_mount=$2
645
+
646
+ # Just try all flavors
647
+ # Paths are below the /boot directory/mountpoint
648
+ fixup_cmdline_txt " ${src_mount} " " ${dst_mount} " /cmdline.txt /cmdline.boot
649
+ fixup_cmdline_txt " ${src_mount} " " ${dst_mount} " /armbianEnv.txt /armbianEnv.boot
650
+ fixup_cmdline_txt " ${src_mount} " " ${dst_mount} " /firmware/cmdline.txt /firmware/cmdline.boot # Ubuntu
651
+ }
652
+
653
+ fixup_cmdline_txt ()
654
+ {
655
+ src_mount=$1
656
+ dst_mount=$2
657
+ cmdline_txt=$3
658
+ cmdline_boot=$4
659
+
660
+ if [ -f " ${dst_mount}${cmdline_txt} " ]
661
+ then
662
+ if (( leave_sd_usb_boot && SD_slot_dst))
663
+ then
664
+ qecho " Leaving SD to USB boot alone."
665
+ cp " ${dst_mount}${cmdline_txt} " " ${dst_mount}${cmdline_boot} "
666
+ cmdline_txt=${cmdline_boot}
667
+ fi
668
+ if grep -q " $src_disk_ID " " ${dst_mount}${cmdline_txt} "
669
+ then
670
+ qecho " Editing $cmdline_txt PARTUUID to use $dst_disk_ID "
671
+ sed -i " s/${src_disk_ID} /${dst_disk_ID} /" " ${dst_mount}${cmdline_txt} "
672
+ elif [ " ${src_fsuuid[root_part_num]} " != " " ] && grep -q " ${src_fsuuid[root_part_num]} " " ${dst_mount}${cmdline_txt} "
673
+ then
674
+ new_fsuuid=${dst_fsuuid[root_part_num]}
675
+ qecho " Editing $cmdline_txt UUID to use $new_fsuuid "
676
+ sed -i " s/${src_fsuuid[root_part_num]} /${new_fsuuid} /" " ${dst_mount}${cmdline_txt} "
677
+ elif [ " $edit_fstab_name " != " " ] && grep -q " ${src_part_base} " " ${dst_mount}${cmdline_txt} "
678
+ then
679
+ qecho " Editing $cmdline_txt references from $src_part_base to $edit_fstab_name "
680
+ sed -i " s/${src_part_base} /$edit_fstab_name /" " ${dst_mount}${cmdline_txt} "
681
+ fi
682
+ if (( leave_sd_usb_boot && SD_slot_boot))
683
+ then
684
+ qecho " Copying USB cmdline.txt to SD card to set up USB boot."
685
+ # Note that this leaves out $clone to modify the original SD
686
+ # card to boot from the clone instead
687
+ cp " ${src_mount}${cmdline_txt} " " ${src_mount}${cmdline_boot} "
688
+ cp " ${dst_mount}${cmdline_txt} " " ${src_mount}${cmdline_txt} "
689
+ fi
690
+ fi
691
+ }
692
+
693
+ fixup_device_references_in_file () {
694
+ file=$1
695
+ if grep -q $src_disk_ID $file
696
+ then
697
+ qecho " Editing $file PARTUUID to use $dst_disk_ID "
698
+ sed -i " s/${src_disk_ID} /${dst_disk_ID} /g" " $file "
699
+ elif grep -q ^UUID= $file
700
+ then
701
+ for (( p = 1 ; p <= n_src_parts; p++ ))
702
+ do
703
+ old_fsuuid=${src_fsuuid[p]}
704
+ new_fsuuid=${dst_fsuuid[p]}
705
+ if [ " $old_fsuuid " == " " -o " $new_fsuuid " == " " ] || ! grep -q " $old_fsuuid " " $file " ;
706
+ then
707
+ continue
708
+ fi
709
+
710
+ qecho " Editing $file partition $p UUID to use $new_fsuuid "
711
+ sed -i " s/$old_fsuuid /${new_fsuuid} /" " $file "
712
+ done
713
+ elif [ " $edit_fstab_name " != " " ] && grep -q ${src_part_base} $file
714
+ then
715
+ qecho " Editing $file references from $src_part_base to $edit_fstab_name "
716
+ sed -i " s/${src_part_base} /${edit_fstab_name} /" " $file "
717
+ fi
718
+ }
719
+
720
+
640
721
641
722
# ==== source (booted) disk info and default mount list
642
723
#
@@ -1786,86 +1867,6 @@ do
1786
1867
done
1787
1868
qecho " "
1788
1869
1789
- # Fix PARTUUID/UUID or device name references in cmdline.txt
1790
- fixup_boot_partition ()
1791
- {
1792
- src_mount=$1
1793
- dst_mount=$2
1794
-
1795
- # Just try all flavors
1796
- # Paths are below the /boot directory/mountpoint
1797
- fixup_cmdline_txt " ${src_mount} " " ${dst_mount} " /cmdline.txt /cmdline.boot
1798
- fixup_cmdline_txt " ${src_mount} " " ${dst_mount} " /armbianEnv.txt /armbianEnv.boot
1799
- fixup_cmdline_txt " ${src_mount} " " ${dst_mount} " /firmware/cmdline.txt /firmware/cmdline.boot # Ubuntu
1800
- }
1801
-
1802
- fixup_cmdline_txt ()
1803
- {
1804
- src_mount=$1
1805
- dst_mount=$2
1806
- cmdline_txt=$3
1807
- cmdline_boot=$4
1808
-
1809
- if [ -f " ${dst_mount}${cmdline_txt} " ]
1810
- then
1811
- if (( leave_sd_usb_boot && SD_slot_dst))
1812
- then
1813
- qecho " Leaving SD to USB boot alone."
1814
- cp " ${dst_mount}${cmdline_txt} " " ${dst_mount}${cmdline_boot} "
1815
- cmdline_txt=${cmdline_boot}
1816
- fi
1817
- if grep -q " $src_disk_ID " " ${dst_mount}${cmdline_txt} "
1818
- then
1819
- qecho " Editing $cmdline_txt PARTUUID to use $dst_disk_ID "
1820
- sed -i " s/${src_disk_ID} /${dst_disk_ID} /" " ${dst_mount}${cmdline_txt} "
1821
- elif [ " ${src_fsuuid[root_part_num]} " != " " ] && grep -q " ${src_fsuuid[root_part_num]} " " ${dst_mount}${cmdline_txt} "
1822
- then
1823
- new_fsuuid=${dst_fsuuid[root_part_num]}
1824
- qecho " Editing $cmdline_txt UUID to use $new_fsuuid "
1825
- sed -i " s/${src_fsuuid[root_part_num]} /${new_fsuuid} /" " ${dst_mount}${cmdline_txt} "
1826
- elif [ " $edit_fstab_name " != " " ] && grep -q " ${src_part_base} " " ${dst_mount}${cmdline_txt} "
1827
- then
1828
- qecho " Editing $cmdline_txt references from $src_part_base to $edit_fstab_name "
1829
- sed -i " s/${src_part_base} /$edit_fstab_name /" " ${dst_mount}${cmdline_txt} "
1830
- fi
1831
- if (( leave_sd_usb_boot && SD_slot_boot))
1832
- then
1833
- qecho " Copying USB cmdline.txt to SD card to set up USB boot."
1834
- # Note that this leaves out $clone to modify the original SD
1835
- # card to boot from the clone instead
1836
- cp " ${src_mount}${cmdline_txt} " " ${src_mount}${cmdline_boot} "
1837
- cp " ${dst_mount}${cmdline_txt} " " ${src_mount}${cmdline_txt} "
1838
- fi
1839
- fi
1840
- }
1841
-
1842
- fixup_device_references_in_file () {
1843
- file=$1
1844
- if grep -q $src_disk_ID $file
1845
- then
1846
- qecho " Editing $file PARTUUID to use $dst_disk_ID "
1847
- sed -i " s/${src_disk_ID} /${dst_disk_ID} /g" " $file "
1848
- elif grep -q ^UUID= $file
1849
- then
1850
- for (( p = 1 ; p <= n_src_parts; p++ ))
1851
- do
1852
- old_fsuuid=${src_fsuuid[p]}
1853
- new_fsuuid=${dst_fsuuid[p]}
1854
- if [ " $old_fsuuid " == " " -o " $new_fsuuid " == " " ] || ! grep -q " $old_fsuuid " " $file " ;
1855
- then
1856
- continue
1857
- fi
1858
-
1859
- qecho " Editing $file partition $p UUID to use $new_fsuuid "
1860
- sed -i " s/$old_fsuuid /${new_fsuuid} /" " $file "
1861
- done
1862
- elif [ " $edit_fstab_name " != " " ] && grep -q ${src_part_base} $file
1863
- then
1864
- qecho " Editing $file references from $src_part_base to $edit_fstab_name "
1865
- sed -i " s/${src_part_base} /${edit_fstab_name} /" " $file "
1866
- fi
1867
- }
1868
-
1869
1870
fixup_boot_partition /boot " ${clone} /boot"
1870
1871
fixup_device_references_in_file " ${clone} /etc/fstab"
1871
1872
0 commit comments