Para encurtar a história, preciso executar tudo isso automaticamente na inicialização (sistema incorporado).
Nossos engenheiros enviarão imagens para os dispositivos de produção. Essas imagens conterão uma pequena tabela de partição. Na inicialização, preciso expandir automaticamente a última partição (nº 3) para usar todo o espaço disponível no disco.
Aqui está o que recebo quando olho para o espaço livre no meu disco.
> parted /dev/sda print free
Model: Lexar JumpDrive (scsi)
Disk /dev/sda: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
17.4kB 1049kB 1031kB Free Space
1 1049kB 25.3MB 24.2MB fat16 primary legacy_boot
25.3MB 26.2MB 922kB Free Space
2 26.2MB 475MB 449MB ext4 primary
3 475MB 1549MB 1074MB ext4 primary
1549MB 32.0GB 30.5GB Free Space
Preciso expandir a partição 3 pelo número de bytes de N (30,5 GB)
Como faço para executar esta etapa automaticamente, sem aviso? Isso precisa funcionar com um tamanho dinâmico de espaço disponível após a 3ª partição.
resizepart
comando, e funciona, mas requer um tamanho exato. Eu preciso que seja dinâmico.resize2fs
pode ser o que estou procurando. linux.die.net/man/8/resize2fsRespostas:
Nas versões atuais de
parted
,resizepart
deve funcionar para a partição (parted
entende100%
ou coisas assim-1s
, esta última também precisa--
parar de analisar as opções no cmdline). Para determinar o valor exato que você pode usarunit s
,print free
.resize2fs
vem depois para o sistema de arquivos.As versões antigas do
parted
tinham umresize
comando que redimensionaria a partição e o sistema de arquivos de uma só vez, até funcionouvfat
.Em uma modificação do Kobo ereader, usei isso para redimensionar ao máximo a 3ª partição da memória interna: (assume cegamente que não há 4ª partição e tabela msdos e outras coisas)
Portanto, você também pode obter os valores
/sys/block/.../
se o kernel suportar. Masparted
remova oresize
comando para que você tenha que executar duas etapas agora,resizepart
para aumentar a partição e qualquer ferramenta que seu sistema de arquivos fornecer para aumentar isso, comoresize2fs
paraext*
.fonte
parted
suporta extensão automática a partir da linha de comando? Porque, não apoiá-lo de forma interativa. Se executado interativamente, perguntará se você deseja corrigir a tabela de partição GPT para corresponder ao tamanho do disco (tipofix
) e, em seguida, você pode executarresizepart 3 -1
. Eu tenho tentado descobrir como fazê-lo na linha de comando.Sendo incapaz de escrever corretamente a parte dividida (solicitou confirmação porque a partição foi montada e, ao contrário de outras respostas que achei que não entendiam
-1s
ou100%
), encontrei a ferramenta growpart que faz exatamente isso.O uso é simples:
growpart /dev/sda 3
(e entãoresize2fs /dev/sda3
, ou outro comando apropriado para o tipo de sistema de arquivos usado).No Debian e no Ubuntu, ele é empacotado como cloud-guest-utils .
fonte
A maneira correta de fazer isso é usar o fato de que parted tem a noção de porcentagens. então
fonte
No Ubuntu 18.04, sou capaz de redimensionar para preencher o espaço não alocado em um script com o seguinte:
Pode não ser necessário montar antes de redimensionar. Eu fiz isso para suprimir uma consulta do resize2fs para entrada do usuário.
fonte