Como redimensiono uma partição do windows sem usar o gparted?

6

Suponha que eu tenha uma instalação nativa do windows 7 (ou seja, vindo de fabricantes) em um laptop (com um dispositivo SSD, tabela de partição BIOS / MBR, se isso for importante). A partição no dispositivo é completamente alocada e dedicada ao Windows.

Agora eu quero instalar um sistema Linux ao lado do Windows, e para fazer isso eu preciso primeiro encolher a partição do Windows. Embora eu possa encontrar maneiras de fazer isso a partir do windows ou usando o gparted, como posso fazer isso usando apenas programas de linha de comando, como parted ou fdisk?

    
por glS 17.01.2015 / 16:47

3 respostas

7

O GParted geralmente vale a pena ser usado porque ajuda a evitar vários erros desagradáveis. Eu acho que a principal vantagem das ferramentas de linha de comando aqui é ter mais visibilidade dos detalhes. Isso pode ser útil em situações inesperadamente frágeis (pelo menos uma vez quebradas, os detalhes podem ajudá-lo a perceber o porquê). No entanto, eu não recomendaria usá-los para os outros, a menos que eles queiram aprender com os erros até "meu disco está cheio de zeros e eu preciso começar do zero".

Além disso, um processo de instalação do Linux no desktop deve fornecer uma ferramenta amigável para redimensionar a partição do Windows. (Ou documentação oficial). É o caso comum. Esta seria minha primeira recomendação em geral.

Todas essas opções recomendam fazer backups em caso de qualquer erro .

Confusamente, você não deve usar a ferramenta de linha de comando parted . Costumava ser uma opção conveniente, mas os desenvolvedores não suportam mais o redimensionamento de sistemas de arquivos com ela.

Caso contrário, use ntfsresize , exclua e recrie a partição ( fdisk ) com os mesmos detalhes, exceto para o tamanho. CUIDADO UNIDADES - ALGUMAS FERRAMENTAS UTILIZAM MB; OUTROS PODEM DIZER, MAS A MÉDIA fdisk usa MiB e ntfsresize usa MB. A maneira preguiçosa é ntfsresize para muito menor do que você precisa (por exemplo, 2x), em seguida, após recriar a partição, você executa ntfsresize uma segunda vez sem tamanho explícito.

Para o difícil, para converter unidades, você pode executar expressões numéricas no bash. Por exemplo. para ver 10GiB em bytes: echo $((10 * 1024 * 1024 * 1024)) . Você pode usar essas expressões como argumentos para ferramentas de linha de comando como ntfsresize .

O nome da partição para ntfsresize será parecido com /dev/sda1 . lsblk -f listará todas as partições (incluindo seu disco de inicialização) com seu tamanho e informará sobre o sistema de arquivos. fdisk vai querer o nome do disco, como /dev/sda .

Para o MBR, os detalhes da partição a ser recriada são: tipo de partição e sinalizador "ativo" / inicializável, além de iniciar o deslocamento. [1] fdisk deve mostrar o deslocamento da partição em setores por padrão. (Se não, pode haver frações que não são mostradas - possivelmente indicadas por um + no final, mas pode haver uma armadilha lá - você deve ter certeza de usar sempre fdisk no modo de setores).

Para evitar erros de digitação em fdisk , às vezes seleciono números + cole-os com o botão do meio do mouse. Isso requer o X Windows ou, no modo de texto, você precisa do gpm . Acho que é menos comum fornecer o gpm no console por padrão agora, mas está lá quando uso o Clonezilla Live. É conveniente, mas você provavelmente perderá o número primeiro. Portanto, você provavelmente deve escrever o deslocamento da partição original antes de excluí-lo.

[1] A GPT usa um formato diferente para o tipo, adiciona mais alguns sinalizadores e um UUID de partição. Eu não acho que eles normalmente seriam importantes; flags não se aplicam à partição principal do Windows e o UUID da partição ainda não é usado.

    
por 17.01.2015 / 17:58
13

