Jak mogę zmienić rozmiar mojej partycji / (root)?

171

Mimo że moja karta SD ma 16 GB, obraz, który na nią sflashowałem, miał tylko 2 GB, a teraz widzę tylko 2 GB miejsca na dysku.

Jak mogę zmienić rozmiar obrazu, aby mieć więcej miejsca na partycji głównej?

Jivings
źródło
Dzięki .. pracowałem świetnie dla mnie i nie tankowałem mojego systemu .. nadal mam IRC i serwer Apache i moją pełną pojemność 8
1
Po co zmieniać rozmiar partycji root, kiedy można utworzyć nową partycję na pozostałym wolnym miejscu na karcie SD, a następnie zamontować ją na /mnt/storageprzykład na partycji root . To skutecznie izoluje system i dane oraz ułatwia konserwację i tworzenie kopii zapasowych.
mbaitoff,
2
@mbaitoff - ponieważ domyślny obraz systemu ma tylko 68 MB wolnego miejsca, co nie pozostawia wiele miejsca na dodanie dodatkowego oprogramowania.
Jules
@Jules - Nie pytałem, dlaczego ktoś chce zmienić rozmiar partycji. Pytanie dotyczy tego, dlaczego należy zmienić rozmiar partycji systemowej zamiast montować dodatkową pamięć w punkcie montowania partycji systemowej, tym samym skutecznie izolując system i oprogramowanie / dane? Jeśli chcesz magazynować, zamontuj pozostały dysk SD w /mnt/storage, jeśli chcesz programy - zamontuj w /opt/software/.
mbaitoff,
@ mbaitoff większość programów instaluje się w / usr, nie w / opt / software. Wstępnie zbudowane obrazy mają zawartość / usr na partycji głównej. Dlatego wydaje się konieczne zwiększenie rozmiaru partycji głównej, jeśli chcesz zainstalować oprogramowanie inne niż domyślne.
Jules

Odpowiedzi:

158

Zakładając, że używasz Debiana.

Krótka wersja:

  1. Utwórz kopię zapasową systemu
  2. Usuń partycję główną i partycję wymiany (pozostawiając partycję rozruchową samą)
  3. Utwórz ponownie partycję główną, aby wykorzystać pozostałe miejsce na dysku (z wyłączeniem partycji rozruchowej). Pamiętaj, aby ponownie użyć tego samego sektora początkowego, co oryginalna partycja główna.
  4. zrestartuj system
  5. zmień rozmiar nowej rozruchowej partycji głównej, aby wykorzystać pełny rozmiar partycji.

Instrukcje krok po kroku

Najpierw wykonaj kopię zapasową karty SD, postępując zgodnie z instrukcjami tutaj, na wypadek, gdyby coś poszło nie tak.

W wierszu polecenia lub oknie terminala wprowadź następujące dane

sudo fdisk /dev/mmcblk0

następnie wpisz, paby wyświetlić tabelę partycji

powinieneś zobaczyć trzy partycje. jeśli spojrzysz na ostatnią kolumnę oznaczoną System , powinieneś mieć

  1. W95 FAT32
  2. Linux
  3. Wymiana systemu Linux

zanotuj numer startowy do Partiton 2, będziesz go potrzebować później. chociaż prawdopodobnie nadal będzie na ekranie (na wszelki wypadek).

następny typ, daby usunąć partycję.

Zostaniesz poproszony o podanie numeru partycji, którą chcesz usunąć. W powyższym przypadku chcesz usunąć zarówno partycje wymiany Linux, jak i Linux.

Więc wpisz 2

następnie wpisz dponownie, a następnie wpisz, 3aby usunąć partycję wymiany.

Teraz możesz zmienić rozmiar głównej partycji.

wpisz, naby utworzyć nową partycję.

Ta nowa partycja musi być partycją podstawową, więc wpisz p.

Następnie wprowadź, 2gdy pojawi się monit o numer partycji.

Zostanie wyświetlony monit o podanie pierwszego sektora dla nowej partycji. Wprowadź numer początkowy z wcześniejszego kroku (partycja Linux)

