Eu tenho tentado criar uma nova imagem Raspbian com um kernel diferente (com suporte para CAN) e com o Python 3.3 instalado. Em vez de fazer tudo isso no Raspberry Pi, achei interessante fazê-lo no computador (seguindo estas instruções ). No entanto, depois que a imagem foi montada e pronta para uso, fiquei rapidamente sem espaço em disco. Eu presumo que isso ocorre porque a imagem é dimensionada para ser grande o suficiente apenas com a expectativa de que o usuário redimensione o sistema de arquivos depois de gravado em um cartão SD.
É possível redimensionar a imagem e o sistema de arquivos antes de gravá-lo no cartão SD para que eu possa fazer mais personalização sem ficar sem espaço?
Respostas:
Isto é como redimensionar um arquivo de imagem bruto. Eu sei que parece estupidamente simplista, mas vai funcionar.
Crie uma imagem em branco, do tamanho que você deseja expandir o original (no meu exemplo eu uso 5 GB);
Acrescente isto à imagem original:
Redimensione o sistema de arquivos que fica no final do disco (geralmente esse é o que você deseja maior):
Feito! Seu disco agora deve ser 5 GB maior!
fonte
fdisk -l file.img
(era 122880) e depoislosetup --offset $((122880 * 512)) /dev/loop0 file.img
. Eu poderia, então, usarresize2fs
em/dev/loop0
e arrumar comlosetup -d /dev/loop0
. Se você atualizar sua resposta para incluir isso, eu a marcarei como a resposta aceita. Obrigado por me apontar na direção certa.resize2fs
on/dev/loop0
mas foi fico um kernel panic na inicialização dizendo que o tamanho superbloco e tamanho da partição não correspondem:The filesystem size (according to the superblock) is 483840 blocks The physical size of the device is 458240 blocks
Já se deparou com algo assim?Esta é uma síntese das respostas acima e de outros lugares que funcionaram para mim - faça backup da sua imagem caso você cometa um erro:
Primeiro, aumente o arquivo de imagem (aqui estamos adicionando 1 GB ao final):
Em seguida, mapeie toda a imagem como um dispositivo de loop, para que possamos cutucar a tabela de partição
Para referência futura, vamos despejá-lo:
A saída se parece com:
Agora, refazemos a última partição excluindo-a e recriando-a no mesmo local de início, mesmo tipo, mas com local final diferente. Portanto, anote a coluna "Iniciar" da loop0p2 (partição 2 - a partição Linux) - nós a usaremos mais tarde - seu 122880 aqui.
Digite o seguinte - eles são seguros para entrar - nada permanente acontece até que você leia minha explicação a seguir:
p
d
2
n
p
2
122880
p
Etapa 1 - imprima a tabela atual. Etapas 2-3 - exclua a partição 2, Etapas 4-8 - recrie a partição 2 com o novo ponto final (o padrão é o fim da imagem), Etapa 9 - imprima a nova tabela.
Supondo que sua tabela recém-impressa seja idêntica à tabela original, exceto pelos valores Final e Blocos (ou seja, o tamanho foi alterado) que você está pronto para confirmar.
Digite
w
para confirmar sua alteração e digiteq
para sair.Você pode excluir esse dispositivo de loopback, criaremos outro para a segunda partição. Lembre-se do deslocamento inicial que você anotou e usou acima - nós o usaremos novamente:
Isso criará um novo mapeamento ao
/dev/loop0
apontar apenas para a partição 2 - pois a referência 512 é o tamanho do setor que você pode ver na primeirafdisk
saída.Agora redimensione a partição para preencher o espaço disponível:
Concluído - agora limpe:
fonte
Para quem tem o Oracle VM VirtualBox em execução, é bastante fácil.
Em uma máquina Windows, as coisas são as seguintes:
input.img
Aqui está a imagem cujo tamanho deve ser reduzido eoutput.img
a imagem final - neste exemplo definido como 7000 MB de tamanho.Espero que isso ajude um pouco.
fonte
Kernel panic - not syncing: VFS: Unable to mount rootfs on unknown-block(179,2)
Isto é como redimensionar um arquivo de imagem bruto. Eu sei que parece estupidamente simplista, mas vai funcionar.
Crie uma imagem em branco, do tamanho que você deseja expandir o original (no meu exemplo eu uso 5 GB);
Acrescente isto à imagem original:
Em seguida, é redimensionar a partição e o sistema de arquivos. Primeiro, obtenha o deslocamento da partição;
Resultados em uma tabela como esta:
Observe o deslocamento inicial da segunda partição
Por fim, desmonte / dev / loop
Feito! Seu disco agora deve ser 5 GB maior!
fonte