\section{fdisk}
\index{fdisk}
\subsubsection{NAME }
fdisk - Manipulador da tabela de partições para o Linux  \subsubsection{SINOPSE 
}
\textbf{fdisk [-b] [-u] [}\textit{dispositivo}\textbf{]}  

\textbf{fdisk -l [-b] [-u] [}\textit{dispositivo ...}\textbf{]}  

\textbf{fdisk -s }\textit{partição 
...}  

\textbf{fdisk -v}  \subsubsection{DESCRIÇÃO }
Discos rígidos podem ser divididos em um ou mais 
discos lógicos chamados de \textit{partições}. Esta divisão é descrita na  \textit{tabela 
de partições} encontrada no setor 0 do disco. 

 No mundo BSD as pessoas falam 
sobre `disk slices' e `disklabel'. 

 O Linux precisa de pelo menos uma partição, 
para o seu sistema de arquivos raiz. Ele pode usar arquivos de swap ou 
partições de swap, mas as partições são mais eficientes. Normalmente usa-se 
uma segunda partição no Linux dedicada como swap. Em equipamentos compatíveis 
com o padrão Intel, a BIOS que inicializa o sistema normalmente pode acessar 
somente os primeiros 1024 cilindros do disco. Por esta razão, muitas pessoas 
com discos grandes criam uma terceira partição, com somente alguns Mb, 
normalmente montada no \textit{/boot}, para guardar a imagem do kernel e alguns 
arquivos auxiliares necessários em  tempo de inicialização do sistema. 
Assim, tem-se a certeza que tudo será  acessível pelo BIOS. Pode ainda existir 
razões de segurança, facilidade de  administração e geração de cópias 
de segurança, ou teste, para usar um número maior de partições no sistema. 


 O \textbf{fdisk} (na primeira forma de execução) é um programa sob a forma de 
menus para a criação e manipulação de tabelas de partição. Ele conhece 
tabelas de partições DOS e BSD ou disklabels da SUN. 

 O \textit{dispositivo} é normalmente 
um dos seguintes:  

 /dev/hda 

 /dev/hdb 

 /dev/sda 

 /dev/sdb 

  (/dev/hd[a-h] 
para discos IDE, /dev/sd[a-p] para discos SCSI, /dev/ed[a-d] para discos 
ESDI, /dev/xd[ab] para discos XT). Um nome de dispositivo refere-se ao disco 
inteiro. 

 A \textit{partição} é um  \textit{dispositivo} seguido por um número de partição. 
 Por exemplo, \textbf{/dev/hda1} é a primeira partição do primeiro disco IDE no 
sistema. Discos IDE podem ter até 63 partições, discos SCSI até 15. Veja 
também \textit{/usr/src/linux/Documentation/devices.txt}. 

 Um disklabel BSD/SUN pode 
descrever 8 partições, sendo que a terceira deve conter todo o disco. Não 
inicie uma partição que usa seu primeiro setor (como uma partição swap) 
no cilindro 0, pois esta irá destruir o disklabel. 

 Uma tabela de partição 
