Wie kann ich die Größe meiner / (Root-) Partition ändern?


171

Obwohl meine SD-Karte 16 GB hat, war das Image, auf das ich geflasht habe, nur 2 GB, und jetzt kann ich nur 2 GB Speicherplatz auf der Festplatte sehen.

Wie kann ich die Größe des Images ändern, damit auf meiner Root-Partition mehr Speicherplatz vorhanden ist?


Thanks..worked großartig für mich und tat nicht Tank meine system..still haben IRC und Apache Webserver und meine volle Kapazität von 8 GB

1
Warum eine Root - Partition der Größe , wenn Sie neue Partition auf dem verbleibenden freie SD-Karte Platz schaffen und dann montieren sie in der Root - Partition an /mnt/storagezum Beispiel. Dies isoliert effektiv System und Daten und erleichtert die Wartung und Sicherung.
Mbaitoff

2
@mbaitoff - da das Standard-System-Image nur 68 MB freien Speicherplatz hat, bleibt nicht viel Platz für das Hinzufügen zusätzlicher Software.
Jules

@Jules - Ich habe nicht gefragt, warum man die Größe einer Partition ändern möchte. Es wurde gefragt, warum die Größe der Systempartition geändert werden soll, anstatt zusätzlichen Speicher am Einhängepunkt der Systempartition bereitzustellen, um System und Software / Daten effektiv zu isolieren. Wenn Sie Speicherplatz benötigen /mnt/storage, hängen Sie die verbleibenden SD-Speicherkapazitäten an und Programme an /opt/software/.
Mbaitoff

@mbaitoff Die meisten Programme werden in / usr installiert, nicht in / opt / software. Die vorgefertigten Images haben den Inhalt von / usr in der Root-Partition. Es scheint daher unerlässlich, die Größe der Root-Partition zu erhöhen, wenn Sie nicht standardmäßige Software installieren möchten.
Jules

Antworten:


158

Angenommen, Sie verwenden Debian.

Die Kurzfassung:

  1. Sichern Sie Ihr System
  2. Entfernen Sie die Haupt- und Swap-Partitionen (lassen Sie die Boot-Partition in Ruhe)
  3. Erstellen Sie die Hauptpartition neu, um den verbleibenden Speicherplatz zu nutzen (mit Ausnahme der Startpartition). Stellen Sie sicher, dass Sie denselben Startsektor wie die ursprüngliche Root-Partition wiederverwenden.
  4. Starten Sie das System neu
  5. Ändern Sie die Größe der neuen Start-Root-Partition, um die volle Partitionsgröße zu nutzen.

Schritt für Schritt Anweisungen

Erstellen Sie zuerst eine Sicherungskopie Ihrer SD-Karte. Befolgen Sie dazu die Anweisungen hier, falls etwas schief geht.

Geben Sie in der Befehlszeile oder in einem Terminalfenster Folgendes ein

sudo fdisk /dev/mmcblk0

Geben Sie pdann ein, um die Partitionstabelle aufzulisten

Sie sollten drei Partitionen sehen. Wenn Sie in die letzte Spalte mit der Bezeichnung System schauen , sollten Sie haben

  1. W95 FAT32
  2. Linux
  3. Linux Swap

Notieren Sie sich die Startnummer für Partition 2, diese benötigen Sie später. obwohl es wahrscheinlich immer noch auf dem Bildschirm sein wird (nur für den Fall).

nächster Typ d, um eine Partition zu löschen.

Sie werden dann aufgefordert, die Nummer der Partition anzugeben, die Sie löschen möchten. Im obigen Fall möchten Sie sowohl die Linux- als auch die Linux-Swap-Partition löschen.

Also tippe 2

Geben Sie dann derneut und anschließend ein 3, um die Swap-Partition zu löschen.

Jetzt können Sie die Größe der Hauptpartition ändern.

Geben Sie ein n, um eine neue Partition zu erstellen.

Diese neue Partition muss eine primäre Partition sein p.

Geben Sie 2als Nächstes ein, wenn Sie zur Eingabe einer Partitionsnummer aufgefordert werden.

Sie werden nun aufgefordert, den ersten Sektor für die neue Partition einzugeben. Geben Sie die Startnummer aus dem vorherigen Schritt ein (die Linux-Partition)

