Przez pewien czas miałem jedną konfigurację pi i działałem dobrze (RPi - 1). Chciałem stworzyć obraz RPi - 1, aby móc załadować dokładną kopię na moim drugim pi (RPi - 2). Karta SD w RPi - 1 ma 4 GB (faktycznie używana jest tylko około połowa), a karta SD w RPi - 2 ma również 4 GB. Korzystam z Win32 Disk Imager, aby pomyślnie utworzyć kopię RPi - 1. Następnie sformatowałem kartę SD dla RPi - 2 za pomocą SD Formatter 4.0 (w Windows 7). Jednak kiedy używam Win32 Disk Imager do zapisywania obrazu RPi-1 na karcie SD RPi-2, otrzymuję: „Za mało miejsca na dysku: Rozmiar 7744512 Dostępne: 7626752 sektory Rozmiar sektora: 512”
Wiem, że to niezły obraz, ponieważ mogę sformatować kartę SD dla RPi - 1 i bez problemu zapisać obraz z powrotem.
Czego tu brakuje? Czy wszystkie karty SD 4 GB nie mają tego samego rozmiaru, czy różnią się nieznacznie? Czy jest coś, co musisz zrobić z nową kartą SD, którą przegapiłem?
(RPi - 1 karta SD = Sandisk 4 GB // RPi - 2 karta SD = Kingston 4 GB)
Odpowiedzi:
Rzeczywiście nie wszystkie karty SD mają ten sam dokładny rozmiar. Trzeba by zmniejszyć partycję, aby zmieściła się na mniejszej karcie SD. Sam miałem podobny problem. To, co zrobiłem, miało osobne SD z (w moim przypadku) Raspbian. Podłączyłem kartę SD i chciałem zmienić jej rozmiar, używając czytnika kart USB.
Aby móc bezpiecznie zmniejszyć partycję, musisz upewnić się, że na końcu, który usuwasz, nie ma żadnych danych. Możesz to zrobić za pomocą
resize2fs -M -p /dev/sda2
(musisz zastąpić / dev / sda2 poprawną ścieżką do czytnika kart USB i partycji linux, której rozmiar chcesz zmienić). Spowoduje to zmianę rozmiaru systemu plików do najmniejszego możliwego rozmiaru. Możesz faktycznie określić dokładny rozmiar, który chcesz, ale wymaga to pewnej matematyki i konwersji rozmiarów do bloków i sektorów, a co nie. Bezpieczniej i łatwiej tego nie robić.Następnie możesz zmniejszyć partycję. Myślę, że użyłem
fdisk
do tego. Uzyskaj dokładną pozycję początkową partycji, usuń ją i utwórz ponownie, używając tej samej pozycji początkowej, ale o mniejszym rozmiarze.Na koniec musisz ponownie powiększyć system plików, aby zająć całą partycję
resize2fs -p /dev/sda2
źródło
e2fsck -f /dev/mmcblk0p2
(zmniejszam drugą partycję mmcblk0), aby sprawdzić spójność. Potem pozwolono mi biecresize2fs -M -p /dev/mmcblk0p2
zgodnie z sugestią.Wiem, że to stary artykuł, jednak właśnie miałem ten sam problem i rozwiązałem go za pomocą metody opisanej tutaj http://www.aoakley.com/articles/2015-10-09-resizing-sd-images.php
źródło
Lepiej byłoby zrobić archiwum systemu plików, ponieważ kiedy tworzysz pełny obraz dysku, kopiujesz również usunięte dane. Po usunięciu pliku i-węzeł jest rozłączany, ale rzeczywiste dane są nadal na dysku. Użycie pełnego obrazu dysku
dd
spowoduje skopiowanie starych danych (z wyjątkiem sytuacji, gdy najpierw je zastąpisz/dev/zero
, co zajmuje trochę czasu), ale użycie kopii zapasowejtar
spowoduje skopiowanie tylko bieżących danych.Lub ... możesz zrobić tak, jak robi to wiele dystrybucji: zmniejsz rozmiar systemu plików do czegoś bezpiecznego, takiego jak 1,9 GiB, zanim utworzysz obraz, i zmień rozmiar, aby wypełnić dysk po przywróceniu kopii zapasowej.
Zastrzeżenie: nie znam narzędzi do obrazowania w systemie Windows, jestem użytkownikiem systemu Linux.
źródło
jeśli używasz linux, tutaj mały skrypt:
kredyt: Sirlagz (bardzo przepraszam!)
źródło
echo "$partinfo" | grep $fileSystemType | awk -F: ' { print substr($2,0,length($2) - 1) } '
”, aby pozbyć się B w partstart.