O Linux suporta uma grande quantidade de periféricos, como impressoras, placas de rede, de vídeo, modems, unidades de fita, etc. Este capítulo apresentará como o Linux trata alguns destes dispositivos, focando principalmente os dispositivos de armazenamento, como discos rígidos e CD-ROM.
O Linux é um sistema orientado a arquivos; mesmo os periféricos são tratados como um tipo especial de arquivo. Assim, se um determinado programa precisar ler uma informação da porta serial, por exemplo, basta que ele abra o arquivo /dev/ttyS0 para leitura, que é um arquivo especial que, quando acessado, lê o conteúdo do dispositivo em questão. Podemos dizer que os arquivos de dispositivos são o nome pelo qual um determinado dispositivo é conhecido pelo sistema.
O sistema distingue dois tipos de dispositivos: os dispositivos de bloco e os dispositivos de caractere. No primeiro tipo estão os dispositivos que suportam acesso aleatório, como os discos rígidos, e no segundo tipo os que possuem acesso seqüencial, como uma porta serial. Ao se executar o comando ls -l, os arquivos de dispositivos apresentam na primeira coluna dos atributos de arquivo o caractere "b" indicando um dispositivo de bloco ou um caractere "c", indicando que é um dispositivo de caractere.
O Conectiva Linux cria automaticamente arquivos de dispositivos para o acesso a diversos tipos de dispositivos no diretório /dev, mas em alguns casos especiais pode ser necessário que o administrador precise criar manualmente um arquivo desse tipo. A criação de arquivos de dispositivo pode ser feita com o comando MAKEDEV. Esse comando deve ser utilizado com um certo cuidado. Consulte a documentação dele e do dispositivo que exige a criação de um novo arquivo de dispositivo para saber como proceder.
É no diretório /dev que o Linux cria os arquivos de dispositivos. Neste diretório o sistema cria os arquivos necessários ao acesso a diversos tipos de dispositivos. Alguns dispositivos,no entanto, são acessados de maneira um pouco diferente, como os dispositivos de comunicação, que não possuem um arquivo de dispositivo correspondente neste diretório.
Dentro deste diretório vale destacar os seguintes arquivos:
Onde X é um número. Esse arquivo se refere ao disco master da IDE primária. O número determina qual a partição, assim hda1 representa a primeira partição primária, e hda5 a primeira partição estendida[1].
onde X é um número. Esse arquivo se refere ao disco slave da IDE primária.
Onde X é um número. Refere-se ao disco master da IDE secundária.
Onde X é um número. Refere-se ao disco slave da IDE secundária.
Refere-se ao primeiro disco SCSI encontrado, o segundo é o sdbX, o terceiro sdcX e assim por diante, não importando em que controladora eles estão. X é a partição deste disco.
Onde X é um número de 0 a 7. Arquivos de dispositivos de CD-ROM do tipo SCSI.
Onde X é um número. Arquivos de dispositivos para drives de fita SCSI rebobináveis. Os drives não rebobináveis são acessados através dos arquivos de dispositivos nstX.
Refere-se ao primeiro drive de disquete. É possível também acessar o disquete através dos arquivos fd0xxx onde xxx é a capacidade do disquete, como por exemplo fd0H1440 (alta densidade 1.4Mb).
Arquivo de dispositivo do segundo disquete.
Onde X é um número. Arquivo de dispositivos das portas seriais. O número indica qual é a porta serial, assim, ttyS0 é a "COM1", ttyS1 é a "COM2", etc.
Arquivo de dispositivo da porta PS/2.
Onde X é um número. Arquivo de dispositivo das portas paralelas. Se o computador só possui uma porta paralela ela não será necessariamente a lp0, uma vez que esse número depende do endereço de I/O da porta.
Dentro do diretório usb/ estão os arquivos de dispositivo para periféricos do tipo USB, como por exemplo os arquivos usbmouseX para mouses e usblpX para impressoras (X é um número).
No diretório /dev você poderá encontrar também os arquivos mouse, modem e cdrom, que são links simbólicos para a porta serial apropriada nos dois primeiros casos, e para a posição do CD-ROM na controladora IDE.
O diretório /proc é um diretório criado pelo kernel na memória do computador apenas, e contém informações sobre diversos aspectos do sistema, incluindo detalhes sobre os dispositivos detectados. Alguns dispositivos que são tratados de maneira especial possuem seus arquivos de dispositivo dentro deste diretório, como, por exemplo, placas de rede.
O administrador poderá consultar os arquivos deste diretório para obter mais informações sobre o sistema. Pode-se utilizar o comando cat para listar o conteúdo dos arquivos neste diretório; entre eles vale destacar os seguintes arquivos:
Apresenta informações sobre a CPU, como velocidade, fabricante e tamanho da memória cache interna.
Contém informações sobre quais interrupções (IRQ) estão sendo utilizadas e por qual dispositivo.
Mostra os endereços de E/S que estão sendo utilizados e os dispositivos que estão utilizando esses endereços.
Informações sobre a quantidade de memória total, sua utilização, quantidade de memória de troca (swap), etc.
Esse arquivo contém informações sobre como está particionado cada disco do sistema, informando também o tamanho de cada partição. Para uma descrição mais detalhada sobre cada disco, consulte os arquivos dentro do diretório /proc/ide para discos IDE ou do diretório /proc/scsi para discos SCSI.
Esse arquivo lista os dispositivos de rede. Observe que pode não haver uma correspondência entre os dispositivos listados e dispositivos "físicos" como placas de rede. O dispositivo lo representa a interface de loopback[2] e não uma placa de rede.
Uma outra forma de se obter rapidamente uma lista de periféricos do sistema é utilizando o comando lspci, que consulta as informações do diretório /proc e as apresenta de maneira resumida.
# lspci 00:00.0 Host bridge: Silicon Integrated Systems [SiS] 530 Host 00:00.1 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] 00:01.0 ISA bridge: Silicon Integrated Systems [SiS] 85C503/5513 00:01.1 Class ff00: Silicon Integrated Systems [SiS] ACPI 00:02.0 PCI bridge: Silicon Integrated Systems [SiS] 5591/5592 AGP 00:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 01:00.0 VGA compatible controller: Silicon Integrated Systems |
A listagem apresentada não mostra os discos do sistema, mas lista a interface IDE, além da placa de vídeo e da placa de rede.
O Linux adota um sistema diferenciado de nomenclatura dos dispositivos de armazenamento. Assim, não existe para o sistema o disco "c:" ou disco "d:"; em vez disso utiliza o conceito de arquivos de dispositivos e pontos de montagem. Como já foi visto no Capítulo 4, o Linux organiza todos os seus arquivos e diretórios em uma "árvore" onde a raiz é o diretório /, logo, os novos dispositivos precisam ser encaixados em algum ponto abaixo do diretório raiz. Usualmente, dispositivos adicionais de armazenamento são "montados" no diretório /mnt; o conteúdo de um CD-ROM, por exemplo, poderia ser acessado através do diretório /mnt/cdrom.
Essa abordagem permite uma grande flexibilidade na organização e expansão do sistema, e se, por exemplo, um novo disco precisa ser adicionado, o administrador não enfrentará nenhum problema com discos "trocando de letra", como veremos mais adiante.
Usualmente, para se utilizar um novo dispositivo de armazenamento, quatro passos devem ser tomados:
Inserir no kernel o módulo com suporte ao dispositivo desejado. Isso é necessário apenas para alguns dispositivos como discos ZIP/JAZZ e unidades de fita, pois discos IDE, CD-ROM IDE e disquetes são suportados nativamente pelo kernel. Discos SCSI podem exigir a inserção de módulos correspondentes à placa controladora.
Particionamento quando for necessário.
Criação do sistema de arquivos (formatação), também quando for necessário.
Montar o dispositivo no seu ponto de montagem apropriado. Este passo é sempre necessário para que se possa utilizar determinado dispositivo.
O primeiro passo é específico para cada tipo de dispositivo, mas, para dispositivos IDE e disquetes ele não é necessário; logo falaremos dos casos especiais nas seções relativas a esses dispositivos que requerem esse passo.
Além de organizar melhor e permitir a utilização de mais de um tipo de sistema operacional no mesmo disco, existem razões adicionais para se utilizar mais de uma partição no Linux, sendo a principal delas a segurança. No Linux, é possível montar as partições com opções que melhoram a segurança do sistema, impedindo certas ações em determinadas partições.
Para se particionar um disco no Linux é utilizado o fdisk, que apesar do nome não é o mesmo utilizado em sistemas MS-DOS®, ou ainda o cfdisk que é de mais fácil utilização.
Para particionar um disco abra um terminal e digite:
# cfdisk /dev/dispositivo |
Observe que dispositivo deve ser substituído pelo arquivo de dispositivo apropriado. A utilização do cfdisk é bastante intuitiva. Selecione um espaço livre, e depois Nova, para criar uma nova partição. Informe se deve ser criada uma partição primária ou lógica, lembrando-se de que podem haver no máximo quatro partições primárias, e após isso, informe o tamanho desejado para essa partição.
Depois de criada a partição, selecione-a e utilize a opção Tipo para informar que tipo de sistema de arquivos será utilizado nesta partição. Se a partição em questão for uma partição padrão do Linux, ou seja, no formato ext2, entre com o valor "83".
Para que o cfdisk grave no disco as alterações efetuadas escolha a opção Gravar, caso contrário as modificações não serão feitas, e as partições não serão criadas.
Em alguns sistemas operacionais a formatação e a criação do sistema de arquivos são feitas na mesma operação, o que não acontece no Linux. A formatação, o processo de organização do meio magnético da mídia, não é necessária em todos os dispositivos de armazenamento. Usualmente é necessária em disquetes apenas, uma vez que os discos rígidos já vêm de fábrica formatados, necessitando apenas serem particionados e criados os sistemas de arquivos.
A forma mais simples de se formatar um disquete é abrir um terminal e usar o comando fdformat, como no exemplo a seguir:
# fdformat /dev/fd0H1440 |
Atente para a utilização do arquivo de dispositivo /dev/fd0H1440 em vez de simplesmente /dev/fd0, pois assim informamos automaticamente ao comando fdformat que tipo de disquete e qual a capacidade iremos formatar.
Para tornar o disco, ou disquete, apto para uso, é necessário criar um sistema de arquivos nele. No Linux isso é feito utilizando-se o comando mkfs. O comando pode ser utilizado para criar diferentes tipos de sistemas de arquivos e pode verificar a existência de blocos ruins na mídia. O comando abaixo poderia ser utilizado para criar um sistema de arquivos do tipo EXT2 na primeira partição do disco rígido master da IDE secundária:
# mkfs -t ext2 -c /dev/hdc1 |
O parâmetro -t informa que tipo de sistema de arquivos deve ser criado e o parâmetro -c informa ao mkfs que ele deve verificar se o dispositivo apresenta blocos defeituosos. Para se criar um disquete que pode ser lido pelo Linux e pelo Windows® será necessário criar um sistema de arquivos do tipo msdos, e isto pode ser feito com o comando:
# mkfs -t msdos /dev/fd0 |
O passo final para se utilizar um dispositivo de armazenamento é montá-lo. Esse processo vai inserir o dispositivo na árvore de diretórios já existente, garantindo que o seu conteúdo possa ser acessado através de um diretório, que é o seu ponto de montagem.
Para cada dispositivo a ser montado é necessário um diretório vazio, que servirá de ponto de montagem[3]. Normalmente dispositivos como CD-ROM e disquete são montados nos diretórios /mnt/cdrom e /mnt/floppy, mas isso é apenas uma convenção.
Como um dispositivo pode ser montado em praticamente qualquer ponto da árvore de diretórios, a adição de um novo dispositivo ou a troca de um já existente pode ocorrer sem que grandes mudanças ocorram no sistema. Suponha um sistema onde a área home dos usuários se localize no disco /dev/hda1, mas o número de usuários cresceu e um novo disco com maior capacidade foi comprado. O administrador precisa simplesmente copiar a área home para esse novo disco e depois montá-lo no diretório /home.
Para adicionar um novo dispositivo no sistema basta abrir o Linuxconf, acessar a opção Configuração -> Sistema de arquivos -> Acessar dispositivos locais e clicar no botão Adicionar. Esta configuração foi vista no capítulo sobre arquivos e diretórios; retorne e verifique como fazer esta configuração.
Uma vez configurado, o administrador poderá montar ou desmontar o dispositivo acessando a opção Controle -> Painel de Controle -> Montar / Desmontar sistemas de arquivos -> Controlar dispositivos locais configurados do Linuxconf. Clicando sobre o dispositivo na lista apresentada, o Linuxconf pedirá a confirmação para montar o dispositivo, se ele estiver desmontado, ou desmontar o dispositivo caso ele já esteja montado.
O processo de montagem de um dispositivo pode ser feito também com o comando mount, ou seja, sem utilizar o Linuxconf. Para montar um dispositivo abra um terminal e digite:
# mount /dev/dispositivo /ponto_de_montagem |
Caso o sistema de arquivos do dispositivo não seja do tipo ext2, será necessário utilizar a opção -t, informando o tipo de sistema de arquivos. Utilize iso9660 para CD-ROM e vfat para partições criadas pelo Windows®.
Para desmontar um dispositivo utilize o comando umount seguido ou do ponto de montagem ou do arquivo de dispositivo, como nos exemplos abaixo:
# umount /dev/hdb Desmonta o dispositivo /dev/hdb # umount /mnt/floppy Desmonta o disquete, caso esteja configurado aqui |
O administrador deverá atentar para o fato de que o sistema não deixará um dispositivo ser desmontado caso ele esteja em uso.
Caso se deseje montar um dispositivo automaticamente sempre que o sistema for iniciado, será necessário editar o arquivo /etc/fstab. O Linuxconf edita automaticamente este arquivo, mas você poderá editá-lo manualmente, se assim o desejar. Cada linha deste arquivo contém um único dispositivo ou partição e possui seis campos. O primeiro informa o arquivo de dispositivo, o segundo informa o ponto de montagem e o terceiro o sistema de arquivos. O quarto campo descreve as opções de montagem associadas com o sistema de arquivos. O quinto campo informa ao comando dump se o sistema de arquivo deve ser copiado e finalmente o último campo informa a ordem em que fsck irá verificar os sistemas de arquivos. Utilize o valor 0 para que o sistema de arquivos não seja verificado (como CD-ROM), 1 para o sistema de arquivos raiz e 2 para os demais.
[1] |
CD-ROMs não possuem partições, e assim, um CD-ROM é referenciado simplesmente como hdX, onde X é a letra correspondente à sua posição na IDE. |
[2] |
Uma interface virtual ligada ao IP 127.0.0.1, ou seja, a própria máquina. |
[3] |
Se o diretório não estiver vazio o seu conteúdo original ficará inacessível ao ser montado o novo dispositivo. |