Następnie zostaniesz zapytany o ostatni sektor, który możesz po prostu nacisnąć Enter, aby zaakceptować wartość domyślną, która wykorzysta pozostałe miejsce na dysku.

Wpisz, waby zapisać wprowadzone zmiany.

Następnie uruchom ponownie system za pomocą następującego polecenia:

sudo reboot

po ponownym uruchomieniu systemu i powrocie do wiersza poleceń wprowadź następujące polecenie:

sudo resize2fs /dev/mmcblk0p2

Uwaga: może to zająć dużo czasu (w zależności od rozmiaru karty i szybkości), aby uzbroić się w cierpliwość i pozwolić jej zakończyć, aby nie zepsuć systemu plików i trzeba zacząć od zera.

Po zakończeniu uruchom ponownie system za pomocą następującego polecenia:

sudo reboot

Możesz teraz sprawdzić, czy system wykorzystuje pełną pojemność karty SD, wprowadzając następujące polecenie:

df -h

Dlaczego to działa:

Prawdziwa magia polega na tym, że usuwasz partycję główną i zamieniasz partycje, a następnie odtwarzasz tylko partycję główną (używając oryginalnego sektora początkowego) przed zapisaniem danych na dysku . W rezultacie nie usuwasz istniejących danych z partycji głównej.

Usuwając partycję wymiany, pozwalasz, aby przestrzeń partycji root rosła poza swój obecny rozmiar i wypełniała nieużywaną część dysku (z powodu umieszczenia partycji - partycja root jest umieszczona pomiędzy partycjami rozruchową i swapową - nie może wystarczy zmienić rozmiar, pozostawiając partycję wymiany samą).

Następnie zmieniasz rozmiar (który można bezpiecznie uruchomić na zamontowanym dysku) systemu plików, aby wykorzystać całe miejsce na nowej partycji głównej.

ref:

Steve Robillard
źródło
1
@Jivings, jeśli wykonane poprawnie, nic nie stracisz, ale to jest powód, dla którego wykonałem kopię zapasową w kroku pierwszym.
Steve Robillard,
2
Z komentarzy wynika, że ​​powinieneś również udokumentować, dlaczego to działa, a nie tylko jak.
Jivings,
1
@Jivings mam nadzieję, że rozwiąże to twoje obawy.
Steve Robillard,
9
Wydaje się bardzo błędne, że musisz usunąć partycję, aby zmienić jej rozmiar.
Alex Chamberlain,
5
@AwesomeUser Nie robisz tego na komputerze Mac, robisz to na samym pi. Ponadto, jeśli korzystasz z Raspbian, możesz uruchomić pi i z wiersza poleceń wydać następujące polecenie sudo raspi-config i wybrać opcję zmiany rozmiaru partycji root.
Steve Robillard
102

Korzystając z obrazu Debian-Wheezy Beta, wbudowane jest narzędzie konfiguracyjne, które ułatwia to:

Istnieje narzędzie o nazwie raspi-config. Działa przy pierwszym uruchomieniu, jeśli jesteś podłączony bezpośrednio do RPi. Jeśli masz ponad SSH, możesz uruchomić go ręcznie, używając $ sudo raspi-config. (Myślę, że możesz ponownie uruchomić narzędzie ręcznie w dowolnym momencie).

Druga opcja w niebieskim oknie dialogowym zatytułowana jest expand_rootfsz opisem „Rozwiń partycję root, aby wypełnić kartę SD”.

Wybranie tej opcji spowoduje zmianę rozmiaru partycji root, aby wypełnić kartę przy następnym uruchomieniu RPi.

Aktualizacja na 2015 rok!

Wracam do tej odpowiedzi z pewną ostrożnością: używam kilku kart SD 16 GB i zostałem przyłapany na tym, że maxxowałem partycję, aby wypełnić kartę, której używałem. Spowodowało to wiele problemów podczas przełączania na nową kartę, która (mimo że została określona jako 16 GB) była o około 200 MB mniejsza niż starsza karta.

To przyszło na myśl, kiedy zmieniłem kilka RPis z v1 na nowy model v2, który wykorzystuje karty Micro SD.