A seguir vem um memorando para redimensionar uma partição NTFS usando a linha de comando com ntfsresize (do ntfs-3g / ntfsprogs package) e fdisk , que deve funcionar para as versões do Windows XP para o 8. Observe que o GParted faz o seguinte para MBR / DOS, bem como para unidades EFI / GPT, se o ntfs-3g / ntfsprogs estiver instalado . Minhas referências estão no final.

OK neste cenário, tenho um disco de 149 GB com partição MBR com uma única partição NTFS (Windows C :). Vou redimensioná-lo para 20 GB (como @sourcejedi disse bem: BEWARE UNITS), a fim de abrir espaço para novas partições, por exemplo. Dados e / ou outro SO.

Pré-requisito

  • Sistema de arquivos Clean NTFS : As ferramentas NTFS baseadas no Linux se recusarão a tocar em um sistema de arquivos NTFS, a menos que já esteja perfeitamente consistente, para minimizar a chance de perda de dados. Caso contrário, é necessário usar ntfsfix (do Linux) ou chkdsk /f (do Windows).
  • Backup dos dados importantes (por exemplo, usando ntfsclone como @peterph escreveu acima)
  • Saiba qual dispositivo e partição eu quero redimensionar, / dev / sdb1 nesse caso.

Encolher o sistema de arquivos

  1. Verifique o dispositivo para garantir que está pronto para ser redimensionado:

    ~ ntfsresize --check /dev/sdb
    

    Qualquer aviso neste momento deve ser tratado antes de continuar o processamento.

  2. Verifique o tamanho deste sistema de arquivos pode ser redimensionado para:

    ~ ntfsresize --info /dev/sdb
    > ...
    > You might resize at 16865632256 bytes or 16866 MB (freeing 112060  MB).
    > ...
    
  3. Teste como o encolhimento para 18 GB funcionará (faremos isso 20 GiB em um minuto):

    ~ ntfsresize --no-action --size 18G /dev/sdb1
    > ...
    > The read-only test run ended successfully.
    
  4. Redimensionar para 18 GB:

    ~ ntfsresize -v --size 18G /dev/sdb1
    > ...
    > Successfully resized NTFS on device '/dev/sdb1'.
    > You can go on to shrink the device for example with Linux fdisk.
    > IMPORTANT: When recreating the partition, make sure that you
    >   1)  create it at the same disk sector (use sector as the unit!)
    >   2)  create it with the same partition type (usually 7, HPFS/NTFS)
    >   3)  do not make it smaller than the new NTFS filesystem size
    >   4)  set the bootable flag for the partition if it existed before
    > Otherwise you won't be able to access NTFS or can't boot from the disk!
    > ...
    

Dica: se o disco tiver problemas conhecidos, como setores defeituosos, adicione a opção ' --bad-sectors '.

B. Redimensione a partição

Na etapa anterior, reduzimos o sistema de arquivos, não a partição, conforme podemos verificar:

~ disktype /dev/sdb

> Block device, size 149.1 GiB (160041885696 bytes)
> DOS/MBR partition map
> Partition 1: 149.1 GiB (138602266624 bytes, 8459611 clusters of 16 KiB, bootable)
> Volume size 18.37 GiB (20799750144 bytes, 1269516 clusters of 16 KiB)

Como você pode ver, o tamanho do volume e o valor da partição são diferentes, com a Partição 1 ainda ocupando a unidade. Nesse estágio, é necessário excluir a partição e criar uma menor para corresponder ao novo tamanho do sistema de arquivos NTFS. Como meu disco tem uma tabela de partição DOS / MBR, eu faço isso com fdisk (@peterph tem uma resposta acima para GPT):

