Come posso ridimensionare la mia partizione / (root)?


171

Anche se la mia scheda SD è di 16 GB, l'immagine su cui ho eseguito il flashing era di soli 2 GB e ora posso vedere solo 2 GB di spazio di archiviazione sul disco.

Come posso ridimensionare l'immagine in modo da avere più spazio sulla mia partizione di root?


Grazie ... ha funzionato alla grande per me e non ha effettuato il tank del mio sistema ... ho ancora un server web IRC e apache e la mia piena capacità di 8

1
Perché ridimensionare una partizione root quando è possibile creare una nuova partizione nello spazio libero sulla scheda SD rimanente e quindi montarla all'interno della partizione root, /mnt/storagead esempio. Ciò isola efficacemente sistema e dati e semplifica la manutenzione e il backup.
mbaitoff,

2
@mbaitoff - perché l'immagine di sistema predefinita ha solo 68MiB di spazio libero, che non lascia molto spazio per l'aggiunta di software aggiuntivo.
Jules

@Jules - Non stavo chiedendo perché si vorrebbe ridimensionare una partizione. A si chiedeva perché si dovrebbe ridimensionare la partizione di sistema invece di montare memoria aggiuntiva nel punto di montaggio della partizione di sistema isolando così efficacemente sistema e software / dati? Se si desidera l'archiviazione, montare gli SD SD rimanenti su /mnt/storage, se si desidera i programmi - montare su /opt/software/.
mbaitoff,

@mbaitoff installa la maggior parte dei programmi in / usr, non in / opt / software. Le immagini predefinite hanno il contenuto di / usr nella partizione root. Sembra quindi essenziale aumentare la dimensione della partizione root se si desidera installare un software non predefinito.
Jules

Risposte:


158

Supponendo che tu stia usando Debian.

La versione breve:

  1. Eseguire il backup del sistema
  2. Rimuovere le partizioni principali e di scambio (lasciando sola la partizione di avvio)
  3. Ricreare la partizione principale per utilizzare lo spazio su disco rimanente (escluso il partiton di avvio). Assicurati di riutilizzare lo stesso settore iniziale della partizione root originale.
  4. riavviare il sistema
  5. ridimensionare la nuova partizione root di avvio per utilizzare la dimensione della partizione completa.

Istruzioni dettagliate

Prima fai un backup della tua scheda SD usando le istruzioni trovate qui nel caso qualcosa vada storto.

Dalla riga di comando o dalla finestra di un terminale, immettere quanto segue

sudo fdisk /dev/mmcblk0

quindi digitare pper elencare la tabella delle partizioni

dovresti vedere tre partizioni. se guardi nell'ultima colonna con l'etichetta Sistema dovresti avere

  1. W95 FAT32
  2. Linux
  3. Linux Swap

prendi nota del numero iniziale per il partiton 2, ne avrai bisogno in seguito. anche se probabilmente sarà ancora sullo schermo (per ogni evenienza).

tipo successivo dper eliminare una partizione.

Verrà quindi richiesto il numero della partizione che si desidera eliminare. Nel caso sopra si desidera eliminare entrambe le partizioni di swap sia Linux che Linux.

Quindi digita 2

quindi digitare dnuovamente e quindi digitare 3per eliminare la partizione di swap.

Ora puoi ridimensionare la partizione principale.

digitare nper creare una nuova partizione.

Questa nuova partizione deve essere una partizione primaria, quindi digitare p.

Quindi immettere 2quando viene richiesto un numero di partizione.

Verrà ora richiesto il primo settore per la nuova partizione. Immettere il numero iniziale dal passaggio precedente (la partizione Linux)

Successivamente ti verrà richiesto l'ultimo settore che puoi semplicemente premere invio per accettare il valore predefinito che utilizzerà lo spazio su disco rimanente.

Digitare wper salvare le modifiche apportate.

Quindi riavviare il sistema con il seguente comando:

sudo reboot

una volta riavviato il sistema e si torna alla riga di comando, immettere il comando seguente:

sudo resize2fs /dev/mmcblk0p2

Nota: questo può richiedere molto tempo (a seconda delle dimensioni e della velocità della scheda), attendere e lasciar terminare in modo da non rovinare il file system e ricominciare da capo.

Al termine, riavviare il sistema con il seguente comando:

sudo reboot

Ora puoi verificare che il sistema stia utilizzando la piena capacità della scheda SD immettendo il seguente comando:

df -h

Perché questo funziona:

La vera magia qui è che si eliminano le partizioni root e swap, quindi si ricrea solo la partizione root (usando il settore di avvio originale) prima di scrivere i dati sul disco . Di conseguenza non si cancellano i dati esistenti dalla partizione radice.

Rimuovendo la partizione di swap si consente alla room della partizione di root di espandersi oltre la sua dimensione attuale e riempire la porzione inutilizzata del disco (a causa del posizionamento delle partizioni - la partizione di root è inserita tra le partizioni di avvio e di swap - non può semplicemente ridimensionare lasciando da sola la partizione di swap).

Quindi ridimensionare (che è sicuro eseguire su un disco montato) il file system per utilizzare tutto lo spazio nella nuova partizione di root.

ref:


1
@Jivings se fatto correttamente non perdi nulla, ma è il motivo per cui ho fatto il backup del primo passaggio.
Steve Robillard,

2
Dai commenti sembra che dovresti anche documentare perché funziona, non solo come.
Jivings,

1
@Jivings si spera che questo risolva le tue preoccupazioni.
Steve Robillard,

9
Sembra molto sbagliato che devi eliminare una partizione per ridimensionarla.
Alex Chamberlain,

5
@AwesomeUser Non lo fai sul Mac, lo fai sul PI stesso. Inoltre, se stai eseguendo raspbian puoi avviare pi e dalla riga di comando emettere il seguente comando sudo raspi-config, e scegliere l'opzione di ridimensionamento della partizione di root.
Steve Robillard,

103

Usando l'immagine beta di Debian-Wheezy, è integrata un'utilità di configurazione che semplifica:

C'è un'utilità chiamata raspi-config. Questo viene eseguito al primo avvio se sei collegato direttamente all'RPi. Se sei su SSH puoi eseguirlo manualmente usando $ sudo raspi-config. (Penso che puoi rieseguire manualmente lo strumento in qualsiasi momento).

La seconda opzione nella finestra di dialogo blu che segue è intitolata expand_rootfs, con la descrizione "Espandi partizione radice per riempire la scheda SD".

Selezionandolo, la partizione di root verrà ridimensionata per riempire la scheda al prossimo avvio del tuo RPi.

Aggiornamento per il 2015!

Sto tornando a questa risposta con una nota di cautela: ho usato un sacco di schede SD da 16 GB e sono stato sorpreso da maxxing la mia partizione per riempire la scheda che stavo usando. Ciò ha causato un sacco di problemi quando si è passati a una nuova scheda che (anche se era indicata come 16 GB) era circa 200 MB più piccola della scheda più vecchia.

Questo è arrivato al culmine quando ho cambiato un paio di RPis dalla v1 al nuovo modello v2, che utilizza schede Micro SD.

Ora lascio circa 1 GB di spazio libero per essere assolutamente sicuro che le mie immagini possano passare da una scheda SD all'altra senza problemi.


Questo processo ha richiesto circa 10 minuti con una scheda da 16 GB sul mio Pi.
Der Hochstapler,

5
Questo è molto più semplice della risposta migliore. Questa è la soluzione da usare.
James Skimming,

@JamesSkimming: questa è la soluzione da usare per l'immagine beta di Debian-Wheezy. Non per gli altri.
SF.

Questo non funziona per Raspbian se installato da NOOBS sulla SDCard viene spedito con kit RPi. quando si tenta di eseguire l'opzione di espansione, si dice che non è supportato da questa configurazione, ma dal momento che i rumori in esecuzione probabilmente sta usando tutto lo spazio comunque ... il problema è che sto provando a riflettere l'immagine da 8 GB su una scheda da 32 GB
Eoin Campbell,

Raspi-config non sa come ridimensionare la radice di Raspbian Wheezy. expand_rootfs come hai suggerito problemi causati. La risposta sopra la tua funziona come un fascino in un sistema live e non è necessario "lasciare circa 1 GB".
GTodorov,

28

Se non ti senti a tuo agio a lavorare sulla riga di comando, come nella risposta eccellente di Steve Robillards, ci sono alcune applicazioni GUI disponibili. In particolare gparted funziona molto bene.

Penso che sia installato di default su un LiveCD Ubuntu ma non su un sistema installato. C'è naturalmente una soluzione semplice per questo: apt-get install gparted. Non puoi farlo sull'attuale Pi, perché per ridimensionare le partizioni devono essere smontate.

L'immagine qui sotto è in olandese, ma non lasciare che rovini il divertimento. È molto facile da usare. Questo è il layout dell'immagine debian predefinita su una sdcard da 8 GB.

GParted

Fare clic con il tasto destro del mouse sulle partizioni per smontarle e quindi fare clic con il tasto destro del mouse per ridimensionare o spostare la partizione. Puoi anche creare nuove partizioni e formattare quelle esistenti. Nell'immagine seguente ho rimosso la partizione di swap e ora sono in grado di ridimensionare la partizione di root su tutto lo spazio sulla destra. Non riempirlo completamente, perché devi ancora aggiungere una partizione di swap.

Ridimensiona

Puoi giocare con il layout della partizione, le modifiche vengono scritte solo se le applichi (il tasto 'return' in grigio nella prima immagine).

Spostare le partizioni è molto semplice, ma come nella risposta di Steve, ti consiglio di rimuovere completamente la partizione di swap, quindi ridimensionare la radice e quindi ricreare uno swap. Lo spostamento di una partizione può richiedere molto tempo e lo scambio non contiene dati che è necessario conservare.


1
Ho usato questo metodo; funziona come un fascino.
Alex Chamberlain,

Sono d'accordo. Ho usato gparted per fare esattamente questo ed è molto facile
JayDev il

Se ci si collega tramite VNC, eseguiresudo -E gparted
forzagreen il

Potrebbe anche essere necessario eseguire il comando seguente prima gpartedse si esegue in Wayland (non sono sicuro che questi problemi siano stati risolti):xhost +SI:localuser:root
John Manko


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.