Mind Bending

Particionar o HDD (Hard Disk Drive) utilizando o fdisk se tornará uma tarefa corriqueira para aqueles que se aventurarem a instalar o Arch Linux em seus computadores pois, Conforme noticiado aqui, esta distribuição descontinuou o uso do AIF (Arch Installation Framework) em seu processo de instalação. Considerando que muitos usuários estão mal acostumados a utilizarem particionadores gráficos decidi escrever uma série de artigos ensinando a utilizar alguns particionadores em linha de comando.

Partitioning

Para a formatação sem terminal gráfico são sugeridos na Wiki oficial do Arch Linux o uso dos particionadores fdisk, cfdisk ou GNU Parted, porém eu adicionarei outro muito útil: o sfdisk. Antes de prosseguir, gostaria de ressaltar que esta dica servirá para qualquer usuário GNU/Linux, apesar de eu me referir tanto ao Arch Linux e sua documentação. Dado este aviso, vamos lá!

Este guia faz parte de um tutorial que re-ensina a instalar o Arch Linux em sua máquina, utilizando o novo processo definido pelos desenvolvedores.

Cenário

Nesta primeira parte ensinarei a utilizar o fdisk para particionar um HDD vazio ou um HDD no qual você não deseja manter nenhuma partição existente.

Nota Caso seu HDD possua uma partição com o ponto de montagem (mountpoint) do tipo home e você queira manter seu conteúdo, eu irei demonstrar este processo em um próximo artigo.

Neste cenário utilizaremos um HDD de 20 GByte que será particionado em 4 partições primárias:

  • /boot - 200 MBytes com o formato ext4;
  • /swap - 2 GBytes com o formato Linux Swap;
  • / (root) - 10 GBytes com o formato ext4;
  • /home - 7.8 GBytes com o formato ext4.

Vale ressaltar que esses valores são apenas para demonstração, em um sistema para uso de verdade é recomendado reservar:

  • De 100 a 200 MBytes para o /boot;
  • De 1 a 2 vezes o tamanho da sua memória RAM (dependendo de quanto seja) o /swap. Para mais informações leia a página da Wiki;
  • De 20 a 20 GBytes para o / (root);
  • O espaço restante (a partir de 5 GBytes) para o /home que hospedará os dados do seu usuário.

Pre-requisitos Para Uso do Fdisk

Antes de iniciar esse processo é necessário (e obrigatório) certificar-se que o fdisk está presente no seu sistema, identificar o HDD a ser particionado e assegurar que nenhuma partição do HDD a ser formatado está montada.

Para assegurar a primeira condição utilize o comando whereis fdisk ou simplesmente fdisk -v. Ele deverá apresentar uma das saídas abaixo:

Output from Whereis fdisk & fdisk -v

Para identificarmos o HDD a ser particionado utilize o comando fdisk -l (ou fdisk -l | grep Disk) para visualizar o identificador e tamanho do respectivo HDD:

Fdisk -l \| grep Disk

Após analisarmos a saída do comando constatamos que o disco a ser utilizado é o /dev/sda.

Para garantir que nenhuma partição do HDD /dev/sda está montado utilize o comando mount | grep sda. Caso nenhuma partição esteja montada, não será retornada nenhuma linha. Caso negativo, você visualizará o nome das partições e seu respectivo ponto de montagem.

Mount \| grep sda

Neste caso, é obrigatório desmontar essas partições, para isso utilize o comando umount [mount_point], substituindo [mount_point] pelo ponto de montagem apresentado na saída do comando mount.

Satisfeitas todos os pre-requisitos vamos iniciar o processo de particionamento do HDD.

Iniciando o Particionador Fdisk

Para iniciar o particionador vinculado ao disco que será particionado, neste caso /dev/sda, utilize o comando fdisk /dev/sda. Após emitir este comando você visualizará o seguinte prompt:

Fdisk - Inicio

O fdisk tem um funcionamento bem básico. Você sempre partirá do prompt Command (m for help):. Após digitar uma letra (apenas uma letra) você acionará uma opção. Para visualizar todas as opções visíveis utilize o comando m, que apresentará a seguinte mensagem:

Fdisk - Ajuda

