Chciałem przygotować dystrybucję dla niektórych przyjaciół.
Ponieważ nie miałem nic innego do roboty, użyłem karty SD 16 Gb.
Zacząłem od domyślnego obrazu Debian Weezy 2Gb i nie zmieniłem rozmiaru.
Teraz, kiedy skończyłem, chciałem stworzyć obraz tego, co zrobiłem, ale dostaję plik 16 GB, zawierający 14 GB niepodzielonego na partycje (nie podzielonego na partycje i wolnego) miejsca na końcu.
[Użyłem Windows // Win32DiskImager, ponieważ nie mam teraz nic do przyklejenia się do interfejsu rPI]
Czy mogę po prostu obciąć plik obrazu tuż za partycjonowanym miejscem i przenieść wiodącą część na mniejszą kartę?
dd if=/dev/path/to/SD/card of=~/SpecialImage.img
, a następnie zainstaluj GParted i uruchomgparted ~/SpecialImage.img
. Gdy GParted otworzy.img
plik, po prostu zmień rozmiar partycji według własnych upodobań! (Obie komendy muszą być uruchomione jako root,sudo su
powinny dać ci to, czego potrzebujesz. Po$
przejściu na a#
, jesteś rootem. Uważaj, to jest odpowiednik Boga w Linuksie.) GParted jest w zasadzie interfejsem GUI do zarządzania tajemnymi partytonami narzędzia, których będziesz potrzebować. Korzystanie z GParted sprawia, że wszystko jest o wiele prostsze i bardziej prawdopodobne do osiągnięcia sukcesu.Odpowiedzi:
W końcu znalazłem zasób, który wyjaśnia moje pytanie.
Krótki:
Tak, obcięcie jest możliwe!
Podsumowanie procesu:
Wyodrębnianie informacji o partycji z obrazu za pomocą
fdisk
:Widzimy, że partycja ma rozmiar około 2,8 Gb (5872026 * 512), reszta nie jest podzielona na partycje .
Tak więc wszystko po zakończeniu partycji można usunąć.
Zostanie to zrobione za pomocą narzędzia
truncate
. Nie zapomnij dodać 1 do liczby sektorów, ponieważ numery bloków zaczynają się od 0.Edytować:
Dla tych, którzy są zbyt leniwi, aby przejść na Linuksa:
Działa również w systemie Windows z Cygwin 's
fdisk.exe
itruncate.exe
!Co to jest Cygwin?
Mogę zacytować: „Cygwin: Poczuj się jak w Linuksie - w systemie Windows” ( https://www.cygwin.com/ ).
Jest to zestaw plików wykonywalnych, które mogą działać w systemie Windows, ale zapewniają wszystkie programy wiersza poleceń, które zwykle znasz z systemu Linux. Instalacja Cygwina może potrwać bardzo długo, jeśli wybierzesz każdy pakiet podczas instalacji, ale postępując zgodnie z tym przykładem, po prostu upewnij się, że oprócz domyślnej konfiguracji wybrane są również pakiety
util-linux
(fdisk) icoreutils
(obcięte).W zależności od środowiska musisz dodać
/usr/bin
i/usr/sbin
do swojego$PATH
.źródło
fdisk.exe
itruncate.exe
?Wiem, że to stare pytanie, ale chciałbym pokazać, jak wykonać ten proces na komputerze Mac, ponieważ nie jest to tak łatwe:
fdisk
nie ma-l
opcji itruncate
nie jest domyślnie instalowane:1. Krok 1: Zainstaluj obcinanie w Mac OS X:
Do tego potrzebujesz MacPorts lub Homebrew. Używam MacPorts. Jeśli nie masz żadnego z nich, najpierw zainstaluj je. Link do MacPorts
Teraz możemy zainstalować obcinanie . Otwórz terminal i wpisz:
W przypadku instalacji Brew:
To powinno to zrobić.
2. Użyj narzędzi dyskowych, aby zamontować nasz IMG, tak aby był widoczny dla polecenia terminalut diskutil .
Za chwilę zobaczysz, dlaczego potrzebujemy tego kroku. Otwórz aplikację Disk Utility. Kliknij Plik (na górnym pasku) -> Otwórz obraz dysku i wybierz plik IMG.
3. Sprawdź rozmiar partycji IMG i miejsce jej zamontowania.
W terminalu wpisz:
I gdzieś na końcu powinno pokazać coś takiego:
Widzimy więc, że około 12 GB jest niepodzielonych na partycje. Musimy je obciąć.
Powodem, dla którego potrzebujemy tego polecenia, jest sprawdzenie, gdzie jest zamontowany obraz dysku. W moim przypadku jest pod: / dev / disk3
4. Sprawdź rzeczywisty rozmiar partycji.
3,9 GB i 62,9 MB to wartości, które nie będą działać z obciętym narzędziem. Musimy znaleźć rozmiary partycji w bajtach.
5. Uruchom fdisk .
W swoim terminalu uruchom polecenie:
Gdzie X to liczba, którą znalazłeś w poprzednim kroku. Powinno to spowodować coś takiego:
6. Czas obciąć !
Na terminalu
cd
do katalogu, w którym znajduje się twój obraz. Następnie napisz:Plik jest oczywiście twoim plikiem.
ROZMIAR to rozmiar w bajtach. To, co zrobiłem, to dodanie do kolumny rozmiaru
fdisk
polecenia kolumny początkowej i pomnożenie przez 512. Zatem w moim przypadku ROZMIAR będzie wynosić: 512 * (7553024 + 131072) = 3934257152 , co stanowi około 3,9 GB.Będziesz potrzebował rozpoczęcia i rozmiaru z ostatniej partycji , która jest pokazana przez
fdisk
. (Niekoniecznie największy, ale ten na końcu pliku IMG)7. (Opcjonalnie) Łatwo przetestuj, czy IMG nie jest uszkodzony.
Przejdź jeszcze raz w Narzędziu dyskowym i spróbuj otworzyć nowy plik IMG jak poprzednio. Jeśli się zamontuje, możesz także zobaczyć nowy (mniejszy) rozmiar. Jeśli się nie zamontuje, coś poszło nie tak. (Może spróbuj zwiększyć rozmiar w
truncate
poleceniu)Mam nadzieję, że ktoś uzna to za pomocne!
źródło
512*(Size+1)
to nie działa. Jak widać, użyłemEnd
i nieSize
, ponieważ musisz zachować obie partycje, jeśli jest ich więcej niż jedna. Tak więc użycie7553024 + 131072
(+1
) jest w 100% prawidłowe!Najnowsze Win32DiskImager ma opcję włączenia tylko przydzielonych partycji do obrazu dysku. Spowoduje to przycięcie jednym kliknięciem.
źródło
Właśnie zauważyłem, że wykonuję wiele operacji Win32diskimg w celu wykonania kopii zapasowej moich obrazów RPI do wdrożenia. Niedawno zacząłem testować „przycinanie” karty SD do czyszczenia części karty SD, które nie są używane do teoretycznego wyrównywania zużycia. Nie jestem pewien, jaki efekt będzie miał, ale jednym efektem ubocznym było zobrazowanie partycji SD 16 GB, a następnie użycie 7zip do jej skompresowania. Poszedłem ze zwykłego 16 GB do 9,5 GB do teraz pliku 2,5 GB. Testuję teraz, aby upewnić się, że wszystko jest w porządku, ale wydaje się, że użycie TRIM do oznaczenia nieużywanej przestrzeni jako 0 powoduje, że kompresja obrazu jest znacznie bardziej wydajna (co ma sens). Po prostu chciałem to zgłosić, było to bardzo łatwe do zrealizowania i nie wymagało wielu kroków.
źródło