Podaję małe HOWTO dotyczące poprawnego klonowania karty SD na systemie Linux ( Linux Mint / Debian / Ubuntu itp). Ja niestety popełnilem prozaiczny błąd co kosztowało mnie ponowną instalacją całego systemu opartego na Ubuntu.
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 :
np.Kod:
Dysk /dev/sdb: 29,8 GiB, bajtów: 32010928128, sektorów: 62521344Jednostki: sektorów, czyli 1 * 512 = 512 bajtówRozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512Typ etykiety dysku: dosIdentyfikator dysku: 0x970f36a3Urządzenie Rozruch Początek Koniec Sektory Rozmiar Id Typ/dev/sdb1 2048 62521343 62519296 29,8G c W95 FAT32 (LBA)
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 karty miniSD z systemem w moim przypadku : Armbian / Odroid-HC1:
Kod:
dd if=/dev/sdb of=/home/kris/Pulpit/odroid-HC1-ok.img status=progress
Oczywiście ścieżkę do pliku i nazwę do pliku .img podajemy własne
Można także wypróbować program ddrescue
Kod:
sudo apt-get install gddrescue
Kod:
ddrescue /dev/sdb SD-card.img SD-card.log
Przywracanie obrazu na inną kartę mini SDHC ( o tej samej pojemności ... lub większej !!! ).Kod:
dd bs=4M if=/home/kris/Pulpit/odroid-HC1-ok.img of=/dev/sdb status=progress
Oczywiście sprawdzając wcześniej jak system rozpoznał naszą kartę patrz wyżej : fdisk -l
Lub prościej np. graficzny program Etcher
Etcher - homepage
Klonowanie karty mini SDHC z zainstalowanym systemem na inną kartę ale o 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 ):Kod:
losetup /dev/loop0 /home/kris/Pulpit/odroid-HC1-ok.img
Kod:
partprobe /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:Kod:
sudo fdisk -l /home/kris/Pulpit/odroid-HC1-ok.img
wynik :Kod:
Dysk /home/kris/Pulpit/odroid-HC1-ok.img: 29,8 GiB, bajtów: 32010928128, sektorów: 62521344Jednostki: sektorów, czyli 1 * 512 = 512 bajtówRozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512Typ etykiety dysku: dosIdentyfikator dysku: 0x8a28a329Urzą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 :Kod:
truncate --size=$[(14888959+1)*512] /home/kris/Pulpit/odroid-HC1-ok.img
I 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.
Dodatkowe informacje i przydatne programy :
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.i ... ction.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:Kod:
f3write /media/nazwa_użytkownika/5EBD-5C80/f3read /media/nazwa_użytkownika/5EBD-5C80/
Oczywiście musimy podać własną ścieżkę dostępu po włożeniu karty do komputera : /media/nazwa_użytkownika/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 :Kod:
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.shchmod +x pishrink.shsudo mv pishrink.sh /usr/local/bin
Zmniejszenie wykonanej kopii / klonu karty mini SDHC do najmniejszego możliwego pliku obrazu.Kod:
sudo pishrink.sh [-s] imagefile.img [newimagefile.img]
u mnie jest to :Kod:
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:Kod:
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 !Kod:
sudo systemctl enable resize2fssudo update-rc.d resize2fs defaultssudo poweroffshutdown -h now
pomocna może być też komenda :Kod:
/etc/init.d/resize2fs start
pozdro!Statystyki: autor: kobrawerde — 13 kwie 2019, 11:32
]]>