O
Linux se refere aos itens de hardware como dispositivos (devices), e os referencia como arquivos. Os arquivos de dispositivo ficam no diretório /dev/. Dentro desse diretório existem vários arquivos, um para cada dispositivo, além de subdiretórios que agrupam dispositivos de mesmo tipo.
Veja abaixo alguns exemplos de arquivos de dispositivo:
- /dev/fd0: Primeira unidade de disquete;
- /dev/hda1: Primeira partição do primeiro disco rígido IDE;
- /dev/psaux: Mouse PS/2;
- /dev/dsp: Placa de som;
- /dev/sdb3: Terceira partição do segundo disco SCSI;
- /dev/ttyS0: Primeira porta serial de comunicações, geralmente aquela utilizada pelo mouse serial (COM1);
- /dev/usb/lp0: Primeira impressora ligada USB;
- /dev/video0: Primeira placa de captura de vídeo;
- /dev/lp0: Primeira porta paralela, geralmente usada por impressoras;
- /dev/tty1: Primeiro terminal virtual (console);
- /dev/tty0: Interface de framebuffer;
- /dev/null: Dispositivo nulo, usado para descartar saídas de programas;
- /dev/zero: Dispositivo de geração de bits 0;
- /dev/random: Dispositivo de geração de bits aleatórios.
Tratar os dispositivos como arquivos facilita o processo de enviar e retirar informações do hardware, pois basta usar direcionadores de fluxo de forma apropriada.
Por exemplo, o seguinte comando envia para a impressora ligada na porta paralela o conteúdo do arquivo texto.txt, para impressão direta, sem spool:
$ cat texto.txt > /dev/lp0
Criando novos dispositivos
As distribuições
GNU/Linux atuais possuem sistemas que criam automaticamente os arquivos de dispositivos para os novos itens de hardware que são instalados.
Entretanto, como já dito, isso só é válido para o hardware que possui suporte nativo no kernel Linux. Os demais vão requerer uma instalação manual, incluindo, eventualmente, a criação do arquivo de dispositivo correspondente no diretório /dev/.
Para isso, vamos utilizar duas ferramentas: o MAKEDEV e o mknod.
MAKEDEV
O MAKEDEV fica localizado em /sbin/, possuindo um link simbólico dentro do diretório /dev/. Ele é utilizado para criar, remover e atualizar novos arquivos de dispositivo no diretório /dev/.
Para usá-lo, basta acessar o diretório /dev/ e executá-lo com os devidos parâmetros.
# cd /dev
# ./MAKEDEV [opções] [parâmetros]
As opções do MAKEDEV são:
- -n: Não atualiza os arquivos de dispositivo, apenas exibe as ações que seriam feitas;
- -d: Apaga os dispositivos existentes;
- -v: Exibe mensagens informando o que está sendo feito durante a execução do MAKEDEV.
Os principais parâmetros são:
- update: Atualiza os dispositivos, criando arquivos para os novos e apagando os que não existem mais;
- generic: Cria uma lista genérica de dispositivos, o básico para o uso do sistema;
- ram: Cria os dispositivos de ramdisk;
- initrd: Cria a ramdisk que será carregada pelo sistema operacional durante a inicialização;
- cpu ou microcode: Cria os dispositivos da interface de atualização do microcódigo do processador no diretório /dev/cpu/;
- rom: Cria os dispositivos de memória ROM (somente leitura);
- console: Cria novos consoles virtuais (terminais);
- std: Cria os dispositivos do tipo mem, kmem, port, zero, null, core, full, random, urandom, tty e loop.
Existem outras categorias de dispositivos que podem ser criados com o MAKEDEV. Para ver a lista completa, veja a sua página de manual:
$ man MAKEDEV
mknod
O mknod é usado para criar manualmente um arquivo de dispositivo dos tipos caracter ou bloco. Os dispositivos de bloco são os que trabalham com armazenamento de dados, como unidades de disco rígido, CD-R/RW, disquete, etc., e utilizam buffer. Os dispositivos de caracter não trabalham com buffer, utilizando transferência direta.
Um exemplo real de uma situação em que é necessária utilizar o mknod é na instalação de softmodems, aqueles modems on-board do tipo AMR (HSP56 e similares).
Para criar um novo dispositivo, acesse o diretório /dev/, e utilize o mknod seguido dos parâmetros adequados.
# cd /dev
# mknod [opções] [nome] [tipo] [maior] [menor]
As principais opções são:
- -m: Determina as permissões do arquivo gerado;
- --help: Exibe os principais parâmetros do mknod;
- --version: Exibe a versão do mknod.
Em [nome], coloque o nome do arquivo de saída. Pode ser qualquer nome formado de apenas uma palavra, sem espaços ou caracteres especiais, e de preferência todo em minúsculas.
Os tipos que podem ser usados são:
- b: Cria um dispositivo de bloco;
- c ou u: Cria um dispositivo de caracter;
- p: Cria um FIFO, que possibilita monitorar o tráfego de informações através de um determinado dispositivo.
Depois, temos que colocar o número maior e o menor do dispositivo. Para isso, veja o arquivo /proc/devices, procure o dispositivo que você criar, e anote o número que aparece na primeira coluna.
Vejamos um exemplo:
# cat /proc/devices
Character devices:
1 mem
2 pty
3 ttyp
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
6 lp
7 vcs
10 misc
13 input
14 sound
29 fb
116 alsa
128 ptm
136 pts
180 usb
254 devfs
Block devices:
1 ramdisk
2 fd
3 ide0
22 ide1
A título de exemplo, vamos criar um dispositivo USB chamado usb0 e outro chamado usb1. Analisando o arquivo /proc/devices, vemos que o número maior dos dispositivos usb é 180. O número menor fica sendo o número do dispositivo que se está criando.
Dessa forma, para criar os dispositivos usb0 e usb1, usamos:
# mknod -m 666 usb0 c 180 0
# mknod -m 666 usb1 c 180 1
Quando esse procedimento for necessário, preste bastante atenção às informações que você terá em mãos, e certamente terá sucesso na criação de um novo dispositivo.