Teraz pozostawiam około 1 GB wolnego miejsca, aby mieć absolutną pewność, że moje zdjęcia mogą być przełączane między kartami SD bez problemu.

Jon Egerton
źródło
Ten proces trwał około 10 minut z kartą 16 GB na moim Pi.
Der Hochstapler
5
Jest to o wiele prostsze niż najlepsza odpowiedź. To jest rozwiązanie, którego należy użyć.
James Skimming
@JamesSkimming: Jest to rozwiązanie do użycia w obrazie Debian-Wheezy Beta. Nie dla innych.
SF.
Nie działa to w przypadku Raspbian po zainstalowaniu z NOOBS na karcie SD, które są dostarczane z zestawami RPi. kiedy próbujesz uruchomić opcję rozwijania, mówi, że nie jest obsługiwany przez tę konfigurację, ale ponieważ działające nooby i tak prawdopodobnie zajmuje całą przestrzeń ... problem polega na tym, że próbuję przełożyć obraz 8 GB na kartę 32 GB
Eoin Campbell
Raspi-config nie wie, jak zmienić rozmiar katalogu głównego Raspbian Wheezy. expand_rootfs, jak sugerowałeś, powodował problemy. Powyższa odpowiedź działa jak urok w systemie na żywo i nie trzeba „pozostawiać około 1 GB”.
GTodorov
28

Jeśli nie czujesz się komfortowo pracując z linii poleceń, jak w doskonałej odpowiedzi Steve'a Robillarda, dostępne są niektóre aplikacje GUI. W szczególności gparted działa bardzo dobrze.

Myślę, że jest instalowany domyślnie na Ubuntu LiveCD, ale nie w zainstalowanym systemie. Istnieje oczywiście łatwo naprawić za to: apt-get install gparted. Nie można tego zrobić na rzeczywistym Pi, ponieważ aby zmienić rozmiar partycji, należy je odmontować.

Poniższe zdjęcie jest w języku niderlandzkim, ale niech to nie psuje zabawy. Jest bardzo łatwy w użyciu. Jest to układ domyślnego obrazu debian na karcie SD o pojemności 8 GB.

GParted

Kliknij partycje prawym przyciskiem myszy, aby je odmontować, a następnie kliknij prawym przyciskiem myszy, aby zmienić rozmiar lub przenieść partycję. Możesz także tworzyć nowe partycje i formatować istniejące. Na poniższym obrazku usunąłem partycję wymiany i teraz mogę zmienić rozmiar partycji głównej na całą przestrzeń po jej prawej stronie. Nie wypełniaj go całkowicie, ponieważ nadal musisz dodać partycję wymiany.

Zmień rozmiar

Możesz grać z układem partycji, zmiany są zapisywane tylko wtedy, gdy zastosujesz zmiany (szary przycisk „return” na pierwszym zdjęciu).

Bardzo łatwo jest przenosić partycje, ale tak jak w odpowiedzi Steve'a, zalecam całkowite usunięcie partycji wymiany, a następnie zmianę rozmiaru katalogu głównego, a następnie odtworzenie wymiany. Przeniesienie partycji może zająć bardzo dużo czasu, a wymiana nie zawiera danych, które należy przechowywać.

Joost
źródło
1
Użyłem tej metody; działa jak marzenie.
Alex Chamberlain,
Zgadzam się. Użyłem gparted, aby zrobić dokładnie to i to bardzo łatwe
JayDev
Jeśli łączysz się przez VNC, uruchomsudo -E gparted
forzagreen
Być może trzeba będzie uruchomić następujące polecenie, gpartedjeśli pracujesz pod Waylandem (nie jestem pewien, czy te problemy zostały rozwiązane):xhost +SI:localuser:root
John Manko
11

Jeśli używasz nowszego obrazu Debian Wheezy: http://www.raspberrypi.org/archives/1435 Skrypt czasu rozruchu umożliwia zmianę rozmiaru w celu automatycznego wypełnienia karty SD.

popcornmix
źródło
1
Używam Arch Linux.
Jivings,
2
Jak by to zrobiło?
2
Jest to najprostszy sposób na zmianę rozmiaru partycji dla dowolnego aktualnego obrazu wheezy.
Yuval Adam