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 :
Kod: Zaznacz cały
fdisk -l
Kod: Zaznacz cały
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)
niestety się nie uruchomi ( wykonamy jedynie kopię danych zawartych na karcie SD).
Klonowanie karty miniSD z systemem w moim przypadku : Armbian / Odroid-HC1:
Kod: Zaznacz cały
dd if=/dev/sdb of=/home/kris/Pulpit/odroid-HC1-ok.img status=progress
Można także wypróbować program ddrescue
Kod: Zaznacz cały
sudo apt-get install gddrescue
Kod: Zaznacz cały
ddrescue /dev/sdb SD-card.img SD-card.log
Kod: Zaznacz cały
dd bs=4M if=/home/kris/Pulpit/odroid-HC1-ok.img of=/dev/sdb status=progress
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: Zaznacz cały
losetup /dev/loop0 /home/kris/Pulpit/odroid-HC1-ok.img
Kod: Zaznacz cały
partprobe /dev/loop0
Kod: Zaznacz cały
gparted /dev/loop0
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: Zaznacz cały
sudo fdisk -l /home/kris/Pulpit/odroid-HC1-ok.img
Kod: Zaznacz cały
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
jednostki sektorów - *512
i liczba Koniec : 14888959
teraz już tylko wpis :
Kod: Zaznacz cały
truncate --size=$[(14888959+1)*512] /home/kris/Pulpit/odroid-HC1-ok.img
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: Zaznacz cały
f3write /media/nazwa_użytkownika/5EBD-5C80/
f3read /media/nazwa_użytkownika/5EBD-5C80/
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: Zaznacz cały
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
chmod +x pishrink.sh
sudo mv pishrink.sh /usr/local/bin
Kod: Zaznacz cały
sudo pishrink.sh [-s] imagefile.img [newimagefile.img]
Kod: Zaznacz cały
sudo pishrink.sh -s odroid-HC1-ok.img pomniejszony-obraz.img
...można to opcję wyłączyć w konfiguracji skryptu wpisując true:
Kod: Zaznacz cały
should_skip_autoexpand=false
Ponowna inicjacja zmiany rozmiaru karty SD podczas startu systemu Armbian.
komendy wykonujemy jako zwykły user !
Kod: Zaznacz cały
sudo systemctl enable resize2fs
sudo update-rc.d resize2fs defaults
sudo poweroff
shutdown -h now
Kod: Zaznacz cały
/etc/init.d/resize2fs start