Uma vez emitido um comando você passará por um diálogo que lhe informará algo e pedirá um retorno (argumentos), mas no fim você sempre retornará ao prompt citado anteriormente.

Listando Partições Com o Fdisk

É sempre bom, assim que iniciar o fdisk, listar as partições existentes no HDD. Caso seu HDD esteja completamente vazio será mostrado as seguintes informações:

Fdisk - Conteúdo do Disco sda

Caso seu disco possua outras partições serão apresentadas informações conforme abaixo:

image7

Caso seu HDD possua partições será necessário deletá-las antes de prosseguirmos.

Deletando Partições Com o Fdisk

Para deletar uma partição basta utilizar a opção d e em seguida informar ao fdisk o número da partição a ser deletada. Ao final deste procedimento você retornará ao prompt inicial. Abaixo uma imagem demonstrando a deleção de uma partição:

Fdisk - Deletando Partição 1

Para seguir com a instalação é necessário repetir esse procedimento para todas as partições existentes, até que seu HDD esteja sem nenhum partição.

Criando Partições Com o Fdisk

Para criar uma partição é utilizado comando n. Em seguida será necessário informar o tipo de partição (primária ou estendida), o número da partição (geralmente sequencial), o (primeiro) setor a partir do qual a partição será alocada e o último setor (que indicará o tamanho da partição).

Nota Um setor é a menor divisão física do disco, e possui na grande maioria das vezes 512 Bytes. Ao emitir o comando p o fdisk mostra o tamanho do setor. No exemplo anterior 1 setor é igual a 512 Bytes.

Para evitar a necessidade de realizar cálculos convertendo setor para GBytes o fdisk te dá a possibilidade de escrever o tamanho do último setor em Bytes, bastando apenas adicionar o símbolo + seguido do tamanho e do identificador K (KBytes), M (MBytes) ou G (GBytes). Atenção, é de suma importância utilizar o sinal + no início do tamanho.

Vocês notarão que eu sempre utilizarei o valor sugerido (padrão) na solicitação de "primeiro setor", pois ele sempre sugere o setor adjacente à última partição criada. Desta forma eu não precisarei digitar um número enorme e as partições sempre estarão próximas e sem espaços vazios.

Criando o /boot

A partição o /boot é criada com os seguintes atributos: ela será a primeira partição, começará no setor 2048 com o tamanho de partição de 200 MBytes. Abaixo a demonstração deste processo:

Fdisk - Nova partição sda1

Criando o /swap

A partição o /swap é criada com os seguintes atributos: ela será a segunda partição, começará no setor 411648 com o tamanho de partição de 2 GBytes. Abaixo a demonstração deste processo:

Fdisk - Nova partição sda2

Criando o / (root)

A partição o / (root) é criada com os seguintes atributos: ela será a terceira partição, começará no setor 4605952 com o tamanho de partição de 10 GBytes. Abaixo a demonstração deste processo:

Fdisk - Nova partição sda3

Criando o /home

A partição o /home é criada com os seguintes atributos: ela será a quarta partição, começará no setor 25577472 com o restante do espaço livre (7,8 GBytes). Abaixo a demonstração deste processo:

Fdisk - Nova partição sda4

Notem que quando o fdisk solicitou que fosse informado o "último setor", eu simplesmente pressionei enter para que ele utilizasse o valor sugerido, ou seja, o restante do disco.

Partições Lógicas Com o Fdisk

Com a queda dos preços dos HDDs o uso de partições estendidas está caindo em desuso, mas como este artigo visa ensinar o uso da ferramenta fdisk, irei demonstrar como criar 1 partição primária e uma partição estendida (que abrigará duas partições lógicas). Mas antes disso vamos entender qual a utilidade as partições lógicas.

Devida a restrição de endereçamento na MBR, um HDD consegue abrigar apenas 4 partições. Caso você precise de mais partições será obrigatório o uso de uma partição estendida, que conterá diversas parições lógicas. A restrição de endereçamento de uma partição estendida está diretamente vinculada ao Kernel e, atualmente, o GNU/Linux consegue armazenar até 59 partições lógicas. No GNU/Linux toda e qualquer partição lógica será endereçada a partir do número 5, isto é, a partir do dispositivo /dev/sda5.

