Eu queria preparar uma distro para alguns amigos.
Como eu não tinha mais nada por aí, usei um cartão SD de 16Gb.
Comecei com a imagem padrão do Debian Weezy 2Gb e não fiz nenhum redimensionamento.
Agora, ao concluir, queria criar uma imagem do que fiz, mas recebo um arquivo de 16 GB, contendo 14 GB de espaço não particionado (não particionado e livre) no final.
[Eu usei o Windows // Win32DiskImager porque não tenho nada livre para colar no rPI agora]
Posso apenas truncar o arquivo de imagem logo atrás do espaço particionado e transferir a parte principal para um cartão menor?
dd if=/dev/path/to/SD/card of=~/SpecialImage.img
, instale o GParted e executegparted ~/SpecialImage.img
. Depois que o GParted abrir seu.img
arquivo, basta redimensionar as partições ao seu gosto! (Ambos os comandos devem ser executados como root,sudo su
você deve obter o que você precisa. Quando você$
alterna para a#
, você é Root. Cuidado, esse é o equivalente a Deus em Linux.) GParted é basicamente uma interface gráfica para o gerenciamento de partições arcano ferramentas necessárias. O uso do GParted torna tudo muito mais simples e fácil de obter.Respostas:
Finalmente encontrei um recurso que está explicando minha pergunta.
Curto:
Sim, é possível truncar!
Resumo do processo:
Extraindo as informações da partição da imagem usando
fdisk
:Vemos que a partição tem um tamanho de cerca de 2,8Gb (5872026 * 512), o resto não é particionado .
Portanto, tudo após o final da partição pode ser removido.
Isso será feito com a ferramenta
truncate
. Não se esqueça de adicionar 1 ao número de setores, pois os números de bloco começam em 0.Editar:
Para quem está com preguiça de mudar para o Linux:
Também funciona no Windows com Cygwin 's
fdisk.exe
etruncate.exe
!O que é Cygwin?
Posso citar: "Cygwin: obtenha essa sensação do Linux - no Windows" ( https://www.cygwin.com/ ).
É um conjunto de executáveis que podem ser executados no Windows, mas fornecem todos os programas de linha de comando que você normalmente conhece no Linux. O Cygwin pode demorar muito para instalar, se você selecionar todos os pacotes durante a instalação, mas, para seguir este exemplo, basta garantir que, além da configuração padrão, também estejam selecionados os pacotes
util-linux
(fdisk) ecoreutils
(truncate).Dependendo do seu ambiente, você precisa adicionar
/usr/bin
e adicionar/usr/sbin
ao seu$PATH
.fonte
fdisk.exe
etruncate.exe
?Sei que essa é uma pergunta antiga, mas gostaria de mostrar como fazer esse processo no Mac, porque não é tão fácil:
fdisk
não possui a-l
opção etruncate
não está instalado por padrão:1. Etapa 1: Instale o truncado no Mac OS X:
Você precisa do MacPorts ou Homebrew para isso. Eu uso MacPorts. Se você não tiver um desses, vá em frente e instale-os primeiro. Link para MacPorts
Agora, podemos instalar o truncado . Abra seu terminal e digite:
Para instalação do Brew:
Isso deve servir.
2. Use Utilitários de Disco para montar nosso IMG para que fique visível ao comando terminal do diskutil .
Você verá daqui a pouco por que precisamos dessa etapa. Abra o aplicativo Utilitário de Disco. Clique em Arquivo (na barra superior) -> Abrir imagem de disco e selecione seu arquivo IMG.
3. Verifique o tamanho da partição do IMG e onde ele está montado.
Em um terminal, digite:
E deve mostrar algo assim, em algum lugar no final:
Portanto, vemos que cerca de 12 GB não são particionados. Precisamos truncá-los.
A razão pela qual precisamos desse comando é verificar onde a imagem do disco está montada. No meu caso, está em: / dev / disk3
4. Descubra o tamanho real da partição.
3,9 GB e 62,9 MB são valores que não funcionarão com truncado. Precisamos encontrar os tamanhos das partições em bytes.
5. Execute o fdisk .
No seu terminal, execute este comando:
Onde X é o número que você descobriu na etapa anterior. Isso deve resultar em algo como isto:
6. Hora de truncar !
No seu terminal,
cd
no diretório em que está sua imagem. Então escreva:FILE é o seu arquivo, é claro.
TAMANHO é o tamanho em bytes. O que fiz foi adicionar à coluna de tamanho do
fdisk
comando a coluna inicial e multiplicar por 512. Portanto, no meu caso, SIZE será: 512 * (7553024 + 131072) = 3934257152 , que é aproximadamente 3,9 GB.Você precisará do início e do tamanho da última partição mostrada por
fdisk
. (Não necessariamente o maior, mas o final do arquivo IMG)7. (Opcional) Teste facilmente se o IMG não está corrompido.
Vá novamente no Utilitário de Disco e tente abrir o novo arquivo IMG como antes. Se for montado, você também poderá ver o novo tamanho (menor) . Se não montar, algo deu errado. (Talvez tente aumentar o tamanho no
truncate
comando)Espero que alguém ache isso útil!
fonte
512*(Size+1)
não funciona. Como você pode ver, eu useiEnd
e nãoSize
, pois você deve manter as duas partições se houver mais de uma. Então, usar7553024 + 131072
(+1
) é 100% correto!O Win32DiskImager recente realmente tem uma opção para incluir apenas partições alocadas na imagem do disco. Isso fará o corte com um clique.
fonte
Apenas algo que notei recentemente ao realizar muitas dessas operações do Win32diskimg para fazer backup de minhas imagens RPI para implantação. Recentemente, comecei a testar o SD "aparar" fstrim para limpar partes do cartão SD que não estão sendo usadas para o nivelamento teórico do desgaste. Não tenho certeza sobre o efeito que terá, mas um efeito colateral foi quando criei uma imagem da partição SD de 16GB e usei o 7zip para compactá-la. Eu fui dos 16GB habituais para 9,5GB para agora um arquivo de 2,5GB. Estou testando agora para garantir que nada esteja errado, mas parece que o uso do TRIM para marcar o espaço não utilizado como zero torna a compactação da imagem muito mais eficiente (o que faz sentido). Só queria relatar que isso era super fácil de realizar e não havia várias etapas.
fonte