~ fdisk /dev/sdb
  1. Excluir a partição

    Digite 'p' para exibir as partições naquele disco e observe qual delas contém o sistema de arquivos redimensionado.

    Digitar "d" perguntará qual partição você deseja excluir

    > Command (m for help): d
    > partition number (1-3, last one by default) : 1
    
  2. Recriar a partição

    Agora recriar a partição menor, mantendo-a primária e a primeira em ordem:

    > Command (m for help): n
    > Command action
    > e extended
    > p primary partition (1-4)
    p
    > Partition number (1-4): 1
    > First cylinder (1-31, default 1): 1
    

    Desde que eu encolhi o sistema de arquivos para 18GB, vamos fazer a partição 20GiB:

    > Last cylinder or +size or +sizeM or +sizeK (1-31, default 31): +20G
    

    Sabemos que o sistema de arquivos é NTFS, portanto, use a ação de comando "t" para o tipo e o código hexadecimal listado "7" para NTFS:

    > Command (m for help): t
    > Selected partition 1
    > Hex code (type L to list codes): 7
    > Changed system type of partition 1 to 7 (HPFS/NTFS)
    
  3. Em seguida, quero garantir que a partição ainda esteja marcada como inicializável :

    > Command (m for help): p
       Device   Boot      Start        End      Blocks   Id   System
    /dev/sdb1               63      40644449  40644387   7  HPFS/NTFS
    

    Torne a nova partição inicializável adicionando o sinalizador de inicialização:

    > Command (m for help): a
    > Partition number (1-4): 1
    
  4. Escreva a tabela de partição alterada no disco e saia do fdisk com a ação de comando 'w':

    > Command (m for help): w
    
  5. Agora, um redimensionamento final do sistema de arquivos

    ntfsresize sem o parâmetro 'size' irá garantir que ele use o espaço disponível da partição inteira (inteiro e não mais - obrigado @sourcejedi)

    ~ ntfsresize -v /dev/sdb1
    

Agora podemos verificar se as partições e sistemas de arquivos na unidade estão no par:

~ disktype /dev/sdb
> ...
> Partition 1: 20.0 GiB (21474836480 bytes, 40644387 sectors from 63, bootable)
> Type 0x07 (HPFS/NTFS)
> Windows NTLDR boot loader
> NTFS file system
> Volume size 19.98 GiB (21453361644 bytes, 1269516 clusters of 16 KiB)

Referências

por 27.07.2015 / 15:32
3

Você precisa do utilitário ntfsresize do pacote ntfs-3g , que pode redimensionar o NTFS sistema de arquivo. No entanto, certifique-se de fazer o backup da partição antes de fazer qualquer alteração, pois algumas vezes o Windows tem outras idéias de como a partição redimensionada deve se parecer.

O backup pode ser convenientemente realizado com o utilitário ntfsclone (mesmo pacote), pois isso salva apenas o sistema de arquivos (ou seja, o conteúdo e os metadados do arquivo) e não a partição inteira:

ntfsclone -s -o windows-partitinon.img /dev/sdXY

Se você tiver pouco espaço em disco e / ou tiver bastante tempo, a compactação da imagem é uma boa ideia:

ntfsclone -s -o - /dev/sdXY | xz -v -9 > windows-partitinon.img.xz

Tenha em atenção que, para uma partição do Windows moderadamente completa (poucos dados do utilizador), digamos ~ 40 GB, pode demorar várias horas, dependendo do nível de compressão). Por outro lado, você também pode obter cerca de 40 a 30% do tamanho descompactado.

Além disso, lembre-se de fazer backup do layout da partição para poder executar a restauração completa. Se você estiver usando a tabela de partições MBR sem nenhuma partição lógica, tudo o que você precisa é do MBR do dispositivo afetado:

dd if=/dev/sdX bs=512 count=1 of=mbr.sav

Se partitinos lógicos estiverem presentes, pelo menos salve a descrição textual, por exemplo:

fdisk -l -u s /dev/sdX > partitions.sav

Para a GPT, você pode usar o gdisk , que tem a capacidade de salvar os dados da GPT em um arquivo e, em seguida, carregá-lo de volta.

Em seguida, você pode executar ntfsresize no modo de gravação. Ele provavelmente dirá a você para reiniciar o Windows (provavelmente várias vezes), para garantir que as alterações sejam registradas pelo SO.

Somente após tudo isso ser feito, você poderá redimensionar a (s) partição (ões). parted é provavelmente tão bom quanto qualquer outro programa de particionamento que entenda o esquema de particionamento usado nesse disco rígido.

    
por 17.01.2015 / 17:58