Como redimensionar minha partição / (root)?

170

Embora meu cartão SD tenha 16 GB, a imagem na qual eu exibi era de apenas 2 GB e agora só consigo ver 2 GB de espaço de armazenamento no disco.

Como posso redimensionar a imagem para ter mais espaço na minha partição raiz?

Jivings
fonte
Thanks..worked ótimo para mim e não fizeram tanque minha system..still têm IRC e servidor web Apache e minha plena capacidade de 8GB
1
Por que redimensionar uma partição raiz quando você pode criar uma nova partição no espaço livre restante do cartão SD e montá-la na partição raiz, /mnt/storagepor exemplo. Isso efetivamente isola o sistema e os dados e facilita a manutenção e o backup.
precisa saber é o seguinte
2
@mbaitoff - porque a imagem padrão do sistema possui apenas 68MiB de espaço livre, o que não deixa muito espaço para adicionar software adicional.
Jules
@ Jules - Eu não estava perguntando por que alguém iria querer redimensionar uma partição. A estava perguntando por que alguém redimensionaria a partição do sistema em vez de montar armazenamento adicional no ponto de montagem da partição do sistema, isolando efetivamente o sistema e o software / dados? Se você deseja armazenamento, monte os spcae SD restantes em /mnt/storage, se desejar programas - monte em /opt/software/.
mbaitoff
@mbaitoff a maioria dos programas é instalada em / usr, não em / opt / software. As imagens pré-construídas têm o conteúdo de / usr na partição raiz. Portanto, parece essencial aumentar o tamanho da partição raiz se você deseja instalar qualquer software não padrão.
Jules

Respostas:

157

Supondo que você esteja usando o Debian.

A versão curta:

  1. Faça backup do seu sistema
  2. Remova as partições main e swap (deixando a partição de inicialização em paz)
  3. Recrie a partição principal para utilizar o espaço em disco restante (excluindo a partição de inicialização). Certifique-se de reutilizar o mesmo setor inicial da partição raiz original.
  4. reinicie o sistema
  5. redimensione a nova partição raiz de inicialização para utilizar o tamanho completo da partição.

Instruções passo a passo

Primeiro faça um backup do seu cartão SD usando as instruções encontradas aqui , caso algo dê errado.

Na linha de comando ou em uma janela do terminal, digite o seguinte

sudo fdisk /dev/mmcblk0

digite ppara listar a tabela de partição

você deve ver três partições. se você procurar na última coluna denominada Sistema, deverá ter

  1. W95 FAT32
  2. Linux
  3. Troca de Linux

anote o número inicial da partição 2, você precisará disso mais tarde. embora provavelmente ainda esteja na tela (apenas no caso).

próximo tipo dpara excluir uma partição.

Você será solicitado a fornecer o número da partição que deseja excluir. No caso acima, você deseja excluir as partições de troca Linux e Linux.

Então digite 2

digite dnovamente e digite 3para excluir a partição de troca.

Agora você pode redimensionar a partição principal.

Digite npara criar uma nova partição.

Essa nova partição precisa ser uma partição primária, então digite p.

Em seguida, digite 2quando for solicitado um número de partição.

Você agora será solicitado a fornecer o primeiro setor para a nova partição. Digite o número inicial da etapa anterior (a partição Linux)

Em seguida, você será solicitado a informar o último setor, basta pressionar enter para aceitar o padrão que utilizará o espaço em disco restante.

Digite wpara salvar as alterações que você fez.

Em seguida, reinicie o sistema com o seguinte comando:

sudo reboot

Depois que o sistema reiniciar e você voltar à linha de comando, digite o seguinte comando:

sudo resize2fs /dev/mmcblk0p2

Nota: isso pode levar um longo tempo (dependendo do tamanho e da velocidade do cartão) seja paciente e deixe-o terminar para não atrapalhar o sistema de arquivos e começar do zero.

Quando terminar, reinicie o sistema com o seguinte comando:

sudo reboot

Agora você pode verificar se o sistema está usando a capacidade total do cartão SD digitando o seguinte comando:

df -h

Por que isso funciona:

A verdadeira mágica aqui é que você exclui as partições raiz e troca e recrie apenas a partição raiz (usando o setor de inicialização original) antes de gravar os dados no disco . Como resultado, você não apaga os dados existentes da partição raiz.

Ao remover a partição swap, você permite que a sala de partições raiz cresça além do tamanho atual e preencha a parte não utilizada do disco (devido ao posicionamento das partições - a partição raiz fica entre as partições de inicialização e troca - ela não pode simplesmente seja redimensionado deixando a partição de swap sozinha).

Em seguida, você redimensiona (o que é seguro para executar em um disco montado) o sistema de arquivos para usar todo o espaço na nova partição raiz.

ref:

Steve Robillard
fonte
1
@Jivings, se feito corretamente, você não perde nada, mas é a razão pela qual fiz o backup do primeiro passo.
Steve Robillard
2
A partir dos comentários, parece que você também deve documentar por que isso funciona, não apenas como.
Jivings
1
@Jivings espero que isso atenda às suas preocupações.
Steve Robillard
9
Parece muito errado que você tenha que excluir uma partição para redimensioná-la.
Alex Chamberlain
5
@AwesomeUser Você não faz isso no mac, mas no próprio pi. Além disso, se você estiver executando o raspbian, poderá inicializar o pi e, na linha de comando, emitir o seguinte comando sudo raspi-config e escolher a opção de redimensionar a partição raiz.
Steve Robillard
102

Usando a imagem Debian-Wheezy Beta, existe um utilitário de configuração que facilita isso:

Existe um utilitário chamado raspi-config. Isso é executado na primeira inicialização, se você estiver conectado diretamente ao RPi. Se você tiver mais de SSH, poderá executá-lo manualmente usando $ sudo raspi-config. (Acho que você pode executar novamente a ferramenta manualmente a qualquer momento).

A segunda opção na caixa de diálogo azul a seguir é intitulada expand_rootfs, com a descrição "Expandir partição raiz para preencher o cartão SD".

Selecionar isso fará com que sua partição raiz seja redimensionada para preencher o cartão na próxima vez que você inicializar seu RPi.

Atualização para 2015!

Volto a esta resposta com uma nota de cautela: tenho usado vários cartões SD de 16GB e fui pego ao maxxar minha partição para preencher o cartão que estava usando. Fazer isso causou muitos problemas ao mudar para um novo cartão que (apesar de declarado como 16 GB) era cerca de 200 MB menor que o cartão mais antigo.

Isso veio à tona quando troquei alguns RPis da v1 para o novo modelo v2, que usa cartões Micro SD.

Agora, deixo cerca de 1 GB grátis para ter certeza absoluta de que minhas imagens podem ser trocadas entre cartões SD sem problemas.

Jon Egerton
fonte
Esse processo levou cerca de 10 minutos com um cartão de 16 GB no meu Pi.
Der Hochstapler
5
Isso é muito mais simples que a resposta principal. Esta é a solução a ser usada.
James Skimming
@ JamesSkimming: Esta é a solução a ser usada na imagem Beta do Debian-Wheezy. Não para os outros.
SF.
Isso não funciona para o Raspbian quando instalado a partir do NOOBS nos SDCard que estão sendo enviados com os kits RPi. quando você tenta executar a opção de expansão, ele diz que não é suportado por essa configuração, mas como os noobs em execução provavelmente estão usando todo o espaço de qualquer maneira ... o problema é que estou tentando fazer reflash da imagem de 8 GB em um cartão de 32 GB
Eoin Campbell
O Raspi-config não sabe como redimensionar a raiz do Raspbian Wheezy. expanda_rootfs, como você sugeriu, causou problemas. A resposta acima da sua funciona como um encanto em um sistema ativo e não é necessário "deixar cerca de 1 GB".
7896 Godorodov
28

Se você não se sente muito à vontade trabalhando na linha de comando, como na excelente resposta de Steve Robillards, existem alguns aplicativos GUI disponíveis. Em particular, o gparted funciona muito bem.

Eu acho que é instalado por padrão em um Ubuntu LiveCD, mas não em um sistema instalado. Há, naturalmente, um reparo fácil para isso: apt-get install gparted. Você não pode fazer isso no Pi real, porque para redimensionar as partições, elas precisam ser desmontadas.

A imagem abaixo está em holandês, mas não deixe que isso estrague a diversão. É muito fácil de usar. Este é o layout da imagem debian padrão em um cartão SD de 8GB.

GParted

Clique com o botão direito do mouse nas partições para desmontá-las e clique com o botão direito do mouse para redimensionar ou mover a partição. Você também pode criar novas partições e formatar as existentes. Na figura abaixo, removi a partição swap e agora consigo redimensionar a partição raiz para todo o espaço à direita dela. Não preencha completamente, porque você ainda precisa adicionar uma partição de troca.

Redimensionar

Você pode brincar com o layout da partição; as alterações são gravadas apenas se você aplicar as alterações (a tecla 'retornar' acinzentada na primeira foto).

É muito fácil mover partições, mas, como na resposta de Steve, recomendo que você remova completamente a partição de troca, redimensione a raiz e recrie uma troca. Mover uma partição pode levar muito tempo e a troca não contém dados que você precisa manter.

Joost
fonte
1
Eu usei esse método; Funciona como um encanto.
Alex Chamberlain
Concordo. Eu usei gparted para fazer exatamente isso e é muito fácil
jaydev
Se você está se conectando através de VNC, executesudo -E gparted
forzagreen
Também pode ser necessário executar o seguinte comando antes, gpartedse você estiver executando no Wayland (não tenho certeza se esses problemas foram resolvidos):xhost +SI:localuser:root
John Manko
11

Se você usar a imagem mais recente do Debian Wheezy: http://www.raspberrypi.org/archives/1435 Um script de inicialização permite que você redimensione para preencher automaticamente o sdcard.

popcornmix
fonte
1
Estou usando o Arch Linux.
Jivings
2
Como faria uma coisa dessas?
2
Essa é a maneira mais fácil de redimensionar as partições para qualquer imagem sibilante atualizada.
usar o seguinte