[HOWTO] Klonowanie karty SD / testowanie szybkości zapis - odczyt

  • 4 replies
  • 558 views
*

Offline kris777

  • ***
  • 208
  • 50
Ostatnio musiałem wykonać kopię zapasową / klona karty SDHC (mini) z zainstalowanym systemem Armbian.
Niestety popełniłem prozaiczny błąd ...co kosztowało mnie powtórną instalacją systemu :-)
Podaję więc małe HOWTO  dotyczące poprawnego klonowania karty SD np. (z systemem ARMBIAN 5.38 stable Ubuntu 16.04.3 LTS) - na Linux-ie ( Linux Mint / Debian / Ubuntu itp). Pewnie przyda się to posiadaczom:  Raspberry Pi  / Orange Pi / Odroid-a itd mini PC opartych na architekturze ARM.
Do klonowania korzystamy z programu dd. Po włożeniu karty mini SDHC do np. laptopa korzystając z adaptera sprawdzamy z pozycji root-a (administratora) jak system rozpoznał w/w kartę:
Moje karty :
   
fdisk -lnp.

Dysk /dev/sdb: 29,8 GiB, bajtów: 32010928128, sektorów: 62521344
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Typ etykiety dysku: dos
Identyfikator dysku: 0x970f36a3

Urządzenie Rozruch Początek   Koniec  Sektory Rozmiar Id Typ
/dev/sdb1              2048 62521343 62519296   29,8G  c W95 FAT32 (LBA)
root@kris-R780:/home/kris#
W naszym przypadku najważniejsza informacja to : /dev/sdb .... a nie /dev/sdb1 !!! jeśli się pomylimy system
niestety się nie uruchomi ( wykonamy jedynie kopię danych zawartych na karcie SD).
Klonowanie ( w moim przypadku ) karty miniSD z systemem Armbian / Odroid-HC1:
dd if=/dev/sdb of=/home/kris/Pulpit/odroid-HC1-ok.img status=progressOczywiście ścieżkę do pliku i nazwę do pliku .img podajemy własne :-)
Przywracanie obrazu na inną kartę mini SDHC ( o tej samej pojemności !!! ).
dd bs=4M if=/home/kris/Pulpit/odroid-HC1-ok.img of=/dev/sdb status=progressOczywiście sprawdzając wcześniej jak system rozpoznał naszą kartę patrz wyżej : fdisk -l
Klonowanie karty mini SDHC z zainstalowanym systemem na inną kartę ale o np. mniejszej pojemności w moim przypadku 32GB na 8GB jest nieco inne. ( musimy mieć też w systemie program gparted ) ...w skrócie polega to na zmniejszeniu wcześniej wykonanego pliku obrazu : odroid-HC1-ok.img do ( fizycznej / faktycznej ! ) wielkości naszej mniejszej karty SD. Faktyczną wielkość danej karty określimy komendą jw. : fdisk -l
np. Samsung 32 EVO nie ma 32 GB ...ale : 29,8 GiB ! a np. karta mini SDHC SanDisc Industrial 8GB class 10 ma : 7.4GiB !  a nie 8GB jak by się wydawało :-)
Instalujemy sklonowany obraz w systemie i wykonujemy następujące polecenia ( terminal / root ):
losetup /dev/loop0 /home/kris/Pulpit/odroid-HC1-ok.img
partprobe /dev/loop0
gparted /dev/loop0
Uruchomi się program gparted z edycją naszego pliku obrazu :

Klikamy na przestrzeni : /dev/loop0p1 (prawy klik myszy) i z menu kontekstowego wybieramy : zmień rozmiar/przenieś. Za pomocą suwaka ( lub wpisując ręcznie w oknie) zmniejszmy partycję do wymaganego : 7.4GB  .... jednak dla pewności zapisu (na mniejszą kartę SD) podajemy troszkę mniej np. 7.1GB zatwierdzamy bieżące okno :

 i ponownie zatwierdzamy działania klikając na zieloną strzałkę w programie gparted (zastosuj wszystkie działania) po tym zamykamy program gparted.

