Při instalaci LibreELEC na nové RPi4 (kvůli HEVC) jsem použil zbytečně velkou SD kartu (64GB) a poté zjistil, že jsem na předchozím RPi3 úspěšně používal 2GB sd kartu a měl na ní i po letech volné místo (data mám na NAS serveru).
Jelikož jsem už ale na RPi4 leccos nakonfiguroval, nechtělo se mi instalovat znova.
Rozhodl jsem se proto naklonovat 64GB SD kartu na 2GB sd kartu.
Obě karty obsahovali LibreELEC. Pokud by cílová neobsahoval LibreELEC doporučil bych nejprve na ní naistalovat poslední LibreELEC image (viz zde).
Ve windoze jsem nenašel vhodný nástroj, zkoušel jsem EASEUS, ale nezafungovalo.
Nakonec jsem nahodil notebook s linuxem (u mne Kali, ale mělo by fungovat všude).
Nalogován jsem byl jako root. Pokud bych byl jako user tak asi někde možná bude potřeba sudo.
Vycházel jsem z návodu zde. Zkoušel jsem i partimage, ten fungoval na prvním partition, ale na druhém házel chybu, takže jsem nakonec raději použil dd.
Záloha cílové karty (pokud je třeba)
Cílovou kartu mám jako /dev/sdb a jsou na ní 2 partition.
fdisk -l
Zálohu jsem provedl pomocí dd a zagzipoval.
dd if=/dev/sdb1 of=/root/LibreELEC_RPi3_partition1.img bs=64K conv=noerror,sync gzip /root/LibreELEC_RPi3_partition1.img
Druhý partition by šlo naklonovat stejně, ale z mé zkušenosti je výsledný sobor dost velký i po zazipování (jelikož se kopírují i filestémem nevyužité byty).
Jelikož data z druhého partition stačí jen zkopírovat, je podle mne lepší jen zkopírovat data do tar.gz archivu a uložit si UUID.
Je třeba druhý partition (tady /deb/sdb2) namountovat. Dělám z GUI a namountuje se do /media/root/STORAGE .
blkid /dev/sdb2 > /root/LibreELEC_RPi3_partition2_UUID.txt tar -czvf /root/LibreELEC_RPi3_partition2_copy.tar.gz -C /media/root/ STORAGE
Klonování 1 partition
Systémovou partition jsem naklonoval pomocí dd. sdc je zdrojový disk (ten 64 GB). sdb je cílový disk (2GB), který jsem si zazálohoval.
dd if=/dev/sdc1 of=/dev/sdb1 bs=64K conv=noerror,sync
Kopírování dat na 2 partition
Druhou partition nemohu naklonovat (větší než cíl) ale je to std ext3 linux partition, takže jen zkopíruji data.
Obě partition namountuji – u mne Kali jsem jen otevřel v GUI OpenFolder a otevřel partition STORAGE na obou discích. Tím se namountovalo /dev/sdb2 do /media/root/STORAGE a /dev/sdc2 do /media/root/STORAGE1
V midnight commanderu jsem smazal obsah /media/root/STORAGE a nakopíroval do něj /media/root/STORAGE
Oprava UUID
Bohužel při bootování z takto vytvořené SD karty jsem dostal chybu, že nemůže namountovat storage a za tím UUID. Jasně jelokž jsem data na druhém partition jen zkopíroval, zůstalo UUID původní, ale data na první (bootovací) partition mají UUID z 64GB disku.
Postupoval jsem podle návodu zde.
Pokud je sdb2 namountováno je třeba nejprve unmount. Unmount jsem dělal z GUI – v „průzkumníku“ pravým na jméno disku a unmount.
blkid
Zde si opíšeme UUID z /dev/sdc2 a zadáme ho do commandu níže
e2fsck -f /dev/sdb2 tune2fs -U <UUID-z-/dev/sdc2> /dev/sdb2
potvrdíme y a necháme doběhnout a zkontrolujeme že jsou nyní UUID stejná.
blkid
Nyní již ze staré 2GB karty v novém RPi4 naběhl naklonovaný systém.