Skip to content

Commit 0c23cb2

Browse files
Move cmdline/fstab updating functions up in file
This puts them together with the other function. This commit only moves code, without making any changes.
1 parent 31b2c6b commit 0c23cb2

File tree

1 file changed

+81
-80
lines changed

1 file changed

+81
-80
lines changed

rpi-clone

Lines changed: 81 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,87 @@ get_src_disk()
637637
printf -v "${3}" "%s" "$num"
638638
}
639639

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+
640721

641722
# ==== source (booted) disk info and default mount list
642723
#
@@ -1786,86 +1867,6 @@ do
17861867
done
17871868
qecho ""
17881869

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-
18691870
fixup_boot_partition /boot "${clone}/boot"
18701871
fixup_device_references_in_file "${clone}/etc/fstab"
18711872

0 commit comments

Comments
 (0)