Als nächstes werden Sie aufgefordert, den letzten Sektor anzugeben, für den Sie die Eingabetaste drücken, um die Standardeinstellung zu akzeptieren, die den verbleibenden Speicherplatz belegt.

Geben Sie ein w, um die vorgenommenen Änderungen zu speichern.

Starten Sie das System anschließend mit dem folgenden Befehl neu:

sudo reboot

Sobald das System neu gestartet wurde und Sie wieder in der Befehlszeile sind, geben Sie den folgenden Befehl ein:

sudo resize2fs /dev/mmcblk0p2

Hinweis: Dies kann (abhängig von der Kartengröße und -geschwindigkeit) einige Zeit in Anspruch nehmen. Lassen Sie es zu Ende gehen, damit Sie das Dateisystem nicht durcheinander bringen und von vorne beginnen müssen.

Starten Sie das System anschließend mit dem folgenden Befehl neu:

sudo reboot

Sie können jetzt überprüfen, ob das System die volle Kapazität der SD-Karte nutzt, indem Sie den folgenden Befehl eingeben:

df -h

Warum das funktioniert:

Die wirkliche Magie dabei ist, dass Sie die Root- und Swap-Partitionen löschen und dann nur die Root-Partition (unter Verwendung des ursprünglichen Startsektors) neu erstellen, bevor Sie die Daten auf die Festplatte schreiben . Infolgedessen löschen Sie die vorhandenen Daten nicht von der Root-Partition.

Wenn Sie die Swap-Partition entfernen, kann der Raum der Root-Partition über seine aktuelle Größe hinauswachsen und den nicht verwendeten Teil der Festplatte ausfüllen (aufgrund der Platzierung der Partitionen - die Root-Partition befindet sich zwischen den Boot- und Swap-Partitionen - dies ist nicht möglich einfach die Größe ändern und die Swap-Partition alleine lassen).

Anschließend ändern Sie die Größe des Dateisystems (das sicher auf einer bereitgestellten Festplatte ausgeführt werden kann), um den gesamten Speicherplatz in der neuen Root-Partition zu nutzen.

ref:


1
@Jivings Wenn du es richtig machst, verlierst du nichts, aber es ist der Grund, warum ich ein erstes Backup gemacht habe.
Steve Robillard

2
Aus den Kommentaren geht hervor, dass Sie auch dokumentieren sollten, warum dies funktioniert und nicht nur wie.
Jivings

1
@Jivings hoffentlich geht dies auf Ihre Bedenken ein.
Steve Robillard

9
Es scheint sehr falsch, dass Sie eine Partition löschen müssen, um ihre Größe zu ändern.
Alex Chamberlain

5
@AwesomeUser Du machst es nicht auf dem Mac, du machst es auf dem Pi selbst. Wenn Sie Raspbian ausführen, können Sie das pi starten und über die Befehlszeile den folgenden Befehl sudo raspi-config eingeben und die Option zum Ändern der Größe der Root-Partition auswählen.
Steve Robillard

102

Unter Verwendung des Debian-Wheezy-Beta-Images ist ein Konfigurationsdienstprogramm eingebaut, das dies einfach macht:

Es gibt ein Dienstprogramm namens raspi-config. Dies wird beim ersten Start ausgeführt, wenn Sie direkt mit dem RPi verbunden sind. Wenn Sie über SSH sind, können Sie es manuell mit ausführen $ sudo raspi-config. (Ich denke, Sie können das Tool jederzeit manuell erneut ausführen).

Die zweite Option im folgenden blauen Dialogfeld trägt den Titel expand_rootfs"Root-Partition erweitern, um SD-Karte zu füllen".

Wenn Sie dies auswählen, wird die Größe Ihrer Root-Partition geändert, um die Karte beim nächsten Start Ihres RPi zu füllen.

Update für 2015!

Ich komme mit Vorsicht auf diese Antwort zurück: Ich habe ein paar 16-GB-SD-Karten verwendet, und es hat mich überfordert, meine Partition zu maximieren, um die von mir verwendete Karte zu füllen. Dies verursachte eine Reihe von Problemen beim Umstieg auf eine neue Karte, die (obwohl als 16 GB angegeben) etwa 200 MB kleiner war als die ältere Karte.

