Este capítulo traz explicações de como manipular discos rígidos e partições no
sistema GNU/Linux
e como acessar seus discos de CD-ROM e partições
DOS
, Windows 95/98
no GNU/Linux
.
Também será ensinado como utilizar o programa mkfs.ext2
para criar
um sistema de arquivos EXT2 (formatar o disco) e a ferramenta
mkswap
(para criar uma partição ou arquivo de memória virtual).
São divisões existentes no disco rígido que marcam onde começa onde termina um
sistema de arquivos. Por causa destas divisões, nós podemos usar mais de um
sistema operacional no mesmo computador (como o GNU/Linux
,
Windows
e DOS
), ou dividir o disco rígido em uma ou
mais partes para ser usado por um único sistema operacional.
Para gravar os dados, o disco rígido deve ser primeiro particionado (usando o
fdisk), escolher o tipo da partição (Linux Native, Linux
Swap, etc) e depois aquela partição deve ser formatada com o
mkfs.ext2
(veja Partição EXT2
(Linux Native), Section 5.3).
Após criada e formatada, a partição será identificada como um dispositivo no
diretório /dev
(veja Identificação
de discos e partições em sistemas Linux, Section 5.8) . e deverá ser
montada (Montando (acessando) uma
partição de disco, Section 5.9) para permitir seu uso no sistema.
Uma partição de disco não interfere em outras partições existentes, por este
motivo é possível usar o Windows
, GNU/Linux
e
qualquer outro sistema operacional no mesmo disco. Para escolher qual deles
será inicializado, veja Gerenciadores de Partida (boot
loaders), Chapter 6.
Para particionar (dividir) o disco rígido em uma ou mais partes é necessário o
uso de um programa de particionamento. Os programas mais conhecidos para
particionamento de discos no GNU/Linux
são fdisk
,
cfdisk
e o Disk Druid
.
Lembre-se:
GNU/Linux
. Para detalhes veja Partição EXT2 (Linux Native), Section 5.3.
Windows
instalado em uma
partição que consome TODO o espaço do disco rígido. Uma solução para instalar
o GNU/Linux
é apagar a partição Windows
e criar três
com tamanhos menores (uma para o Windows
, uma para o
GNU/Linux
e outra para a Memória Virtual do Linux (SWAP).
Ou criar apenas 2 se você não quiser mais saber mais do Windows
;-)
A outra é usar o programa FIPS
para diminuir o tamanho da partição
Windows
(usando o espaço livre existente) e criar as 2 partições
requeridas pelo GNU/Linux
no espaço restante, sem apagar o
Windows
. Esta técnica também é chamada de Reparticionamento
não destrutivo (e o outro obviamente Reparticionamento
destrutivo). Caso decida usar o FIPS
, pegue a versão 2.0
ou superior do programa, pois funciona nativamente com sistema de arquivos
FAT32 (você o encontra no site de sua distribuição
GNU/Linux
).
Para mais detalhes sobre discos, partições ou como particionar seu disco, veja
algum bom documento sobre particionamento (como a página de manual e
documentação do fdisk
, cfdisk
ou Disk
Druid
).
É criado durante a "formatação" da partição de disco (quando se usa o
comando mkfs.ext2
). Após a formatação toda a estrutura para
leitura/gravação de arquivos e diretórios pelo sistema operacional estará
pronta para ser usada. Normalmente este passo é feito durante a instalação de
sua distribuição GNU/Linux
.
Cada sistema de arquivos tem uma característica em particular mas seu propósito é o mesmo: Oferecer ao sistema operacional a estrutura necessária para ler/gravar os arquivos/diretórios.
Entre os sistemas de arquivos existentes posso citar:
GNU/Linux
(você encontra isto no manual de sua distribuição).
Para detalhes veja Partição EXT2 (Linux
Native), Section 5.3.
/proc
,
Section 5.5).
DOS
DOS
e oferece suporte até discos de
2GB
DOS
e oferece suporte a
discos de até 2 Terabytes
A partição EXT2 é o tipo usado para criar o sistema de arquivos
Linux Native
usado para armazenar o sistema de arquivos
EXT2 (após a formatação) e permitir o armazenamento de dados.
Para detalhes de como criar uma partição EXT2 veja Criando um sistema de arquivos EXT2 em
uma partição, Section 5.3.1.
Este tipo de partição é normalmente identificado pelo código 83 nos programas de particionamento de disco. Note que também é possível criar um sistema de arquivos EXT2 em um arquivo (ao invés de uma partição) que poderá ser montado e acessado normalmente pelo sistema de arquivos (veja Criando um sistema de arquivos EXT2 em um arquivo, Section 5.3.2.
Logo que foi inventado, o GNU/Linux
utilizava o sistema de
arquivos Minix (e conseqüentemente uma partição Minix) para o
armazenamento de arquivos. Com a evolução do desenvolvimento, foi criado o
padrão EXT (Extended Filesystem) e logo evoluiu para o
EXT2 (Second Extended Filesystem) que é o usado hoje em dia.
Você deve escolher este tipo de partição para armazenar seus arquivos, é o padrão atualmente, é o mais rápido, não se fragmenta tão facilmente pois permite a localização do melhor lugar onde o arquivo se encaixa no disco, etc. Isto é útil para grandes ambientes multiusuário onde várias pessoas gravam/apagam arquivos o tempo todo.
O utilitário usado para formatar uma partição EXT2 é o
mkfs.ext2
. Após terminar este passo, seu sistema de arquivos
EXT2 estará pronto para ser usado.
Após particionar seu disco rígido e criar uma (ou várias) partições EXT2, use o comando:
mkfs.ext2 /dev/hda?
Onde a "?" em hda? significa o número da partição que será formatada. A identificação da partição é mostrada durante o particionamento do disco, anote se for o caso. hda é o primeiro disco rígido IDE, hdb é o segundo disco rígido IDE. Discos SCSI são identificados por sda?, sdb?, etc. Para detalhes sobre a identificação de discos, veja Identificação de discos e partições em sistemas Linux, Section 5.8.
Algumas opções são úteis ao mkfs.ext2
:
Agora para acessar a partição deverá ser usado o comando: mount /dev/hda? /mnt -t ext2
Para mais detalhes veja Montando (acessando) uma partição de disco, Section 5.9.
Note que é possível criar um sistema de arquivos no disco rígido sem criar uma
partição usando /dev/hda
, /dev/hdb
, etc.
EVITE FAZER ISSO! Como não estará criando uma partição, o
disco estará divido de maneira incorreta, você não poderá apagar o sistema de
arquivos completamente do disco caso precise (lembre-se que você não criou uma
partição), e a partição possui uma assinatura apropriada que identifica o
sistema de arquivos.
É possível criar um sistema de arquivos EXT2 em um arquivo que poderá ser
montado e acessado normalmente como se fosse uma partição normal. Isto é
possível por causa do recurso loop oferecido pelo kernel do
GNU/Linux
. Os dispositivos de loop estão disponíveis
no diretório /dev
com o nome loop?
(normalmente estão
disponíveis 8 dispositivos de loop).
Isto é possível usando o comando dd
e o mkfs.ext2
.
Veja passo a passo como criar o sistema de arquivos EXT2 em um
arquivo:
arquivo-ext2
vazio de
10Mb de tamanho em /tmp
. Você pode modificar os parâmetros de
of para escolher onde o arquivo será criado, o tamanho do arquivo
poderá ser modificado através de count
arquivo-ext2
não é um dispositivo de bloco
especial (uma partição de disco) e perguntará se deve continuar, responda com
y.
O sistema de arquivos EXT2 será criado em /tmp/arquivo-ext2
e
estará pronto para ser usado.
arquivo-ext2
com o comando: mount
/tmp/arquivo-ext2 /mnt -o loop=/dev/loop1. Note que foi usado o
parâmetro -o loop para dizer ao comando mount
para
usar os recursos de loop do kernel para montar o arquivo.
arquivo-ext2
foi realmente montado no sistema de arquivos digitando df -T.
Para detalhes, veja df, Section 10.3.
Pronto! o que você gravar para /mnt
será gravado dentro do
arquivo /tmp/arquivo-ext2
. Como foi criado um sistema de arquivos
EXT2 em arquivo-ext2
, você poderá usar todos os
recursos da partição EXT2 normal, como permissões de arquivos e
diretórios, links simbólicos, etc.
O uso do dispositivo de loop permite que o dispositivo
/dev/loop1
seja associado ao arquivo /arquivo-ext2
e
assim permitir sua montagem e uso no sistema.
mount
,
assim o kernel gerenciará automaticamente os dispositivos de loop.
O comando e2label
é usado para esta função.
e2label [dispositivo] [nome]
Onde:
Se não for especificado um nome, o nome atual da partição será mostrado. O
nome da partição também pode ser visualizado através do comando
dumpe2fs
(veja dumpe2fs,
Section 5.3.5).
Exemplo: e2label /dev/sda1 FocaLinux, e2label /dev/sda1 "Foca Linux"
lost+found
O utilitário mklost+found
cria o diretório especial
lost+found
no diretório atual. O diretório
lost+found
é criado automaticamente após a formatação da partição
com o mkfs.ext2
, a função deste diretório é pré-alocar os blocos
de arquivos/diretório durante a execução do programa fsck.ext2
na
recuperação de um sistema de arquivos (veja Checagem dos sistemas de arquivos, Section
25.1). Isto garante que os blocos de disco não precisarão ser diretamente
alocados durante a checagem.
mklost+found
OBS: Este comando só funciona em sistemas de arquivos ext2
Exemplo: cd /tmp;mklost+found;ls -a
Mostra detalhes sobre uma partição Linux
.
dumpe2fs [opções] [partição]
Onde:
Este comando lista diversas opções úteis do sistema de arquivos como o tipo do sistema de arquivos, características especiais, número de inodos, blocos livres, tamanho do bloco, intervalo entre checagens automáticas, etc.
Exemplo: dumpe2fs /dev/sda1, dumpe2fs -b /dev/sda1
Criar uma partição EXT2 ou um arquivo usando o loop? Abaixo estão algumas considerações:
GNU/Linux
.
libBlaBlaBla-2.0
no diretório /lib
e ninguém nunca
suspeitará deste arquivo (acho que não...). Também é possível criptografa-lo
para que mesmo alguém descobrindo que aquilo não é uma lib, não poder abri-lo a
não ser que tenha a senha (isto é coberto no documento
Loopback-encripted-filesystem.HOWTO
).
Você poderia facilmente copiar o conteúdo de /var
, por exemplo,
para o arquivo EXT2 ext2-l
criado no diretório Raíz
do Windows, apagar o conteúdo de /var
(liberando muito espaço em
disco) e então montar ext2-l
como /var
. A partir de
agora, tudo o que for gravado em /var
será na realidade gravado no
arquivo ext2-l
.
Para o sistema acessar o arquivo, deve passar pelo sistema de arquivos loop e FAT32, isto causa um desempenho menor.
Este tipo de partição é usado para oferecer o suporte a memória
virtual ao GNU/Linux
em adição a memória RAM
instalada no sistema. Este tipo de partição é identificado pelo tipo 82 nos
programas de particionamento de disco para Linux
. Para detalhes
de como criar uma partição Linux Swap veja Criando sistema de arquivos Swap em
uma partição, Section 5.4.1.
Somente os dados na memória RAM são processados pelo processador, por ser mais
rápida. Desta forma quando você está executando um programa e a memória RAM
começa a encher, o GNU/Linux
move automaticamente os dados que não
estão sendo usados para a partição Swap e libera a memória RAM para a continuar
carregando os dados necessários pelo. Quando os dados movidos para a partição
Swap são solicitados, o GNU/Linux
move os dados da partição Swap
para a Memória. Por este motivo a partição Swap também é chamada de
Troca ou memória virtual.
A velocidade em que os dados são movidos da memória RAM para a partição é muito alta. Note também que é possível criar o sistema de arquivos Swap em um arquivo ao invés de uma partição (veja Criando um sistema de arquivos Swap em um arquivo, Section 5.4.2).
O programa usado para formatar uma partição Swap é o mkswap
. Seu
uso é simples:
mkswap /dev/hda?
Novamente veja Identificação de discos e partições em sistemas Linux, Section 5.8 caso não souber identificar seus discos e partições. O nome do dispositivo da partição Swap pode ser visualizado através de seu programa de particionamento, você pode usar o comando fdisk -l /dev/hda para listar as partições no primeiro disco rígido e assim verificar qual dispositivo corresponde a partição Swap.
A opção -c também pode ser usada com o mkswap
para
checar se existem agrupamentos danificados na partição.
Com a partição Swap formatada, use o comando: swapon /dev/hda? para ativar a partição Swap (lembre-se de substituir ? pelo número de sua partição Swap).
Observações:
Os Kernels do GNU/Linux
2.0.xx e anteriores somente suportam
partições Swap de até 128MB. Caso precise de mais que isso, crie mais
partições Swap ou atualize seu sistema para trabalhar com o kernel 2.2.xx
Se utilizar mais que 1 partição Swap, pode ser útil o uso da opção -p NUM que especifica a prioridade em que a partição Swap será usada. Pode ser usado um valor de prioridade entre 0 e 32767, partições com número maior serão usadas primeiro, sendo que na montagem automática através de "mount -a" podem ser designados números negativos.
Procure usar o número maior para partições mais rápidas (elas serão acessadas primeiro) e números maiores para partições mais lentas. Caso precise desativar a partição Swap, use o comando: swapoff /dev/hda?.
Também é possível criar um arquivo que poderá ser usado como memória virtual. Veja passo a passo como fazer isso:
troca
vazio de 16Mb de tamanho em
/tmp
. Você pode modificar os parâmetros de of para
escolher onde o arquivo será criado, o tamanho do arquivo poderá ser modificado
através de count.
Observações:
swapon
).
Criar uma partição de Troca ou um arquivo de troca? Abaixo algumas vantagens e desvantagens:
/proc
É o sistema de arquivos do Kernel do GNU/Linux
. Ele oferece um
método de ler, gravar e modificar dinamicamente os parâmetros do kernel, muito
útil para curiosos (como eu) e programas de configuração. A modificação dos
arquivos do diretório /proc
é o método mais usado para modificar a
configuração do sistema e muitos programas também dependem deste diretório para
funcionar.
Nele você tem todo o controle do que o seus sistema operacional está fazendo, a configuração dos hardwares, interrupções, sistema de arquivos montado, execução de programas, memória do sistema, rede, etc.
Agora entre no diretório /proc
digite ls e veja a
quantidade de arquivos e diretórios que ele possui, dê uma passeada por eles.
Abaixo a descrição de alguns deles (todos podem ser visualizados pelo comando
cat
):
inetd
for 115, você pode entrar no diretório
115 e verificar as opções usadas para execução deste programa
através de cada arquivos existente dentro do diretório. Alguns são:
cmdline
- O que foi digitado para iniciar o processo (pode também
ter sido iniciado através de um programa ou pelo kernel).
environ
- Variáveis de Ambiente existentes no momento da execução
do processo.
status
- Dados sobre a execução do Processo (PID, status da
execução do programa, memória consumida, memória executável, UID, GID, etc).
apm
- Dados sobre o gerenciamento de energia
cmdline
- Linha de comando usada para inicializar o Kernel
GNU/Linux
. Os parâmetros são passados através do programa de
inicialização, como o LILO
, LOADLIN
,
SYSLINUX
.
cpuinfo
- Detalhes sobre a CPU do sistema
devices
- Dispositivos usados no sistema
dma
- Canais de DMA usados por dispositivos
filesystems
- Sistemas de arquivos em uso atualmente
interrupts
- Interrupções usadas por dispositivos
ioports
- Portas de Entrada e Saída usadas pelos dispositivos do
sistema
kcore
- Este arquivo corresponde a toda a memória RAM em seu
sistema. Seu tamanho é correspondente a memória RAM do micro
kmsg
- Permite visualizar mensagens do Kernel (use o comando
cat < kmsg para visualiza-lo e pressione CTRL+C para cancelar
loadavg
- Média de Carga do sistema
meminfo
- Dados de utilização da memória do sistema
misc
- Outras configurações
modules
- Módulos atualmente carregados no kernel
mounts
- Sistemas de Arquivos atualmente montados
pci
- Detalhes sobre dispositivos PCI do sistema
rtc
- Relógio em Tempo real do sistema
uptime
- Tempo de execução do sistema
version
- Versão atual do Kernel, programa usado na compilação,
etc
net
- Dados sobre a rede do sistema
sys
- Dados sobre outras áreas do sistema
scsi
- Detalhes sobre dispositivos SCSI do sistema
Note que o diretório proc
e os arquivos existentes dentro dele
estão localizados no diretório raiz (/
), mas não ocupa nenhum
espaço no disco rígido.
As subseções seguintes explicarão maneiras de formatar seus disquetes para
serem usados no GNU/Linux
e DOS/Windows
.
Para formatar disquetes para serem usados no GNU/Linux
use o
comando:
mkfs.ext2 [-c] [/dev/fd0]
Em alguns sistemas você deve usar mke2fs
no lugar de
mkfs.ext2
. A opção -c faz com que o
mkfs.ext2
procure por blocos danificados no disquete e
/dev/fd0
especifica a primeira unidade de disquetes para ser
formatada (equivalente a A: no DOS). Mude para
/dev/fd1
para formatar um disquete da segunda unidade.
OBS: Este comando cria um sistema de arquivos ext2 no disquete que é
nativo do GNU/Linux
e permite usar características como permissões
de acesso e outras. Isto também faz com que o disquete NÃO possa ser lido pelo
DOS/Windows
. Para formatar um disquete no GNU/Linux
usando o FAT12 (compatível com o DOS/Windows) veja próxima seção.
Exemplo: mkfs.ext2 -c /dev/fd0
A formatação de disquetes DOS
no GNU/Linux
é feita
usando o comando superformat
que é geralmente incluído no pacote
mtools
. O superformat
formata (cria um sistema de
arquivos) um disquete para ser usado no DOS
e também possui opções
avançadas para a manipulação da unidade, formatação de intervalos de cilindros
específicos, formatação de discos em alta capacidade e verificação do disquete.
superformat [opções] [dispositivo]
/dev/fd0
ou
/dev/fd1
especificando respectivamente a primeira e segunda
unidade de disquetes.
superformat
para detalhes.
mbadblocks
. Usando esta
opção, as trilhas defeituosas encontradas serão automaticamente marcadas para
não serem utilizadas.
Na primeira vez que o superformat
é executado, ele verifica a
velocidade de rotação da unidade e a comunicação com a placa controladora, pois
os discos de alta densidade são sensíveis a rotação da unidade. Após o teste
inicial ele recomendará adicionar uma linha no arquivo
/etc/driveprm
como forma de evitar que este teste seja sempre
executado. OBS: Esta linha é calculada de acordo com a rotação de usa unidade
de disquetes, transferência de dados e comunicação com a placa controladora de
disquete. Desta forma ela varia de computador para computador Note que não é
necessário montar a unidade de disquetes para formata-la.
Segue abaixo exemplos de como formatar seus disquetes com o
superformat
:
/dev/fd0
) e especifica o nível de detalhes para 1,
exibindo um ponto após cada trilha formatada.
Além de programas de formatação em modo texto, existem outros para ambiente gráfico (X11) que permitem fazer a mesma tarefa.
Entre os diversos programas destaco o gfloppy
que além de permitir
selecionar se o disquete será formatado para o GNU/Linux
(ext2) ou
DOS
(FAT12), permite selecionar a capacidade da unidade de
disquetes e formatação rápida do disco.
O GNU/Linux
acessa as partições existente em seus discos rígidos e
disquetes através de diretórios. Os diretórios que são usados para acessar
(montar) partições são chamados de Pontos de Montagem. Para detalhes
sobre montagem de partições, veja Montando (acessando) uma partição de disco,
Section 5.9.
No DOS
cada letra de unidade (C:, D:, E:) identifica uma partição
de disco, no GNU/Linux
os pontos de montagem fazem parte da grande
estrutura do sistema de arquivos raiz.
Existem muitas vantagens de se usar pontos de montagem ao invés de
unidade de disco para identificar partições (método usado no DOS
):
DOS
).
No GNU/Linux
, os dispositivos existentes em seu computador (como
discos rígidos, disquetes, tela, portas de impressora, modem, etc) são
identificados por um arquivo referente a este dispositivo no diretório
/dev
.
A identificação de discos rígidos no GNU/Linux
é feita da seguinte
forma:
/dev/hda1 | | || | | ||_Número que identifica o número da partição no disco rígido. | | | | | |_Letra que identifica o disco rígido (a=primeiro, b=segundo, etc...). | | | |_Sigla que identifica o tipo do disco rígido (hd=ide, sd=SCSI, xt=XT). | |_Diretório onde são armazenados os dispositivos existentes no sistema.
Abaixo algumas identificações de discos e partições em sistemas Linux:
As letras de identificação de discos rígidos podem ir além de hdb,
em meu micro, por exemplo, a unidade de CD-ROM está localizada em
/dev/hdg
(Primeiro disco - quarta controladora IDE).
É importante entender como os discos e partições são identificados no sistema, pois será necessário usar os parâmetros corretos para monta-los.
Você pode acessar uma partição de disco usando o comando mount
.
mount [dispositivo] [ponto de montagem] [opções]
Onde:
/mnt
para armazenamento de pontos de montagem
temporários.
GNU/Linux
.
Windows 95
que utilizam nomes
extensos de arquivos e diretórios.
DOS
normais.
CD-ROM
. É o padrão.
DOS
com recursos de
partições EXT2
, como permissões de acesso, links, etc.
Para mais detalhes sobre opções usadas com cada sistema de arquivos, veja a página de manual mount.
Existem muitas outras opções que podem ser usadas com o comando
mount
, mas aqui procurei somente mostrar o básico para
"montar" seus discos e partições no GNU/Linux
(para mais
opções, veja a página de manual do mount). Caso você digitar
mount sem parâmetros, serão mostrados os sistemas de arquivos
atualmente montados no sistema. Esta mesma listagem pode ser vista em
/etc/mtab
. A remontagem de partição também é muito útil,
especialmente após reparos nos sistema de arquivos do disco rígido. Veja
alguns exemplos de remontagem abaixo.
É necessário permissões de root para montar partições, a não ser que tenha
especificado a opção user no arquivo /etc/fstab
(veja
fstab, Section 5.9.1).
Exemplo de Montagem:
/dev/hda1
em
/mnt
somente para leitura: mount /dev/hda1 /mnt -r -t
vfat
/dev/fd0
em
/floppy
: mount /dev/fd0 /floppy -t vfat
/dev/hdb1
em /mnt
: mount /dev/hdb1 /mnt -t
msdos.
mount
não conseguirá atualizar o arquivo
/etc/mtab
devido ao sistema de arquivos /
estar
montado como somente leitura atualmente: mount -n -o remount,rw /.
O arquivo /etc/fstab
permite que as partições do sistema sejam
montadas facilmente especificando somente o dispositivo ou o ponto de montagem.
Este arquivo contém parâmetros sobre as partições que são lidos pelo comando
mount
. Cada linha deste arquivo contém a partição que desejamos
montar, o ponto de montagem, o sistema de arquivos usado pela partição e outras
opções. fstab
tem a seguinte forma:
Sistema_de_arquivos Ponto_de_Montagem Tipo Opcoes dump ordem /dev/hda1 / ext2 defaults 0 1 /dev/hda2 /boot ext2 defaults 0 2 /dev/hda3 /dos msdos defaults,noauto,rw 0 0 /dev/hdg /cdrom iso9660 defaults,noauto 0 0
Onde:
GNU/Linux
onde a partição montada será acessada.
GNU/Linux
use ext2, para partições DOS
(sem
nomes extensos de arquivos) use msdos, para partições Win
95
(com suporte a nomes extensos de arquivos) use vfat, para
unidades de CD-ROM use iso9660.
Após configurar o /etc/fstab
, basta digitar o comando mount
/dev/hdg ou mount /cdrom para que a unidade de CD-ROM seja
montada. Você deve ter notado que não é necessário especificar o sistema de
arquivos da partição pois o mount
verificará se ele já existe no
/etc/fstab
e caso existir, usará as opções especificadas neste
arquivo. Para maiores detalhes veja as páginas de manual fstab
e
mount
.
Para desmontar um sistema de arquivos montado com o comando
umount
, use o comando umount
. Você deve ter
permissões de root para desmontar uma partição.
umount [dispositivo/ponto de montagem]
Você pode tanto usar umount /dev/hda1 como umount
/mnt para desmontar um sistema de arquivos /dev/hda1
montado em /mnt
.
Observação: O comando umount
executa o sync
automaticamente no momento da desmontagem para garantir que todos os dados
ainda não gravados serão salvos.
Guia Foca GNU/Linux
Versão 5.20 - Sunday, 03 de November de 2002gleydson@cipsga.org.br