quinta-feira, 7 de janeiro de 2010

Dispositivos no Linux

Autor: Hugo Cisneiros (Eitch)

Fonte:http://www.devin.com.br/dispositivos/

Os dispositivos são uma coisa que temos que conhecer no Linux, senão agente se perde aos poucos nas configurações mais básicas. Por isso fiz esse tutorial tentando explicar algo sobre eles…

O que são dispositivos?

Um dispositivo é todo o componente de hardware, e do sistema operacional. Um dispositivo é “algo especial” que é compartilhado com o Kernel, ou seja, um exemplo de dispositivo são as impressoras, CD-ROMs, modems, portas, mouse, HDs, etc. No Linux, os dispositivos físicos são tratados como arquivos. Estes arquivos são um tipo especial no sistema de arquivos e se encontram no diretório /dev. Se você der um ls neste diretório, verá que existe um pouquínho de arquivos (Bota pouquinho nisso :)). Cada arquivo neste diretório corresponderá a um dispositivo de acordo com o seu tipo.

Se você usava DOS/Windows antes, você acessava o drive C:, lembra? No Linux não existe isso! Vai ser um dispositivo no lugar… Você vai usar isso o tempo todo, porque você vai mexer com mouse, com impressora, IDE’s, SCSI’s, etc. Então aqui vai alguns arquivos do /dev e seus respectivos dispositivos:

/dev/hdXX

Aqui é correspondete as Interfaces IDEs, ou seja, tudo que tiver conectado nos cabos IDEs :) Exemplos, podemos citar HD’s e CD-ROM’s. O xx significa qual IDE, onde o primeiro x corresponde a qual IDE, e o segundo x (opcional) corresponde a partição. Veja a tabela à seguir:

Dispositivo Descrição
/dev/hda IDE Primária Master
/dev/hda1 Partição 1 da IDE Primária Master
/dev/hda2 Partição 2 da IDE Primária Master
/dev/hdb IDE Primária Slave
/dev/hdb1 Partição 1 da IDE Primária Slave
/dev/hdb2 Partição 2 da IDE Primária Slave
/dev/hdc IDE Secundária Master
/dev/hdc1 Partição 1 da IDE Secundária Master
/dev/hdc2 Partição 2 da IDE Secundária Master
/dev/hdd IDE Secundária Slave
/dev/hdd1 Partição 1 da IDE Secundária Slave
/dev/hdd2 Partição 2 da IDE Secundária Slave

Perceba aqui que cada hdx vai até os números 2, mas não é apenas até o 2, pode ir mais longe. Dependendo de quantas partições tiver o seu HD, pode ser 3, ou 4, ou 9 por exemplo.

/dev/fdX

Aqui é o dispositivo equivalente ao drive de disquete, onde o x corresponde a qual driver. Caso você tenha apenas um drive, esse drive vai ser o /dev/fd0. Se tiver 2 drives, o primeiro será /dev/fd0 e o segundo /dev/fd1, e por aí vai.

/dev/ttyX

Quando você se loga no seu Linux, você acaba de se logar nesse terminal. Ou seja, um terminal serve para voc6e se logar e usar uma shell (interpretador de comandos). O /dev/ttyX corresponde a cada terminal, onde X vai ser substituído pelo número do terminal (são dezenas se quiser). Pode ser /dev/tty1 (Terminal 1), /dev/tty3 (Terminal 3), /dev/tty8 (Terminal 8) e por aí vai… até você enjoar :)

Você também pode se deparar com /dev/ttypX. Neste caso é para terminais acessados por telnet/ssh.

/dev/ttySX

Portas seriais! Na versão 2.2.x do kerne, estas portas seriais correspondem ao modem, ao mouse, e outras coisas ligadas nas ‘COMs’. Veja a tabela:

Dispositivo Descrição
/dev/ttyS0 COM1 (Porta serial 1)
/dev/ttyS1 COM2 (Porta serial 2)
/dev/ttyS2 COM3 (Porta serial 3)
/dev/ttyS3 COM4 (Porta serial 4)

