Eu sempre usei simplesmente o partido para isso. Ele funciona bem para alterar o tipo de disklabel e adicionar / remover partições, especialmente porque ele pode lidar com HDDs grandes e modernos, diferente do fdisk.
Você pode executar
$ sudo parted /dev/sda
Isso fará com que as coisas iniciem e entrem no terminal dividido. Você pode então executar o comando help para mostrar todos os comandos disponíveis. É muito auto-explicativo.
Eu mencionarei que sim você precisa ter todas as partições do disco que deseja formatar desmontadas. Se você estava simplesmente procurando uma maneira mais rápida de desmontar todas as partições, eu acho que você poderia fazê-lo com um regex no comando umount, mas isso parece bobo.
Usando o parted para gerenciar o disco rígido, nunca precisei forçar uma atualização do disco ou algo semelhante.
Para atualizar completamente uma unidade para novo uso, geralmente faço o seguinte:
1) comece a dividir executando sudo parted /dev/sda
2) encontre qualquer partição existente executando print
3) remova as partições existentes executando rm 1
substituindo 1 pelo número da partição que você deseja remover. Em seguida, repita para todas as partições restantes no disco.
4) redefina o disklabel executando mklabel gpt
Eu uso o tipo de rótulo gpt mas você pode usar o msdos padrão ou qualquer que seja sua preferência. Aqui está uma lista de tipos de disklabel
5) Crie novas partições executando mkpart
Isso irá percorrer o assistente de criação de partições. Os pontos inicial e final são padronizados para setores. Você pode alterar isso executando o comando unit
antes de executar mkpart
. Dessa forma, você pode especificá-lo em GB ou TB ou MB, etc.
6) verifique seus resultados usando print
para ver as novas informações da tabela de partições
7) Você então precisa formatar as partições. Isso não deve ser feito através do parted, embora algumas opções para isso estejam disponíveis. Em vez disso, sugiro executar quit
para sair do terminal dividido e, em seguida, usar mkfs
para formatar as partições. Lembre-se de rodar 'mkfs' em / dev / sda1 ao invés de / dev / sda porque você está formatando a partição e não o disco como um todo.
É sobre isso.
Espero que isso responda à sua pergunta.
Além disso, aqui está o manual on-line para referência: link
EDITAR:
O OP queria fazer esse tipo de coisa a partir de um script e não de um terminal. Você pode fazer o mesmo tipo de procedimento através de um script executando parted via comandos de linha única em vez de no terminal parted.
Por exemplo, o comando
$ sudo parted /dev/sda print
Imprimirá as informações sobre a unidade e a tabela de partições no console bash, que pode então ser manipulado usando o grep etc para criar variáveis ou o que você quiser em um script bash.