Po tym zabiegu sprawdzamy dokonane zmiany na naszym sklonowanym obrazie komenda:
 
sudo fdisk -l /home/kris/Pulpit/odroid-HC1-ok.imgwynik :

Dysk /home/kris/Pulpit/odroid-HC1-ok.img: 29,8 GiB, bajtów: 32010928128, sektorów: 62521344
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Typ etykiety dysku: dos
Identyfikator dysku: 0x8a28a329

Urządzenie                           Rozruch          Początek   Koniec         Sektory     Rozmiar    Id    Typ
/home/kris/Pulpit/odroid-HC1-ok.img1             8192    14888959   14880768    7,1G       83    Linux

Na razie jeszcze nasz plik obrazu dalej fizycznie na komputerze ma : 29,8 GiB musimy dokonać FIX -u aby to zmienić. Interesują nas wpisy :
jednostki sektorów - *512
i liczba Koniec : 14888959
teraz już tylko wpis :
truncate --size=$[(14888959+1)*512] /home/kris/Pulpit/odroid-HC1-ok.imgI otrzymujemy ostatecznie zmniejszony obraz 7.1GB który teraz możemy bez problemu sklonować metodą podaną wyżej na nową kartę SDHC o mniejszej pojemności.

Jeśli chcemy przetestować zakupioną kartę mini SDHC  np.  szybkość zapisu / odczytu / fizycznego miejsca na karcie SD ( w efekcie sprawdzić czy karta SD podaje poprawne dane z tymi przy zakupie ) można skorzystać z programu :
F3 - Fight Flash Fraud
 strona domowa : https://fight-flash-fraud.readthedocs.io/en/stable/introduction.html
Program posiada graficzną nakładkę F3-qt jednak ja polecam testowanie w terminalu ...bo czasami niestety graficzne gui lubi się zawiesić.

Instalacji nie będę opisywał bo jest na stronie domowej.
A testowanie sprowadza się do prostych wpisów w terminalu np.
test szybkości zapisu / odczytu karty SD:
f3write /media/michel/5EBD-5C80/
f3read /media/michel/5EBD-5C80/
Oczywiście musimy podać własną ścieżkę dostępu po włożeniu karty do komputera : /media/michel/5EBD-5C80 - to tylko przykład :-)
Samsung:
odczyt
f3read /media/kris/USB
Data OK: 29.80 GB (62488704 sectors)
Data LOST: 0.00 Byte (0 sectors)
          Corrupted: 0.00 Byte (0 sectors)
   Slightly changed: 0.00 Byte (0 sectors)
        Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 19.26 MB/s

zapis
f3write /media/kris/USB
zapis = 16.92 MB/s
Average writing speed: 16.92 MB/s


Sandisc: odczyt :19MB/s - zapis:12MB/s

Ps. dla jasności najpierw wykonujemy zapis potem odczyt :-)
...

Jest jeszcze prawdziwy automat program ( skrypt )  PiShrink który wykona wszystko automatycznie. A dokładnie zmniejszy wykonany backup obrazu karty mini SDHC w postaci pliku .img do najmniejszego możliwego pliku obrazu tzn. tyle ile jest na niej zapisanych danych. Przykładowo w naszym przypadku zmniejszył plik .img o wielkości 29,8GB do 2.1GB ! .... niestety nie wiem jak się to ma do możliwości przyszłego dogrywania a co za tym idzie powiększania pojemności naszych danych ?  ....np . o kolejne 2 - 3GB ?

Strona domowa programu  : PiShrink

instalacja :
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
chmod +x pishrink.sh
sudo mv pishrink.sh /usr/local/bin

Zmniejszenie wykonanej kopii / klonu karty mini SDHC do najmniejszego możliwego pliku obrazu.
sudo pishrink.sh [-s] imagefile.img [newimagefile.img]
u mnie jest to :

sudo pishrink.sh -s odroid-HC1-ok.img pomniejszony-obraz.img