O desenho abaixo representa as partições que iremos criar neste exemplo:

extended-partition

Abaixo segue a criação da primeira partição, uma partição primária de 2 GByte:

image14

Em seguida criamos uma partição estendida que ocupará o restante do HDD (18 GByte):

image15

Nesta partição estendida criamos a primeira partição lógica, que conterá 5 GBytes:

Fdisk - Nova partição sda5

E por último uma partição lógica que ocupará o restante do HDD (13 GBytes):

Fdisk - Nova partição sda6

Ao final seu HDD estará da seguinte forma:

image18

As cores estão de acordo com o diagrama mostrado inicialmente.

Alterando Partições

Além do tamanho uma partição possui algumas propriedades a mais. Ao final podemos revisar a estrutura do HDD utilizando o comando p:

image19

Podemos notar que existem 2 pontos a serem corrigidos: definir a parição /dev/sda1 como bootable e definir o formato da partição /dev/sda2 como swap. Em outras palavras vamos alterar duas propriedades das partições: a flag de boot da partição /dev/sda1 e o tipo da partição /dev/sda2.

Definindo a Partição de Boot

Para definirmos a partição /dev/sda1 como uma partição de boot, isto é, torná-la bootable basta utilizar o comando a e em seguida informar o número da partição:

Fdisk - Marcando partição como "bootable"

Ao final teremos as partições organizadas da seguinte forma:

image21

Note o * na coluna Boot.

Configurar Partição de Swap

Para definir a partição /dev/sda2 como uma partição de swap utilizamos o comando t e em seguida informaremos o número da partição (2) e o código hexadecimal 82 (Linux swap). Conforme imagem abaixo:

Fdisk - Mudando tipo da partição 2

Para a lista completa de formatos suportados pela ferramenta fdisk utilize o comando L quando você for requisitado a digitar o código hexadecimal. Abaixo a lista completa:

Fdisk - Tipos de partições

Ao final teremos as partições organizadas da seguinte forma:

image24

Note o nome Linux swap / Solaris na coluna System e o código 82 na colina Id.

Aplicando Alterações

Ao final de todo o procedimento, e após revisarmos se tudo está configurado corretamente, devemos utilizar o comando w para que todas as alterações sejam escritas na tabela de partição. Após emitir este comando o programa fdisk irá finalizar sua execução:

Fdisk - Gravando alterações

Formatando Partições

Você certamente notou que nos deletamos partições, criamos partições, alteramos o tipo da partição e marcamos partições como bootáveis mas em momento nenhum fizemos uma formatação sequer. Exatamente, a ferramenta fdisk é exclusivamente utilizada para particionar, para formatar as partições serão utilizadas as ferramentas mkfs, mkswap e swapon.

Neste exemplo utilizaremos o formato ext4 para as partições /boot, / (root) e /home. Para formatar a partição /dev/sda1 com o formato ext4 utilize o comando mkfs.ext4 /dev/sda1. Segue abaixo exemplo das criações das partições para as partições sda1, sda3 e sda4:

20-mkfs-sda1-boot 21-mkfs-sda3-root 22-mkfs-sda4-home

A parição swap possui um formato específico e por isso é utilizado um comando diferente. Para preparar a partição /dev/sda2 utilizaremos o comando mkswap /dev/sda2 && swapon /dev/sda2. O comando mkswap é responsável por criar uma área de swap em um dado dispositivo, enquanto o comando swapon ativa o dispositivo e os arquivos de paginação. Segue abaixo exemplo da execução:

23-mkswap-swapon

Conclusão

Apesar do longo artigo (2200 palavras) podemos constatar que a utilização do fdisk não é complexa, apenas exige do utilizador que ele aprenda o significado de algumas letras e o básico de formatação.

Comparando um pouco com o processo antigo (via AIF), eu considero que a diferença de processos é mínima. O AIF possuía como vantagem apenas o fato de podermos indicar o mount point das partições, o que teremos que fazer manualmente mais para frente.

Magnun

Magnun

Engenheiro de telecomunicações por formação, mas trabalha com suporte à infraestrutura GNU/Linux, e nas horas vagas é Programador OpenSource (Python e C) desenhista e escritor do Mind Bending Blog.


Comments

comments powered by Disqus