do DOS pode descrever um número ilimitado de partições. No setor 0 há espaço 
para a descrição de 4 partições (chamadas `primárias'). Uma delas pode ser 
uma partição estendida; esta guarda as partições lógicas, com os descritores 
localizados em uma lista ligada de setores, cada um precedendo a partição 
lógica correspondente. As quatro partições primárias, presentes ou não, 
possuem números de 1 a 4. Partições lógicas iniciam no número 5. 

 Em uma 
tabela de partição do DOS, o deslocamento inicial e o tamanho de cada 
partição é armazenada de duas maneiras: como um número absoluto de setores 
(dados em 32 bits) e como uma tripla cilindros/cabeças/setores (dados 
em 10+8+6 bits). A primeira funciona até 2 TB, utilizando setores de 512-bytes. 
A segunda tem dois problemas diferentes. Primeiro,  os campos de C/C/S 
podem ser preenchidos somente quando o número de cabeças e o número de 
setores por trilha são conhecidos. Depois, mesmo que se conheça estes números, 
os 24 bits que estão disponíveis não são suficientes. O DOS usa somente 
a trinca C/C/S, o Windows ambas e o Linux nunca as usa. 

 Se possível, o 
 \textbf{fdisk} obterá a geometria do disco automaticamente. Esta não é necessariamente 
a geometria física do disco (ainda, discos novos não tem algo como uma 
 geometria física, certamente nada que pode ser descrito da forma simplista 
cilindro/cabeças/setores) mas é a geometria do disco que o MS-DOS usa para 
a tabela de partições. 

 Normalmente tudo funciona bem por padrão, e não 
existem problemas caso o Linux seja o único sistema operacional no disco. 
Contudo, caso o disco  seja dividido com outro sistema operacional, é 
uma boa idéia deixar o fdisk do outro sistema criar pelo menos uma partição. 
Quando o Linux inicializa, ele acessa a tabela de partição e tenta deduzir 
qual geometria é adequada para a cooperação com outros sistemas. 

 Sempre 
que a tabela de partições é mostrada, uma checagem de consistência é feita 
nas entradas da tabela. Esta checagem verifica que o início físico e  lógico, 
bem como os pontos finais são idênticos, e também que a partição inicia 
e termina nos limites de um cilindro (exceto para a primeira partição). 


 Algumas versões do MS-DOS criam a primeira partição fora dos limites de 
um cilindro, ficando no segundo setor do primeiro cilindro. Partições começando 
no primeiro cilindro não iniciam nos limites do cilindro, mas normalmente 
não causam problemas a menos que você use o OS/2 em sua máquina. 

 Um sync() 
e um BLKRRPART ioctl() (releitura da tabela de partição do disco) são 
executados antes da saída quando a tabela de partições foi atualizada. 
A tempos atrás era necessário reinicializar o sistema depois do uso do 
fdisk. Eu não acho que isto seja mais necessário - de fato, reinicializar 
o sistema muito rapidamente pode causar perda de dados ainda não escritos. 
Note que  o kernel e o hardware do disco podem armazenar dados (buffers) 
antes de  gravá-los. 

  \subsubsection{DOS 6.x ALERTA }


 O comando FORMAT do DOS 6.x procura 
por informações no primeiro setor da área  de dados da partição, e utiliza 
esta informação ao invés da que está na tabela  de partições.  O format 
do DOS espera que o fdisk (do DOS) limpe os primeiros  512 bytes da área 
de dados da partição caso qualquer mudança de tamanho  ocorra. O format 
do DOS irá usar esta informação adicional mesmo que o  indicador /U for 
usado -- nós consideramos isto um erro (bug) no format e no  fdisk do DOS. 


 A questão é que se você usar o cfdisk ou o fdisk para trocar o tamanho 
de uma partição DOS, então deverá também usar o  \textbf{dd} para zerar os primeiros 
512 bytes desta partição antes de usar o FORMAT do DOS para formatá-la. 
Por exemplo, caso você esteja usando o cfdisk para criar uma partição 
DOS para o /dev/hda1, então (depois de sair do fdisk ou do cfdisk e  reinicializar 
o Linux para ter certeza que a informação na tabela de partições é válida) 
você deverá usar o comando "dd if=/dev/zero of=/dev/hda1 bs=512  count=1" 
para zerar os primeiros 512 bytes desta partição. 

 \textbf{SEJA EXTREMAMENTE CUIDADOSO} 
caso você use o comando \textbf{dd,} pois o menor descuido pode fazer com que todos 
os seus dados sejam perdidos. 

 Para melhores resultados, você deve sempre 
usar o programa particionador que  acompanha cada sistema operacional. 
Por exemplo, crie partições DOS com o  DOS FDISK e partições Linux com 
o fdisk ou o cfdisk do Linux. 

 

  \subsubsection{OPÇÕES }
\begin{dispitems}
\item [\textbf{-v}  ] Mostra o número da versão do 
\textbf{fdisk} e sai. 
\item [\textbf{-l}  ] Lista a tabela de partições para os seguintes dispositivos 
\textbf{/dev/hd[a-d]}, \textbf{/dev/sd[a-h]}, \textbf{/dev/ed[a-d]}, e sai. 
\item [\textbf{-b}  ] Na listagem de tabelas 
de partições, também imprime uma coluna de início `Begin' como versões antigas 
do fdisk faziam por padrão. (Nota: os valores nesta coluna, quando dados 
em cilindros, não podem ser maiores que 1023. Não há nada de errado caso 
o `Begin' e o `Start' sejam diferentes, pelo menos nada que o Linux se importe.) 
 
\item [\textbf{-u}  ] Na listagem de tabelas de partições, mostra os tamanhos em setores 
ao invés de cilindros. 
\item [\textbf{-s }\textit{partição}  ] O \textit{tamanho} da partição (em blocos) é 
mostrado na saída padrão. Este valor é normalmente usado como um argumento 
para o programa \textbf{\textsf{mkfs}(8)} para especificar o tamanho da partição que irá 
ser formatada. (Versões antigas do fdisk somente farão isso caso a identificação 
da partição  for maior que 10, na tentativa de recusar partições DOS; 
este teste foi  retirado.) Note que o  \textbf{sfdisk -s} mostra diferentes (na verdade, 
corretas) respostas. A razão para a diferença é que o kernel e o  \textbf{fdisk} 
não necessitam ter o mesmo padrão sobre numeração de partições (isto é, 
no caso de você ter partições BSD), e podem ter idéias diferentes sobre 
o tamanho de um partição estendida. 
\end{dispitems}


  \subsubsection{BUGS }
Existem diversos *fdisk por 
aí. Cada um tem seus prós e contras. Teste-os nesta ordem \textbf{cfdisk}, \textbf{fdisk}, 
\textbf{sfdisk}. 
