Autor Wątek: [HOWTO] Klonowanie karty SD / testowanie szybkości zapis - odczyt  (Przeczytany 968 razy)

Offline kris777

  • Miętowy krzew
  • ****
  • Wiadomości: 318
  • Punkty: 58
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 :-)
lub można wypróbować program ddrescue
sudo apt-get install gddrescue ddrescue /dev/sdb SD-card.img SD-card.logPrzywracanie 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
Lub graficzny program Etcher

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 przeznaczony dla Raspberry Pi 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
Uwaga! ...nie sprawdziłem ale wyczytałem iż jeśli użyjemy opcji -s jak w moim przypadku to plik obrazu karty SD zachowa swoją wielkość w przeciwnym razie automatycznie przy pierwszym uruchomieni dopasuje się do wielkości użytej karty SD.
...można to opcję wyłączyć w konfiguracji skryptu wpisując true:
should_skip_autoexpand=false

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.
komendy wykonujemy jako zwykły user !
sudo systemctl enable resize2fs
sudo update-rc.d resize2fs defaults
sudo poweroff
shutdown -h now

pomocna może być też komenda :
/etc/init.d/resize2fs startpozdro!
« Ostatnia zmiana: Październik 20, 2018, 13:39:36 pm wysłana przez kris777 »

Offline ciastek1981

  • Globator Moderalny
  • Spamerzy
  • *******
  • Wiadomości: 1337
  • Punkty: 153
  • Płeć: Mężczyzna
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

  • Grupa Trzymająca Władzę
  • Wielki miętus
  • *****
  • Wiadomości: 892
  • Punkty: 191
  • 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

  • Miętowy krzew
  • ****
  • Wiadomości: 318
  • Punkty: 58
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

  • Grupa Trzymająca Władzę
  • Wielki miętus
  • *****
  • Wiadomości: 892
  • Punkty: 191
  • 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