Dies kam zu einem Problem, als ich einige RPis von v1 auf das neue v2-Modell umstellte, das Micro-SD-Karten verwendet.

Ich lasse jetzt ungefähr 1 GB frei, um absolut sicherzugehen, dass meine Bilder ohne Probleme zwischen SD-Karten gewechselt werden können.


Dieser Vorgang dauerte mit einer 16-GB-Karte auf meinem Pi ungefähr 10 Minuten.
Der Hochstapler

5
Das ist so viel einfacher als die oberste Antwort. Dies ist die zu verwendende Lösung.
James Skimming

@JamesSkimming: Dies ist die Lösung für das Debian-Wheezy-Beta-Image. Nicht für andere.
SF.

Dies funktioniert bei Raspbian nicht, wenn NOOBS auf den SD-Karten installiert ist, die mit RPi-Kits geliefert werden. Wenn Sie versuchen, die Erweiterungsoption auszuführen, heißt es, dass sie von dieser Konfiguration nicht unterstützt wird, aber da Ihre Noobs wahrscheinlich sowieso den gesamten Speicherplatz belegen ... Problem ist, dass ich versuche, das 8-GB-Image auf eine 32-GB-Karte zu flashen
Eoin Campbell

Raspi-config kann die Größe des Raspbian Wheezy-Stamms nicht ändern. expand_rootfs, wie Sie vorgeschlagen haben, verursachte Probleme. Die Antwort über Ihrer funktioniert wie ein Zauber in einem Live-System und es ist nicht erforderlich, "ungefähr 1 GB zu lassen".
GTodorov

28

Wenn Sie nicht sehr gerne auf der Kommandozeile arbeiten, wie in Steve Robillards exzellenter Antwort, gibt es einige GUI-Anwendungen. Insbesondere funktioniert gparted sehr gut.

Ich denke, es ist standardmäßig auf einer Ubuntu LiveCD installiert, aber nicht auf einem installierten System. Es ist natürlich eine einfache Lösung dafür: apt-get install gparted. Dies ist auf dem eigentlichen Pi nicht möglich, da die Partitionen zum Ändern der Größe nicht eingehängt werden müssen.

Das Bild unten ist auf Niederländisch, aber lassen Sie sich nicht den Spaß verderben. Es ist sehr einfach zu bedienen. Dies ist das Layout des Standard-Debian-Images auf einer 8-GB-SD-Karte.

GParted

Klicken Sie mit der rechten Maustaste auf die Partitionen, um die Bereitstellung aufzuheben, und klicken Sie dann mit der rechten Maustaste, um die Größe der Partition zu ändern oder sie zu verschieben. Sie können auch neue Partitionen erstellen und vorhandene formatieren. In der Abbildung unten habe ich die Swap-Partition entfernt und kann jetzt die Größe der Root-Partition auf den gesamten Bereich rechts davon anpassen. Füllen Sie es nicht vollständig aus, da Sie noch eine Swap-Partition hinzufügen müssen.

Größe ändern

Sie können mit dem Partitionslayout spielen, Änderungen werden nur geschrieben, wenn Sie die Änderungen anwenden (die abgeblendete Eingabetaste im ersten Bild).

Es ist sehr einfach, Partitionen zu verschieben, aber wie in Steves Antwort würde ich empfehlen, die Swap-Partition vollständig zu entfernen, dann die Größe des Stammverzeichnisses zu ändern und dann einen Swap neu zu erstellen. Das Verschieben einer Partition kann sehr lange dauern und der Swap enthält keine Daten, die Sie behalten müssen.


1
Ich habe diese Methode benutzt; klappt wunderbar.
Alex Chamberlain

Genau. Ich habe gparted verwendet, um genau dies zu tun und es ist sehr einfach
JayDev

Wenn Sie über VNC eine Verbindung herstellen, führen Siesudo -E gparted
forzagreen

Möglicherweise müssen Sie auch den folgenden Befehl ausführen, bevor gpartedSie mit Wayland arbeiten (nicht sicher, ob diese Probleme behoben wurden):xhost +SI:localuser:root
John Manko,


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.