Agora se você usa um kernel velho de versão anterior a 2.2.x, ao invés de ser /dev/ttySX, vai ser /dev/cuaX. Ou seja, você terá os equivalentes como /dev/cua0, /dev/cua1, /dev/cua2 e /dev/cua3. E estes dispositivos /dev/cuaX são usados para determinar os modems.

/dev/lpX

Corresponde a porta da impressora ou porta de um serviço paralelo. X é o número correspondente a porta… 0 = LPT1 por exemplo.

/dev/plipX

Esse dispositivo corresponde a uma conexão de cabo paralelo. O X será o número correspondente a porta, como no exemplo anterior.

/dev/console

Este é um dispositivo especial, simbolizando os consoles (terminais não-gráficos).

/dev/null

Este é um dispositivo nulo, ou seja, tudo que você mandar ou se referir a ele, será nulamente mandado para o inferno :)

Outros

Os dispositivos são muitos e listar todos eles aqui não seria tão legal assim. Você pode explorar o diretório /dev procurando saber sobre eles. Se você por acaso apagou um dispositivo e quer saber como criá-lo, utilize o script /dev/MAKEDEV. Basicamente você usa este script assim:

# /dev/MAKEDEV ttyS3

Isto irá criar o dispositivo ttyS3. Para mais informações sobre a criação de dispositivos, utilize a manpage do MAKEDEV ou do mknod. Na verdade o /dev/MAKEDEV é apenas um script para intermediar o usuário e o comando mknod… O mknod é o que faz o trabalho mais árduo :)


Montando os dispositivos


Primeiro eu espero que você tenha lido sobre o que é um dispositivo. Agora vamos saber como se usar um dispositivo, ou seja, um HD, um disquete, um CD-ROM, etc. O comando que usaremos aqui é o mount, que pelo próprio nome, podemos ver que ele serve para ‘montar’ dispositivos em um certo lugar.


Vamos falar primeiro sobre como montar o disco flexível. Para fazê-lo é o seguinte. O Linux trata todos os seus dispositivos como arquivos device, estes arquivos estão localizados no diretório “/dev”. Para o caso do disco flexível, o Linux trata como /dev/fdx, onde x é o número do dispostivo: o primeiro será fd0, o segundo será fd1, e assim por diante. Aqui no caso, estamos com um driver de disquete, que é o /dev/fd0. Para montar o disco flexível então, colocamos o disquete, e executamos o seguinte comando:

# mount /dev/fd0 /diretorio_onde_o_disco_vai_ser_montado

O diretório_onde_o_disco_vai_ser_montado tem que existir, e tem que estar totalmente vazio. Este diretório, que você pode nomear como quiser funciona como se você estivesse no disquete. Agora se você quer montar outro disquete, você terá que desmontar o disquete montado primeiro, para depois poder montar outro. Para o desmonte, usa-se o comando “umount”:

# umount /dev/fd0 (ou)
# umount /diretorio_onde_o_disco_esta_montado

Você pode também fazer o seguinte, criar um shell script, que se chama, por exemplo de ‘diskon’ (Para ativar) e ‘diskoff’ (Para desativar). Então para melhor utilização, coloque este arquivo em um diretório PATH, ou então coloque o PATH no diretório onde você quiser colocar os scripts.


Agora vamos montar uma partição. É o mesmo esquema de montar o disco flexível, só que o arquivo do dispositivo é diferente. Para partições em um HD IDE, os nomes dos dispositivos são /dev/hdxx, onde o primeiro x é a letra correspondente ao HD (na ordem a, b, c, d, e por aí vai), e o segundo x é correspondente ao número da partição. Para partições em um HD SCSI, os nomes dos dispositivos são /dev/sdxx, onde o primeiro x é a letra correspondente ao HD (na ordem a, b, c, d, e por aí vai), e o segundo x é correspondente ao número da partição. Se eu quero montar a partição /dev/hda2 (HD número 1, partição número 2), eu faço:

# mount /dev/hda2 /diretorio

E para desmontar, usa-se o comando umount:

# umount /dev/hda2 (ou)
# umount /diretorio

Existe também no comando mount, o parâmetro -t, que vai indicar que tipo de sistema de arquivos a partição usa (FAT32, FAT16, minix, ext2, UMSDOS, etc). Se você não colocar esta opção, o comando força uma compatibilidade para a montagem. O recomendado é colocar esta opção, pois às vezes o mount não consegue detectar qual o sistema de arquivos, e gera um erro. Um exemplo do uso da opção -t é:

# mount -t vfat /dev/hda2 /diretorio

Este comando montará uma partição FAT32 em /diretorio. Como eu disse anteriormente, utilizar-se de shell scripts facilita seu trabalho. Agora vamos montar um CD-ROM. O mesmo esquema, só que você deve saber qual o dispositivo referente ao seu CD-ROM, que tem como nome /dev/hdx, onde x é a letra correspondente à posição do CD-ROM na IDE. Para montar um exemplo, façamos:

# mount /dev/cdrom /mnt/cdrom

Para desmontar, a mesma coisa de sempre:

# umount /dev/cdrom (ou)
# umount /mnt/cdrom

Nota: Se você der uma olhada no arquivo /dev/cdrom, você verá que ele não é um dispositivo, e sim um link simbólico para o dispositivo correspondente ao CD-ROM (/dev/hdx). Isso quer dizer que você pode substituir o /dev/cdrom pelo /dev/hdx tranqüilamente, assim como pode também modificar o link simbólico para apontar para outro dispositivo.


Existe outro método de montagem muito mais prático do que os citados acima… É uma pré-configuração de montagem no arquivo /etc/fstab. Este arquivo contém as informações de montagem para os dispositivos e seus diretórios. Por exemplo, quando a sua distribuição inicia, ela procura no /etc/fstab para saber onde está a raiz do seu sistema, e vai montar no /. Também contém informações de montagem para os diretórios especiais como o /proc, e até mesmo para o uso da memória SWAP. Vejamos aqui o meu arquivo /etc/fstab como exemplo para estudarmos ele:

$ cat /etc/fstab
/dev/hda2 swap swap defaults 0 0
/dev/hda5 / reiserfs defaults 0 0
/dev/hda1 /boot ext2 defaults 1 1
/dev/fd0 /mnt/floppy auto user,noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 user,noauto,ro 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0

Viu este exemplo? Por exemplo, peguemos a segunda linha. Esta segunda linha é a minha raiz, que está na partição /dev/hda5, será montada automaticamente (‘defaults’) no diretório “/” durante a inicialização. E esta partição tem o sistema de arquivos ReiserFS. Na primeira temos a montagem da memória SWAP… E vejamos a linha que começa com /dev/cdrom. Aqui facilita as coisas porque os parâmetros ‘user,noauto,ro’ significam que qualquer usuário pode montar o CD-ROM (user), não é montado automaticamente na inicialização (noauto) e é montado como somente leitura. Qual a diferença? O comando mount só pode ser usado pelo root, mas com essa opção no /etc/fstab, um usuário comum pode montar o cd-rom apenas com o comando “mount /mnt/cdrom”, ou “mount /dev/cdrom”. A sintaxe deste arquivo não é muito difícil, e vendo este exemplo aqui, você pode muito bem criar suas próprias configurações para dar mais praticidade no seu uso com os dispositivos no Linux! Mexa à vontade, mas nunca nas linhas que já vêm, pois se não o Linux pode não achar sua partição e poderá não conseguir iniciar o sistema, e você terá de bootar com um bootdisk para consertar isto… Então mexa, mas pense duas vezes antes de mexer :)

0 comentários :

Enviar um comentário