Mam kartę SD 16 GB, która ma kilka partycji (tak naprawdę jest to karta dla Raspberry Pi). Mam kilka innych kart 4 GB, na które chcę sklonować kartę podstawową. 3 partycje na karcie podstawowej to:
- Partycja rozruchowa Rasp, FAT, 60 MB
- Partycja Linux, ext2, 1 GB
- Dodatkowa partycja „Storage”, FAT, 1 GB
Jeśli dd
utworzę obraz karty za pomocą:
dd if=/dev/sdb of=~/sd-card.bin
wynikowy .bin ma rozmiar 16 GB. Czy istnieje sposób na dd
skopiowanie tylko tego, co faktycznie jest używane, tj. <4 GB, aby móc to zrobić dd
na nowej karcie 4 GB? Czy jest lepsze rozwiązanie, którego powinienem użyć?
sd-card
raspberry-pi
dd
Charlie Schliesser
źródło
źródło
dd
do wielu innych kart. Chciałbym jednak wiedzieć, czy możliwe jest rozwiązanie początkowego problemu.Odpowiedzi:
Zakładam, że używasz komputera PC z systemem Linux lub Mac do wykonania kopii, a nie samego Raspberry Pi. Prawdopodobnie będziesz musiał dodać rozmiar bloku.
Widziałem jeden i cztery megabajty używane na dyskach Raspberry pi, podając bs = 1M lub bs = 4M. Myślę, że rozmiar bloku jest ważniejszy przy zapisywaniu dysku, ponieważ duże transfery są szybsze niż mniejsze. Nie ustawia to rozmiaru bloku dla dysku, tylko wpływa na rozmiar transferów, których używa dd. Jednym z powodów ustawienia dużego rozmiaru bloku jest konieczność usunięcia lampy błyskowej przed jej zapisaniem. Odbywa się to automatycznie, ale szybciej w przypadku przelewów większych niż minimalny rozmiar wymazywania.
Możesz ograniczyć całkowitą ilość danych kopiowanych przez dd używając „count”. „count” jest w jednostkach bloków. Jeśli koniec ostatniej partycji na dysku źródłowym jest wcześniejszy niż rozmiar miejsca docelowego, możesz zrobić, co chcesz.
Coś takiego
dd if=/dev/sdb of=~/sd-card.bin bs=1M count=4000
utworzy obraz o wielkości 4000 MB.Więcej informacji na stronie http://en.wikipedia.org/wiki/Dd_(Unix) i http://elinux.org/RPi_Easy_SD_Card_Setup . Nie wiesz, jak znaleźć koniec ostatniej partycji lub całkowity rozmiar kart. Jednak jeśli sformatowałeś dyski, prawdopodobnie będziesz wiedział, jak to zrobić.
źródło
Rozwijając odpowiedź Williama , można obliczyć koniec ostatniej partycji za pomocą
fdisk
i kalkulatora:Łącznie zużyte miejsce w bajtach = końcowy sektor wielkości sektora ostatniej partycji X (tutaj 3667967 x 512).
Całkowite wykorzystane miejsce w GB = całkowite wykorzystane miejsce w bajtach / 1024 3 (tutaj to 1,749023 GB).
Zwykle nie jest konieczne tworzenie obrazu, który jest sprowadzany do ostatniego użytecznego bitu danych, więc w powyższym przykładzie utworzę obraz o wielkości 2 GB przy użyciu metody opisanej przez Williama w tej samej wcześniejszej odpowiedzi :
Na końcu obrazu pojawi się niewielka część bezużytecznego guffa po twoich ostatnich przydatnych danych, ale zasadniczo nie różni się to od bezużytecznego guffa, który zostanie nadpisany, gdy ponownie zapiszesz obraz na nośniku.
Ta metoda działa dla mnie na kilkunastu klonach. Jeśli w tej metodzie są jakieś fatalne wady, jeszcze się nie ujawniły.
źródło