W systemie Armbian wykonałem polecenia które po restarcie a dokładniej ponownym uruchomieniu systemu z opcją poweroff dopasowały automatycznie wielkość wgranego (pomniejszonego pliku obrazu) do oryginalnej wielkości danej karty miniSDHC

Ponowna inicjacja zmiany rozmiaru karty SD podczas startu systemu Armbian.

sudo systemctl enable resize2fs
sudo update-rc.d resize2fs defaults
 sudo poweroff

pomocna może być też komenda :
/etc/init.d/resize2fs startpozdro!
« Ostatnia zmiana: Wrzesień 04, 2018, 17:00:55 pm wysłana przez kris777 »

*

Offline ciastek1981

  • Respect Mod Authoritah!!!
  • *******
  • 1184
  • 153
  • Płeć: Mężczyzna
  • Sprzątam forum, usuwam reklamy oraz daję bany ;)
Odp: [HOWTO] Klonowanie karty SD / testowanie szybkości zapis - odczyt
« Odpowiedź #1 dnia: Sierpień 28, 2018, 18:53:23 pm »
Napraw wątek  8) Treść można skonsultować z którymś z modów (już kiedyś tak robiłem z yb3 jak prosił). No albo na IRC.
« Ostatnia zmiana: Sierpień 28, 2018, 18:55:52 pm wysłana przez ciastek1981 »

*

Offline yahoob3

  • *****
  • 723
  • 121
  • Płeć: Mężczyzna
  • Zgryźliwy tetryk
    • Organy Hammonda
Odp: [HOWTO] Klonowanie karty SD / testowanie szybkości zapis - odczyt
« Odpowiedź #2 dnia: Sierpień 28, 2018, 20:08:55 pm »
@kris777, daj spokój. Ciastek dobrze pisze. Tamta szklaneczka whisky nie była za brak wiedzy.
Nota bene, po konsultacji mojego [HT] zmieniłem sporo w treści, bo za bardzo "poetycko" było ;)
Mint 18.3 Cinnamon, kern. 4.10; 64-bit na: Lenovo G500S z CPU Pent. 2020M 2.4 GHz*2; 6 GB RAM; GPU Intel+GeForce 720M;
LU#586742

*

Offline kris777

  • ***
  • 208
  • 50
Odp: [HOWTO] Klonowanie karty SD / testowanie szybkości zapis - odczyt
« Odpowiedź #3 dnia: Wrzesień 04, 2018, 16:59:07 pm »
@yahoob3 robię to dla Ciebie :-) ...ale przyznam że na razie nie mam czasu na weryfikowanie moich howto  ...najlepiej posprawdzać w działaniu potwierdzić ( poprawne działanie ) lub nie na forum....a ja  w wolnej chwili poprawię. Lub mod też może poprawić ja tam się nie obrażę że mi ktoś post modyfikuje jeśli jest błędnie napisany bo ma on służyć innym.  Ale jeśli ktoś ( w randze mod-a ) sugeruje żebym raczej nie pisał żadnego howto na forum....to daje to do myślenia i wykonuję grzecznie polecenie :-)
« Ostatnia zmiana: Wrzesień 04, 2018, 17:47:18 pm wysłana przez kris777 »

*

Offline yahoob3

  • *****
  • 723
  • 121
  • Płeć: Mężczyzna
  • Zgryźliwy tetryk
    • Organy Hammonda
Odp: [HOWTO] Klonowanie karty SD / testowanie szybkości zapis - odczyt
« Odpowiedź #4 dnia: Wrzesień 04, 2018, 20:08:30 pm »
:) Dzięki.
Jedyne co mi teraz przyszło do głowy, to rzeczony mem, którym cię już obdarowałem :)
Mint 18.3 Cinnamon, kern. 4.10; 64-bit na: Lenovo G500S z CPU Pent. 2020M 2.4 GHz*2; 6 GB RAM; GPU Intel+GeForce 720M;
LU#586742